pythonを使用してシリアル通信で文字コードを直接指定して送信したい場合
通信相手:E220-900T22S
とりあえず書いてみる
import serial
ser = serial.Serial('COM1', 9600)
pt = '\xc1\x00\x08'
ser.write(pt)
ser.close()
encodeしてくださいと怒られる
TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq))
encodeしてみる
ser = serial.Serial('COM1', 9600)
pt = '\xc1\x00\x08'
pt = str.encode(pt)
ser.write(pt)
ser.close()
モジュールから0xff,0xff,0xffが返ってくるのでコマンドが違うようです
encode後のptの2文字目をordで数値化してみてみる。
pt = '\xc1\x00\x08'
print(ord(pt[1])) # => 0
pt = str.encode(pt)
print(ord(pt[1])) # => 128
数値が変わっている
encodeで16桁の文字コードへ変換されてしまっている。
動作したコード:
import serial
ser = serial.Serial('COM1', 9600)
pt = [0xc1,0x00,0x08]
pt = bytes(pt)
ser.write(pt)
ser.close()