Python 3.3およびpySerialをシリアル通信に使用します。
COMポートにコマンドを書き込もうとしていますが、書き込みメソッドは文字列を受け取りません。 (コードの大部分はここからです pySerialパッケージの使用の完全な例
どうしたの?
import time
import serial
ser = serial.Serial(
port='\\\\.\\COM4',
baudrate=115200,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
if ser.isOpen():
ser.close()
ser.open()
ser.isOpen()
ser.write("%01#RDD0010000107**\r")
out = ''
# let's wait one second before reading output (let's give device time to answer)
time.sleep(1)
while ser.inWaiting() > 0:
out += ser.read(40)
if out != '':
print(">>" + out)
ser.close()
エラーはser.write( "%01#RDD0010000107 **\r")にあり、トレースバックは次のようになります。data = to_bytes(data)b.append(item)TypeError:整数が必要です。
文字列をバイト配列に変換する必要があり、これを行うにはコードを編集して
ser.write("%01#RDD0010000107**\r".encode())
これで問題が解決しました
根本原因が見つかりました。または、次のようにします。
ser.write(bytes(b'your_commands'))
書き込みをしようとしたときに、同じ「TypeError:整数が必要です」というエラーメッセージが表示されました。おかげで、.encode()で解決してくれました。 32ビットWindowsを実行しているDell D530でpython 3.4を実行していますXP Pro。
ここではcomポート設定を省略しています。
>>>import serial
>>>ser = serial.Serial(5)
>>>ser.close()
>>>ser.open()
>>>ser.write("1".encode())
1
>>>