我正在開發一款嵌入式軟件,它也通過AT協議與調制解調器進行通信。現在我想閱讀郵件,但是我遇到了我的記憶容量問題。這可能是因爲我有多條消息,並且使用AT命令集,我會立即將它們全部返回。我沒有內存容量來存儲它們全部來處理它們(我只有1KB左右)。如何在有限內存的嵌入式系統上使用AT讀取SMS?
在這裏看到的例子: http://www.smssolutions.net/tutorials/gsm/receivesmsat/
我送AT+CMGL="ALL"
。然後我回來是這樣的:
+CMGL: 1,"REC UNREAD","+31625",,"07/07/05,09:55:16+08"
Test message 1
+CMGL: 2,"REC UNREAD","+31625",,"07/07/05,09:56:03+08"
Test message 2
OK
這裏的問題是,該消息可以包含某些指令,其觸發某些動作,這可能需要一段時間來執行。在此期間,從調制解調器接收數據的緩衝區可能(將)溢出。另一方面,我沒有內存容量來首先將所有消息讀入內存以防止緩衝區溢出,然後從內存中處理它們。
一個替代方案是在讀取一個消息,以AT+CMGR=2
,取回只是一個消息:
+CMGL: 2,"REC UNREAD","+31625",,"07/07/05,09:56:03+08"
Test message 2
OK
然而,對於這個工作,我需要知道(在上面的實施例2)的存儲位置。
我的直覺告訴我第一次運行AT+CMGL
,解析數據並只保留存儲位置,然後請求和解析(並刪除)他們與AT+CMGR
一個接一個。
但是,我想收到第二個意見。我對AT和嵌入式軟件還沒有那麼豐富的經驗,所以我可能忽略了一些東西。