【问题标题】:How to receive incoming SMS notification in linux?如何在linux中接收传入的短信通知?
【发布时间】:2014-04-01 06:00:22
【问题描述】:

我在 Windows 机器上编写了一个 D-Link GSM 调制解调器来发送和接收 SMS,我使用 Hyperterminal 进行测试。

在 Windows 中,连接管理器启动 COMx 端口,调制解调器使用一个未列出的 COMx 端口,我可以通过该端口发送 SMS,并通过列出的 NMEA 端口接收传入的 SMS,如 +CMTI:“ME”、11 或 RING 之类的呼叫+剪辑:XXXXXXXXXXXX

我成功地解释了该消息并根据我在 Windows 中的要求对其进行了编程。在 linux(Fedora) 中尝试相同的操作时,我看到调制解调器将 /dev/ttyUSB0 和 /dev/ttyUSB1 初始化为两个新识别的设备。我使用 minicom 来设置设备端口并将 AT 命令传送到相同的端口。

在这两个设备(/dev/ttyUSB0 和 /dev/ttyUSB1)中,每当我期待新的 SMS 时,我都没有收到像 +CMTI 指示这样的未经请求的 AT 结果代码。仅供参考,我已经根据手册和其他几种组合设置了 CNMI 设置。

奇怪的是,当我打电话时我能看到 RING 而不是 +CLIP:callerinfo>。同样,我没有得到 ++PSBEARER: XX, Y 或 +CMTI: "ME", XX

唯一的替代解决方案是定期轮询 UNREAD 消息,这通常是一个糟糕的设计。请告诉我,如果我在配置方面做错了什么,除了这些,我是否应该更改其他一些东西?

【问题讨论】:

    标签: linux serial-port 3g modem at-command


    【解决方案1】:

    RING 是唯一一个你可以假设总是没有任何特定配置的 UR 代码(只是因为这是一个如此古老的遗物,它只是以这种方式运行......)。对于所有其他 UR 代码,您必须显式启用它们中的每一个,例如AT+CLIP=1等,否则将无法启用。并启用这些是每个串行接口,例如在 /dev/ttyUSB0 上运行 AT+CLIP=1 不会使 +CPLIP: ... 打印在 /dev/ttyUSB1 上。

    因此,当您在 Windows 连接管理器上获取它们时,一定是因为它包含在它的初始化字符串中。我认为 Minicom 默认没有初始化字符串,或者可能只是一个非常经典的字符串,例如 ATS0=0 E1Q0V1

    【讨论】:

    • 谢谢! AT+CLIP=1 用于获取 RING 的 UR 代码。而且我认为 CNMI 设置在获取新 SMS 的 UR 代码方面会有所不同?
    • 是的。您可以在27.005 中查找AT+CNMI 的定义。大多数手机相关的AT指令都定义在27.007中,而V.250是基本的AT指令标准。
    猜你喜欢
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多