2017-08-08 81 views
0

我試圖將用Python 3.5編寫的程序移植到2.7,但似乎在Python 3中添加了字節對象改變了PySerial的實現方式。不幸的是,我找不到PySerial 2.X任何文件,所以我將不勝感激的幫助PySerial 3將這段代碼2:將PySerial代碼從Python 3轉換爲2.7

import serial 
ser = serial.Serial('COM6', 9600) 

ser.write(bytes(chr(0x30), 'UTF-8')) 
dataIn = ser.read(size=4) 

由於bytes對象只是針對str類型的別名Python的2.x中,我得到以下錯誤:

TypeError: str() takes at most 1 argument (2 given) 

不PySerial的write()方法使用bytearray對象作爲參數或是否使用string與其他參數的編碼?

ser.read(size=4)返回哪個數據類型?

或者更好的是,如果有人有一個鏈接到文件...

+0

'ser.write(chr(0x30))''?在Python 2中'bytes'(str的別名)不會帶第二個參數(這裏的編碼)。 –

回答

0

好吧,我不得不從字面上use a time machine找到PySerial 2的documentation,不再存在,但現在我可以回答我的問題:

ser.write()在Python 2.6+中接受str或實際上。 A bytearray可能更好,因此我可以指定編碼,因爲str的編碼似乎取決於system settings。所以我的代碼現在:

ser.write(bytearray([0x30])) 

此外,ser.read返回str(或Py2.6 +一bytes)。