2009-01-23 11 views
16

Metoda serial.write() w pyserial wydaje się wysyłać tylko dane ciągu. Mam tablice jak [0xc0,0x04,0x00] i chcę mieć możliwość wysyłania/odbierania ich przez port szeregowy? Czy są jakieś oddzielne metody dla surowych operacji we/wy?Dane binarne z pyserial (port szeregowy Pythona)

Myślę, że być może będę musiał zmienić tablice na ['\ xc0', '\ x04', '\ x00'], nadal, znak null może stanowić problem.

Odpowiedz

10

Trzeba przekonwertować dane na ciąg

"\xc0\x04\x00" 

znaków Null nie są problemem w Pythonie - łańcuchy nie są zakończony zerem bajt zerowy zachowuje się tak samo jak inny bajt "\x00".

Jednym ze sposobów, aby to zrobić:

>>> import array 
>>> array.array('B', [0xc0, 0x04, 0x00]).tostring() 
'\xc0\x04\x00' 
12

alternatywny sposób, bez użycia modułu array:

def a2s(arr): 
    """ Array of integer byte values --> binary string 
    """ 
    return ''.join(chr(b) for b in arr) 
+1

+1 najlepszą odpowiedzią dla mnie – PALEN

+0

mapa może być jeszcze szybsze: 'def A2s (arr): return '' .join (map (chr, arr)) ' – RufusVS

Powiązane problemy