2017-08-08 8 views
0

Python 3.5で書かれたプログラムを2.7に移植しようとしていますが、Python 3のバイトオブジェクトを追加するとPySerialの実装方法が変わるようです。残念ながら、は私がPySerial 2.xののための任意のドキュメントを見つけることができませんので、私は非常にPySerial 3から2にこのコードを変換する助けいただければ幸いです:Python 3から2.7へのPySerialコードの変換

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

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

bytesオブジェクトがでstrタイプのためだけのエイリアスですので、

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

んPySerialのwrite()メソッドは、パラメータとしてbytearrayオブジェクトを使用するか、それがコード化のための別のパラメータでstringを使用しない:Pythonの2.xでは、私は次のエラーを取得しますか?

ser.read(size=4)はどのデータ型ですか?

いっそ誰かがドキュメントへのリンクを持っている場合...

+0

'ser.write(chr(0x30))はどうですか? Python 2では 'bytes'(strのエイリアス)は2番目の引数(ここではエンコーディング)を使用しません。 –

答えて

0

まあ、私は文字通りuse a time machineもはや存在しないPySerial 2のdocumentationを、見つけるためにしなければならなかったが、今私は自分の質問に答えることができます。

ser.write()は、Python 2.6以降でstr、または実際にはbytearrayを受け入れます。 A bytearrayはおそらくより良いので、もし私が望むなら、私は符号化を指定できます。strの符号化はsystem settingsに依存するようです。だから私のコードは次のとおりです。

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

str(またはPy2.6 +でbytes)を返しますser.read

関連する問題