在前面,我们对串口编程已经实现了AT指令和中英文短信的发送。现在再来了解一下最后的两个功能:短信的获取和删除。在使用代码实现之前,先了解使用到的AT指令。
我们前面已了解到,Text只能发送英文,PDU可以发中英文,那读呢?其实也一样,Text只能正常的读英文,而解析不了中文,强行使用会出现乱码,PDU模式的话都可以,但是需要我们手动解码。
该命令用于指定短消息采用的格式。消息格式可设置为 PDU 模式或者文本模式(消息报头和正文分别以不同的参数形式展示)。
索引
使用效果
该命令用于获取存储器中对应消息状态的短消息。若短消息状态为"REC UNREAD",则存储器中短消息的状态将变更为"REC READ"。若执行 AT+CMGL 但不设置,模块将返回状态为"REC UNREAD"的短消息列表。
使用效果
先设置为PDU模式,再使用AT+CMGL=(0-4) 命令来查看消息,可以看到每条信息都是未解码的PDU编码包,以+CMGL:开头,还有对应的从0开始的序号。
其中PDU包的构成=中心号码长度+中心号码+TPDU头字节+源号码长度+源号码+协议标识+数据编码方案+日期时间+数据长度+数据
下面是Text模式下查看短信的情况,可以看到英文短信可以正常显示,但是中文就不行了。所以后面解码的时候我们都是用短信的PDU格式来解码短信。
AT+CMGD 删除短消息
该命令用于删除短消息首选存储器中位于的短消息。
AT+CMGR 按照索引读取短消息,该命令用于从存储器中读取指定的短消息。若该短消息处于”REC UNREAD”,则其在存储器中的状态将会变为"REC READ"。
PDU模式使用索引读信息:
文本模式使用索引读信息: