我正在使用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()',因为没有连接到端口的电缆。 这看起来像一个微不足道的问题,但我无法弄清楚什么是错的或缺失。
如果你不能,我希望样本代码至少对某人有用。
答案 0 :(得分:0)
错误的问题。代码使用ttyS1代替ttyS0(我知道这是微不足道的)。 无论如何,检查
非常有用cat /proc/tty/driver/serial
显示每个端口旁边的tx / rx统计信息和参数,如DTS,RTS,RI等。 例如,在ttyS1旁边,我注意到一个'RI',当我试图打开COM1时,它是Windows上Hercules终端向我显示的(图形)参数。以这种方式非常直观地识别串口!