【问题标题】:GSM Modem not able to receive SMSGSM 调制解调器无法接收短信
【发布时间】:2023-04-06 15:13:01
【问题描述】:

我做了一个简单的应用程序,它能够与 GSM 调制解调器集成以发送和接收 SMS。我已完成发送短信部分,但我无法接收短信。尝试使用其他移动设备将 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

【问题讨论】:

  • 请在问题中直接在此处包含代码的相关部分(即使它与在其他网站上找到的完全相同 - 谁知道该内容将存在多长时间。即使它与stackoverflow一样长,单击链接以获取问题中的相关信息是不应该存在的障碍)。

标签: vb.net at-command


【解决方案1】:

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

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

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


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

AT+CPMS="SM","SM"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多