2009-01-23 142 views
16

pyserial中的serial.write()方法似乎只發送字符串數據。我有像[0xc0,0x04,0x00]這樣的數組,希望能夠通過串口發送/接收它們?是否有任何單獨的原始I/O方法?pyserial的二進制數據(python串行端口)

我想我可能需要將數組更改爲['\ xc0','\ x04','\ x00'],但空字符可能會造成問題。

回答

10

您需要將數據轉換爲字符串

"\xc0\x04\x00" 

空字符不在Python的一個問題 - 字符串不是空終止的零字節的行爲就像另一個字節"\x00"

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

的另一種方法,而無需使用array模塊:

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

我+1最好的答案 – PALEN 2013-01-22 00:43:11