gpt4 book ai didi

memory - 如何在内存有限的嵌入式系统上使用AT读取短信?

转载 作者:行者123 更新时间:2023-12-02 06:56:14 28 4
gpt4 key购买 nike

我正在开发一个嵌入式软件,它也通过 AT 协议(protocol)与调制解调器通信。现在我想阅读消息,但我遇到了内存容量的问题。可能有多个消息给我,并且使用 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 和嵌入式软件还没有那么丰富的经验,所以也许我忽略了一些东西。

最佳答案

发送AT+CMGL="ALL"并保存第一条消息直到返回。忽略所有其他数据,直到收到 OK ,表明调制解调器已完成。处理第一条消息后,通过发送 AT+CMGD=<NUM> 将其删除(其中是第一条消息的编号)。重复。

是的,它有点丑陋,但效果很好。

关于memory - 如何在内存有限的嵌入式系统上使用AT读取短信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10001622/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com