【问题标题】:how to receive SMS via python-gsmmodem如何通过 python-gsmmodem 接收短信
【发布时间】:2015-04-26 16:23:14
【问题描述】:

我是 python 的新手。我在 Ubuntu 14.04 中安装了python-gsmmodem 以通过 GSM 加密狗发送和接收短信。然后在我的/usr/local/bin 文件夹中有 3 个名为

的脚本
  1. gsmterm.py
  2. identify-modem.py
  3. sendsms.py

我成功地使用这些脚本发送 SMS,identify-modem 正如它们的名字所暗示的那样。

问题是我想通过加密狗接收短信,但不知道该怎么做。当我将整个包下载为 zip 文件时有一些脚本显示确实发送短信。

除了 python-gsmmodem 的文档说它具有处理 GSM 调制解调器中大部分功能的功能,包括发送 SMS。

需要帮助我使用同一个调制解调器接收短信。如何解决这个问题?

【问题讨论】:

  • 您是否查看过您提供的 GitHub 链接中的examples/sms_handler_demo.py?好像实现了接收短信。
  • 是的..它的作品,似乎正在等待,直到收到消息。但它不显示收到的消息。所以我根据我的调制解调器对其进行了一些更改,例如端口和波特率。仍然有同样的问题。然后我发现它将消息存储模式设置为加密狗存储( AT+CPMS="ME" )但接收消息存储在 SIM 卡中。所以我正在寻找一种将存储模式更改为 SIM 卡的方法(AT+CPMS="SM" )。@Pit
  • 您是否尝试过自己设置存储模式(即modem.write("AT+CPMS=SM"))?
  • 是的.. 我试图这样做,但没有成功。
  • 您使用的是哪种 GSM 调制解调器?

标签: python linux sms gsm


【解决方案1】:

您可以在 python-gsmmodem 存储库中的 tools/examples/ 中找到一些示例。有一个脚本examples/sms_handler_demo.py 监听传入的 SMS 消息并通过说谢谢来回复 SMS。

我已经尝试过该脚本,它正在无限等待 SMS – SMS 消息在后台由调制解调器接收并放入选定的存储中,但该脚本没有捕获来自调制解调器的任何短信通知,并且回复回调是t 执行。看来我的华为调制解调器需要为 AT+CNMI 命令设置不同的设置,或者需要一组专有命令。

编辑:我发现了问题。我有一个华为 E372 调制解调器,它可以创建 3 个串行端口

  • /dev/ttyUSB0 - 完整的 AT 命令集,只有查询/响应终端,没有通知
  • /dev/ttyUSB1 - ? (反正不需要)
  • /dev/ttyUSB2 - 完整的 AT 命令集、查询/响应控制台,包括接收状态消息,如^BOOT^RSSI^CSNR、呼叫通知 (^RING)、短信通知 (^CMTI^CDSI) 和USSD 通知 (^CUSD)

一开始,我无法使用 python 连接到/dev/ttyUSB1/dev/ttyUSB2,所以我使用了/dev/ttyUSB0。脚本无限等待,因为/dev/ttyUSB0 端口上没有通知。 我发现由于pyserial 3.0.1 中的错误,我无法使用python "BrokenPipeError: [Errno 32] Broken pipe" 连接到/dev/ttyUSB2,因此请确保您已从git 安装了最新的3.1a0 版本。

现在它对我来说开箱即用。


确保

  • 您正在使用固定的 pyserial 模块(v2.7 或 v3.1a0+)
  • 您使用的是正确的串行端口
  • 通过串行控制台(screen /dev/ttyUSB2 115200python tools/gsmterm.py -b 115200 /dev/ttyUSB2)可以看到通知

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    相关资源
    最近更新 更多