gpt4 book ai didi

python - pySerial调制解调器结果代码

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:05 25 4
gpt4 key购买 nike

我在 Debian 机器上使用 pySerial 和 python 2.7。我正在编写 python 代码来控制 USRobotics USB USR5637 调制解调器。我想检查调制解调器的响应是否存在问题/错误,但我从代码中得到异常结果。我已经编写了一些用于测试的基本代码。我确实已断开电话线,因此我可以看到结果代码“无运营商”。如果有人可以访问 pySerial 和调制解调器,我将不胜感激可以提供的任何帮助。

我创建了以下代码进行测试:

import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=5)
ser.write("ATE0\r") # Attention - Echo disable
response = ser.read(4)
print "ATE0 %s" % response
ser.write("ATX0\r") # Attention - Echo disable
response2 = ser.read(8)
print "ATX0 %s" % response2
ser.write("ATDT411\r") # Attention - Dail - Tone - 411
response3 = ser.read(32)
print "ATDT %s" % response3
ser.write("ATH\r") # Attention - Hang up line
response4 = ser.read(16)
print "ATH %s" % response4
ser.write("ATZ\r") # Reset
response5 = ser.read(16)
print "ATZ %s" % response5
print "================================================="
print "%s %s %s %s %s" % (response, response2, response3, response4, response5)
ser.close()

我得到的回复是:

ATE0 
OK
ATX0

OK

ATDT
ATH
NO CARRIER

ATZ
OK

=================================================

OK

OK

NO CARRIER

OK

我的问题是:

  1. ser.read(4) 或 ser.read(8) 中的数字是多少。是不是超时了?
  2. 直到代码的 ATH 部分之后我似乎才得到“NO CARRIER”。我希望在 ATDT 部分之后直接获得它。
  3. 为什么我最终只得到四个结果?
  4. 为什么打印结果中的间距异常?

任何帮助将不胜感激。谢谢。

最佳答案

ser.read(4)表示从串口读取4个字节。您已通过构造函数调用配置了 5 秒超时:

serial.Serial('/dev/ttyACM0', 9600, timeout=5)

so ser.read(4) 可能返回少于 4 个字符。使用 timeout=None 进行阻塞读取,在这种情况下,直到收到正好 4 个字符后才会返回。

您会得到奇怪的间距,因为调制解调器发送的每个响应都以 CR 字符结尾(并且可能是 CR/LF 对。)

您可能会发现使用此 getline() 函数与调制解调器交互更容易:

def getline(ser):
buf = ""
while True:
ch = ser.read(1)
if ch == '\r': # or perhaps '\n'
break
buf += ch
return buf

对于#2,我相信由于您发送的 ATH 命令,您会收到“NO CARRIER”。

请参阅此 MS 支持说明中的“调用电话”部分 (link)

根据注释,发送挂断命令将导致 NO CARRIER 响应。当您发送 ATH 时,调制解调器可能仍在尝试建立连接。

关于python - pySerial调制解调器结果代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27531930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com