无法使用pyserial从串行读取任何内容
Not able to read anything from serial using pyserial
我写了一个 python 脚本来与我的 RS232 设备通信,
执行后我可以写入终端但我没有得到任何 output.If 我打开我的 teraterm 我能够看到 cmnd 通过 pyserial(没有任何输出打印)。
代码:
导入序列
port = "COM1"
baud = 115200
ser = serial.Serial(port, baud, timeout=1)
if ser.isOpen():
print(ser.name + ' is open...')
cmd = input("Enter command or 'exit':")
if cmd == 'exit':
ser.close()
exit()
else:
ser.write(cmd.encode()+b'\r\n')
out = ser.read()
print('Receiving...'+out.decode())
以下是控制台的输出:
COM1 is open...
Enter command or 'exit':ls
Receiving...l
Receiving...l
这是我对您的程序的期望。 read()
的大小参数的默认值为 1。这意味着将读取一个字节。
如果另一端回应您的输入 'ls'
,第一个字节将是 'l'
。
尝试readline()
方法(不要忘记添加超时,否则它可能会永远阻塞)。或者以其他方式处理协议,例如通过重复调用 read()
。
我写了一个 python 脚本来与我的 RS232 设备通信, 执行后我可以写入终端但我没有得到任何 output.If 我打开我的 teraterm 我能够看到 cmnd 通过 pyserial(没有任何输出打印)。 代码: 导入序列
port = "COM1"
baud = 115200
ser = serial.Serial(port, baud, timeout=1)
if ser.isOpen():
print(ser.name + ' is open...')
cmd = input("Enter command or 'exit':")
if cmd == 'exit':
ser.close()
exit()
else:
ser.write(cmd.encode()+b'\r\n')
out = ser.read()
print('Receiving...'+out.decode())
以下是控制台的输出:
COM1 is open...
Enter command or 'exit':ls
Receiving...l
Receiving...l
这是我对您的程序的期望。 read()
的大小参数的默认值为 1。这意味着将读取一个字节。
如果另一端回应您的输入 'ls'
,第一个字节将是 'l'
。
尝试readline()
方法(不要忘记添加超时,否则它可能会永远阻塞)。或者以其他方式处理协议,例如通过重复调用 read()
。