代码之家  ›  专栏  ›  技术社区  ›  Ed Mozley

用python获取串行响应数据

  •  0
  • Ed Mozley  · 技术社区  · 6 年前

    我一直在用这段代码在我的树莓皮上用python发送一条短信。

    How to Send/Receive SMS using AT commands?

    import time
    import serial
    
    recipient = "+1234567890"
    message = "Hello, World!"
    
    phone = serial.Serial("/dev/ttyUSB3",  460800, timeout=5)
        try:
            time.sleep(0.5)
            phone.write(b'ATZ\r')
            time.sleep(0.5)
            phone.write(b'AT+CMGF=1\r')
            time.sleep(0.5)
            phone.write(b'AT+CMGS="' + recipient.encode() + b'"\r')
            time.sleep(0.5)
            phone.write(message.encode() + b"\r")
            time.sleep(0.5)
            phone.write(bytes([26]))
            time.sleep(0.5)
        finally:
            phone.close()
    

    脚本运行时没有错误,但没有文本消息到达。我已经在minicom shell中直接运行at命令,文本消息确实成功发送。

    当命令发送到调制解调器时,是否有任何python脚本打印方法来筛选来自调制解调器的响应?例如,如果我发送atz,我就可以打印“ok”。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ed Mozley    6 年前

    抱歉,我在最初的搜索中错过了这个。

    Read response AT command with pySerial

    串行响应显示为:

    response =  ser.read(2)
    

    还有密码

    phone.write(bytes([26]))
    

    我可以在空闲状态下发送短信,但它不会从命令提示符发送任何信息。为了解决这个问题我不得不把它改成

    phone.write('\x1A')