无法使用pyserial从串行中读取任何内容

时间:2016-02-22 12:16:55

标签: pyserial

我写了一个python脚本来与我的RS232设备通信, 执行后,我能够写入终端,但我没有得到任何输出。如果我打开我的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

1 个答案:

答案 0 :(得分:1)

Receiving...l

这是我对您的计划的期望。 read()的size参数的默认值为1.这意味着将读取一个字节。

如果另一端回应您的输入'ls',则第一个字节将为'l'

尝试readline()方法(不要忘记添加超时,否则它可能会永久阻止)。或者以其他方式处理协议,例如,重复调用read()