Comment puis-je envoyer un tableau d'octets à un port série à l'aide de Python?

Je suis en train de travailler sur une application qui nécessite l'envoi d'un tableau d'octets à un port série à l'aide de la pyserial module. J'ai été avec succès l'exécution de code pour ce faire, dans la canopée:

import serial
ser = serial.Serial('/dev/ttyACM0', 9600, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
ser.write([4, 9, 62, 144, 56, 30, 147, 3, 210, 89, 111, 78, 184, 151, 17, 129])
Out[7]: 16

Mais quand j'exécute le même code dans Spyder (les deux sont en cours d'exécution Python 2.7.6), je reçois un message d'erreur, comme

import serial
ser = serial.Serial('/dev/ttyACM0', 9600, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
ser.write([4, 9, 62, 144, 56, 30, 147, 3, 210, 89, 111, 78, 184, 151, 17, 129])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 475, in write
n = os.write(self.fd, d)
TypeError: must be string or buffer, not list

Comment puis-je faire Spyder se comportent comme de la Canopée à cet égard?

  • ser.write(bytearray([4, 9, 62, 144, 56, 30, 147, 3, 210, 89, 111, 78, 184, 151, 17, 129]))
  • pourrait-il y avoir différentes versions de package pyserial (serial.version) dans la Canopée et la Spyder?
InformationsquelleAutor W. Stine | 2015-08-14