Données binaires avec pyserial (port série python)
-
19-08-2019 - |
Question
La méthode serial.write () de pyserial semble ne transmettre que des données de chaîne. J'ai des tableaux comme [0xc0,0x04,0x00] et je veux pouvoir les envoyer / recevoir via le port série? Existe-t-il des méthodes distinctes pour les E / S brutes?
Je pense que je pourrais avoir besoin de changer les tableaux en ['\ xc0', '\ x04', '\ x00'], mais le caractère nul peut poser un problème.
La solution
Vous devez convertir vos données en chaîne
"\xc0\x04\x00"
Les caractères nuls ne posent pas de problème en Python - les chaînes ne sont pas terminées par zéro, l'octet zéro se comporte comme un autre octet "\ x00"
.
Une façon de faire ceci:
>>> import array
>>> array.array('B', [0xc0, 0x04, 0x00]).tostring()
'\xc0\x04\x00'
Autres conseils
Une autre méthode, sans utiliser le module array
:
def a2s(arr):
""" Array of integer byte values --> binary string
"""
return ''.join(chr(b) for b in arr)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow