我的Python 2.7程序正在使用pySerial与RS232 / RS485设备(manual here, page 40)进行通信。
问题:然而,在超时后,写入串行端口的所有内容都会被回显为serial.readline
的响应。这是为什么?
打印序列:
Serial<id=0x1006e4350, open=True>(port='/dev/tty.usbserial-AL01MZAQ', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=3, xonxoff=False)
例如,如果我写入串行
#01RD\n
我收到回复
#01RD\n
而不是
*01_7.60E+02\n
更改pySerial中的波特率而不是设备上的波特率也会导致写入后超时的回显。不应该有不匹配的波特率导致胡言乱语被退回?
答案 0 :(得分:0)
如果您发送字符串使用回车符,而不是换行符。 在发送命令之前,您可能必须使用回车符来唤醒设备。然后删除打印输出语句中的额外字符。
运行cmd_send(x)
x ='#01RD'
def cmd_send(x):
尝试:
ser.write(x +'\ r')
out =''
睡眠(0.1)
而ser.inWaiting()&gt; 0:
out + = ser.read(1)
如果出来!='':
打印
其他:
打印“没什么”
除了例外,e:
打印“serial error:”+ str(e)