在Windows上运行的pyserial代码(COM1)但不在Linux上运行(/ dev / ttyS0)

时间:2017-07-11 17:59:52

标签: centos6 pyserial

我正在使用python 3.6。 以下代码在Windows 10 Pro上运行正常:

import serial
import binascii

ser = serial.Serial("COM1") # "COM1" will be "/dev/ttyS0" on Linux
if ser.is_open == True:
    print("COM open")

ser.baudrate = 2400

print('Port configuration:')
print('baudrate:',ser.baudrate)
print('parity:',ser.parity)
print('stopbits:',ser.stopbits)
print('bytesize:',ser.bytesize)
print('xonxoff:',ser.xonxoff)
print('timeout:',ser.timeout)
print()
print('sending...')
frame = bytearray()
frame.append(0x7e)
frame.append(0x03)
frame.append(0x02)
frame.append(0x21)
frame.append(0x00)
frame.append(0xa4)
ser.write(frame)
print(binascii.hexlify(frame))
print()
print('receiving...')
recv = ser.readline()
recv_len = len(recv)
print(binascii.hexlify(recv))
print()
ser.close()
if ser.is_open == False:
    print("COM closed")

但是当我在CentOS 6.8下运行时,它被卡在'ser.readline()',因为没有连接到端口的电缆。 这看起来像一个微不足道的问题,但我无法弄清楚什么是错的或缺失。

如果你不能,我希望样本代码至少对某人有用。

1 个答案:

答案 0 :(得分:0)

错误的问题。代码使用ttyS1代替ttyS0(我知道这是微不足道的)。 无论如何,检查

非常有用
cat /proc/tty/driver/serial

显示每个端口旁边的tx / rx统计信息和参数,如DTS,RTS,RI等。 例如,在ttyS1旁边,我注意到一个'RI',当我试图打开COM1时,它是Windows上Hercules终端向我显示的(图形)参数。以这种方式非常直观地识别串口!