我正在开发一个嵌入式软件,它也通过 AT 协议与调制解调器通信。现在我想阅读消息,但我的记忆容量出现了问题。可能是我有多个消息,并且使用 AT 命令集,我一次将它们全部返回。我没有足够的内存容量来存储它们来处理它们(我只有 1KB 左右)。
请参阅此处的示例: http ://www.smssolutions.net/tutorials/gsm/receivesmsat/
我发AT+CMGL="ALL"
。然后我得到类似的东西:
+CMGL: 1,"REC UNREAD","+31625012354",,"07/07/05,09:55:16+08"
Test message 1
+CMGL: 2,"REC UNREAD","+31625012354",,"07/07/05,09:56:03+08"
Test message 2
OK
这里的问题是消息可以包含某些指令,这些指令会触发某些操作,这些操作可能需要一段时间才能执行。在此期间,用于从调制解调器接收数据的缓冲区可能(将)溢出。另一方面,我没有内存容量来首先将所有消息读入内存以防止缓冲区溢出,然后从内存中处理它们。
另一种方法是阅读一条消息,使用AT+CMGR=2
,只返回一条消息:
+CMGL: 2,"REC UNREAD","+31625012354",,"07/07/05,09:56:03+08"
Test message 2
OK
但是,要使其正常工作,我需要知道存储位置(上例中的 2)。
我的直觉告诉我首先运行AT+CMGL
,解析数据并只保留存储位置,然后使用AT+CMGR
.
但是,我想收到第二个意见。我对 AT 和嵌入式软件还没有那么丰富的经验,所以也许我忽略了一些东西。