GSM调制解调器无法接收短信

时间:2015-12-11 09:38:05

标签: vb.net at-command

我做了一个简单的应用程序,能够与GSM Modem集成以发送和接收SMS。我已完成发送短信部分,但我无法收到短信。当我尝试将短信与其他移动设备发送到GSM调制解调器中的SIM卡时,我收到错误消息说我的SIM卡内存已满。我试图使用AT命令“AT + CMGL”删除所有消息,但仍然相同。我可以知道有任何方法将消息存储在我的计算机内存中,以便我能够通过我的GSM调制解调器接收短信。我在这里使用示例代码 http://www.codeproject.com/Articles/38705/Send-and-Read-SMS-through-a-GSM-Modem-using-AT-Com

1 个答案:

答案 0 :(得分:0)

AT+CMGL命令用于列出消息,而不是删除消息。使用AT+CMGD命令删除消息。帮自己一个忙,并下载3GPP 27.005标准的副本,它定义了所有标准短信AT命令(大多数其他手机AT命令在27.007中定义),并且无论如何都得到一份副本ITU标准V.250定义了AT命令的基本命令语法,结构和行为 - 对于发出AT命令的任何人来说绝对必须阅读(至少阅读第5章的全部内容)。这些文档比任何随机互联网网站都更有价值,包括stackoverflow。

说到随机网站,您作为来源链接的网页似乎具有可疑价值。它提供了一个示例函数DeleteMsg,它发出AT+CMGF=1但该命令不会删除任何内容,它会为各种短信相关命令选择文本或PDU模式。

它的响应处理确实比可怕的发送 - 睡眠 - 读取错误更好,遗憾的是它不应该像它应该的那样不常见,但它只有一半的体面而且根本不健壮。 在向调制解调器发送AT命令后,您应该连续读取并解析来自调制解调器的响应行(一遍又一遍),直到您收到最终结果代码(而不仅仅是一次)。有关详细信息,请参阅this answer

所有消息命令都在AT+CPMS设置的存储位置上运行。请注意,您应始终同时设置<mem1><mem2>,例如

AT+CPMS="SM","SM"

只更改mem1 / mem2中的一个并没有任何意义,有些手机不喜欢只尝试设置其中一个。