短信设备AT+CMGL指令接收短信明明有短信但串口调试就是错误
本文章主要给新手不常看AT指令详细说明书进行快速参考,或者有些老手一时大意忘记了,AT+CMGL读取指令的前提设置导致无法读取短信的问题。我偶尔给客户检测设备售后也会因为忘记了前置设置而无法读取短信,明明看到收到短信但无法读取的问题 AT+CMGL指令是需要跟着前置的AT+CMGF指令进行读取对应的短信的一、首先AT+CMGL指令,=等号后面输入的参数不一样就读出的短信内容是不一样AT+CMGL=4 表示读取所有的短信AT+CMGL=0 表示读取所有未读短信AT+CMGL=1 表示读取所有已读短信AT+CMGL="ALL" 注意要ALL要大写,表示与等于4同理读取所有短信AT+CMGL="REC UNREAD" 注意要REC UNREAD要大写,表示与等于0同理读取未读短信AT+CMGL="REC READ" 注意要RECREAD要大写,表示与等于1同理读取已读短信二、AT+CMGF指令,设置短信设备以什么模式收发和读取短信消息AT+CMGF=0 表示以PDU模式,短信以PDU编码模式发送接收和显示,编码有:7-bit、8-bit和UCS2编码3种AT+CMGF=1 表示以TEXT文本模式,短信以Unicode码显示
三、AT+CMGF与AT+CMGL结合使用1、首先AT+CMGF=0,读取所有短信只能用AT+CMGL=4读取所有短信,如果CMGL=后面是跟"ALL"那就读取错误的返回ERROR。 读出来的短信内容是包含手机号码等一些协议上的设置的编码内容2、AT+CMGF=1,读取所有短信只能用AT+CMGL="ALL"读取所有短信,等号后跟数字就返回ERROR错误 读出来的短信内容是Unicode码仅短信的内容
额外提醒,at+cmgf于at+cmgd(删除短信)指令的参数也是有关联的。本文就不说了,自己有设备的朋友自己尝试。