🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

4761閲覧

python3 serialポート通信 16進数で書き込む方法について

goki_gottan

総合スコア168

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/12/22 12:24

python3にて、serialライブラリーを使用して、USBとデバイスを接続し、通信しようとしております。

serial通信の認識はでき、comポートも認識できておりますが、16進数表記にてデバイスへ信号を送ろうとしておりますが、うまくいっておりません。

16進数表記が、色々なサイトでマチマチで、結局どれが正しいのか分かりません。

試したこと(要素は、7個ありますが省略)
1、a=b”0x53,0x22,0x30”
2、a=[0x53,0x22,0x30]
3、a=[/x53/x22/x30]

上記をwriteして書き込みます。
どれも、反応もないまま処理が終わります。
オシロスコープで反応を確認予定ですが、そもそも16進数の値を書き込む形はどれが正しいのでしょうか?

python3.7を使用しております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

文字通り、「16進数表記文字列を送りたい」なら、
a="532230"a=b"532230"
ですね。

「バイナリーデータを送るのだが、その際バイナリー値を16進表記で書きたい」なら、
おそらく、a="\x53\x22\x30"a=b"\x53\x22\x30"

投稿2020/12/22 12:36

otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goki_gottan

2020/12/22 19:04

双方同じ回答で、どちらにもベストアンサーしたかったです。すみません! 2人の回答で信頼度が上がりました。 ありがとうございました。
otn

2020/12/23 02:13

バイナリーデータに10進も16進もないので、 「16進数で書き込む」「16進数表記にてデバイスへ」という表現がおかしいです。
goki_gottan

2020/12/24 11:27

16進数ではなく、バイナリーで送っていたのですね? 見た目が16進数かと思いましたので、てっきり16進数かと思っておりました。 serialを使う際は、バイナリーで送るということを学びました
otn

2020/12/24 11:37

10進表記で書く事もできます。 struct.pack("3B", 83, 34, 48) == b"\x53\x22\x30"
guest

0

送りたいバイト列が 53 22 30 なら

Python

1b = b'\x53\x22\x30'

が正しい表記です。

投稿2020/12/22 12:29

A_kirisaki

総合スコア2853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goki_gottan

2020/12/22 19:05

ありがとうございました。 早い方に、今回はベストアンサーさせていただきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問