如何禁用 GSM 调制解调器未经请求的 SMS 到达消息?

How to disable GSM Modem unsolicited SMS arrival message?

我想处理来自我的 GSM 调制解调器(SIM900,但其他的也很少)的短信,但没有 +CMTI 通知。

代码会 运行 查看并执行各种命令,其中之一是检查消息是否到达,然后据此采取行动。

目前,如果调制解调器收到短信,它会输出 +CMTI 消息,该消息会到达缓冲区中的某处。

禁用那个是更好的方法还是我应该解析结构?

接收和处理 SMS 消息的两种方式各有利弊。

1) 存储在 SIM 卡上

此选项有几个缺点。您必须从 SIM 卡中提取 SMS 消息,这一方面会花费时间。另一方面,它会降低 SIM 卡本身的性能。根据您收到的短信数量,这可能会导致 SIM 卡停止工作,也就是无法再进行读写。

2) 处理未经请求的

这里的缺点是您必须永久连接到调制解调器并在消息到来时收集它们。因此,如果存在 USB 连接问题,您可能会丢失消息。有一些方法可以解决这个问题,例如通过配置调制解调器,以便您手动确认收到的 SMS 消息 (AT+NACK)。这意味着移动运营商网络将在稍后的某个时间点重新发送消息。

当您拥有来自不同制造商的调制解调器时,对于未经请求的消息,配置有时会有些棘手。如果您选择这条路线,请注意那里。通过 AT+CNMI(参数因 manufacturer/model 而异),您可以配置调制解调器如何处理未经请求的消息。这还涉及调制解调器在没有 "host" 连接到调制解调器时如何处理消息等...我真的建议您找到调制解调器的 AT 命令手册,看看那里有什么可能。

总而言之,我个人推荐主动提供的方法,因为它处理消息比访问 SIM 卡来抓取和删除收到的消息要舒服得多。

请运行

AT+CNMI=0,0,0,0,0

此命令使所有 SMS URC 通知静音。