J'utilise python 3.6. Le code suivant fonctionne très bien sur Windows 10 Pro:code pyserial fonctionnant sous Windows (COM1) mais pas sous Linux (/ dev/ttyS0)
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")
Mais il est bloqué à « ser.readline() » quand je lance sous CentOS 6.8, car il n'y avait pas de câble attaché au port. Cela ressemble à un problème trivial, mais je n'arrive pas à comprendre ce qui ne va pas ou ce qui me manque.
Si vous ne pouvez pas non plus, j'espère que l'exemple de code peut être utile à quelqu'un au moins.
la commande 'setserial -g/dev/ttyS *' sur mes CentOS renvoie '/ dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4','/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3', '/ dev/ttyS2, UART: inconnu, Port: 0x03e8, IRQ: 4','/dev/ttyS4, UART: inconnu, Port: 0x02f8, IRQ: 3' – ambrojohn
Il se lit comme problème de ligne, voir par exemple cette réponse: https://stackoverflow.com/a/16961872/6401403 –