私は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
で1つ1つずつ要求して解析(および削除)するように指示します。
しかし、私は第二意見を受け取りたいと思います。私はATで経験したことはありませんし、まだ組み込みソフトウェアでは、おそらく私は何かを見落としている。