Dati binari con pyserial (porta seriale python)
-
19-08-2019 - |
Domanda
Il metodo
serial.write () in pyserial sembra inviare solo dati stringa. Ho matrici come [0xc0,0x04,0x00] e voglio essere in grado di inviarle / riceverle tramite la porta seriale? Esistono metodi separati per l'I / O non elaborato?
Penso che potrebbe essere necessario modificare le matrici in ['\ xc0', '\ x04', '\ x00'], tuttavia, il carattere null potrebbe rappresentare un problema.
Soluzione
Devi convertire i tuoi dati in una stringa
"\xc0\x04\x00"
I caratteri null non sono un problema in Python: le stringhe non hanno terminazione nulla, il byte zero si comporta proprio come un altro byte " \ x00 "
.
Un modo per farlo:
>>> import array
>>> array.array('B', [0xc0, 0x04, 0x00]).tostring()
'\xc0\x04\x00'
Altri suggerimenti
Un metodo alternativo, senza utilizzare il modulo array
:
def a2s(arr):
""" Array of integer byte values --> binary string
"""
return ''.join(chr(b) for b in arr)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow