Datos binarios con pyserial (puerto serie python)
-
19-08-2019 - |
Pregunta
El método
serial.write () en pyserial parece enviar solo datos de cadena. Tengo arreglos como [0xc0,0x04,0x00] y quiero poder enviarlos / recibirlos a través del puerto serie. ¿Existen métodos separados para E / S sin procesar?
Creo que podría necesitar cambiar las matrices a ['\ xc0', '\ x04', '\ x00'], aún así, el carácter nulo podría representar un problema.
Solución
Necesita convertir sus datos en una cadena
"\xc0\x04\x00"
Los caracteres nulos no son un problema en Python: las cadenas no están terminadas en nulo, el byte cero se comporta como otro byte " \ x00 "
.
Una forma de hacer esto:
>>> import array
>>> array.array('B', [0xc0, 0x04, 0x00]).tostring()
'\xc0\x04\x00'
Otros consejos
Un método alternativo, sin usar el módulo array
:
def a2s(arr):
""" Array of integer byte values --> binary string
"""
return ''.join(chr(b) for b in arr)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow