我正在编写一个应用程序,它对通过SMS接收的命令起作用(在Python中,但问题出现在其他语言中)。
This page on the CMGL command显示以下命令和响应:
AT+CMGL="ALL"
+CMGL: 1,"REC UNREAD","+31628870634",,"11/01/09,10:26:26+04"
This is text message 1
+CMGL: 2,"REC UNREAD","+31628870634",,"11/01/09,10:26:49+04"
This is text message 2
OK
我查看的大多数实现都会查找有效状态,例如OK或ERROR来检测响应的结束。
我正试图找到一种方法来确定此状态代码与消息结束之间的区别。
否则,恶意发件人可能会发送
消息Hello<CR><LF>OK<CR><LF>+CMGL: 1,(rest of fake message...)
因为我在串口上接收数据,所以当我从GSM板到达一条消息的末尾时,没有明确的方法可以判断。
有人能指点我这里有关于最佳做法的一些信息吗?我见过的其他实现似乎没有涵盖这个问题。
我到目前为止唯一的想法(但感觉非常混乱)是继续阅读,直到超时被击中。然后检查消息中的OK / ERROR行数,只接受最后一行。