1. ホーム
  2. python

[解決済み] pySerial write() が私の文字列を受け取らない

2022-03-04 20:28:49

質問

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") で、次のように表示されます。 トレースバックは以下のようになります。 データ = to_bytes(データ) b.append(アイテム) TypeError: 整数が必要です。

どのように解決するのですか?

文字列をバイト配列に変換する必要があることがわかり、これを行うためにコードを次のように編集しました。

ser.write("%01#RDD0010000107**\r".encode())

これで問題解決