0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pyserialで文字コードを直接指定して送信

Posted at

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()
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?