【目標】
STX1234ETX という文字列(前後に制御文字がついた数字のみの文字列)をpyserialを用いて送信したい。
文字コード:ASCII
【現段階での認識】
①ser.write(《バイト型に変換した文字列》)で送信する必要がある。
➁ASCIIコード表で
0x02⇔STX、0x03⇔ETX、0x31⇔1~0x34⇔4 と対応。
③1234だけを変換するのであれば、
number=1234
ser.write(number.encode('ascii'))
という処理をすればよい。
【不明点】
①送りたい文字列をバイト型にする必要があるのだが、
「STX1234ETX」の文字列をバイト型にした状態が「0x02 0x31 ....0x03」であるという認識で正しいのかがよくわかっていない。
➁①の認識が正しいのであれば、
ser.write(0x02)
ser.write(0x31)
ser.write(0x32)
ser.write(0x33)
ser.write(0x34)
ser.write(0x03)
とすれば6桁送信できたことになるのか?
③他サイトを見ていると
pyserialでSTXを送信するには
ser.write(chr(0x02))
としたらいいという記載を見かけたことがありました。
記載があったのはこちらのページです。
https://stackoverflow.com/questions/4449261/pyserial-cannot-send-stx
そうなると①➁の認識が誤っていそうなのですが、
ser.write(chr(0x02))つまりser.write(STX)という処理でいいということなのでしょうか。
それだと➁の書き方でなく
ser.write(STX)
ser.write(1)
ser.write(2)
ser.write(3)
ser.write(4)
ser.write(ETX)
でいいのかという話となってしまうのですが、バイト型に変換していない点でおかしいのではと感じています。
ネットで調べながら取り組んでみてはいるのですが、
正解がいまいちわからず質問させていただいております。
初歩的なところで抜けている知識も多々あるため、トンチンカンな部分もあると思いますがよろしくお願い致します。

回答2件
あなたの回答
tips
プレビュー