質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

2回答

5819閲覧

シリアル通信でのコマンド送信方法

Opt

総合スコア7

Python 3.x

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

0グッド

0クリップ

投稿2019/03/29 00:53

編集2019/03/29 01:23

前提・実現したいこと

VISCAというSONYの独自規格を採用するカメラユニットをPCから制御することを考えています。
tkinterで作成したEditBoxに入力した文字列をコマンドとして送信しようと思い、
下記のようなプログラムでコマンドを送ろうとしたのですが上手くいかず(カメラが動作せず)、
何か対策が分かれば教えて下さい。
プログラム上のエラーは出ていません。

該当のソースコード(一部)

Pythonコード

1def send(self): 2 self.snd_cmd = self.EditBox.get() 3 r_data = self.uart_write_read(self.snd_cmd, 20) 4 self.EditBox2.insert(tkinter.END, str(r_data)) 5 6 '''シリアル通信でデータの送受信を行う''' 7 def uart_write_read(self,w_data, r_size): 8 '''write''' 9 self.ser.write(w_data.encode()) 10 print('Send: ' + str(w_data)) 11 '''Read''' 12 self.r_data = self.ser.read_until(size=r_size) # size分Read 13 print('Recv: ' + str(self.r_data)) 14 return self.r_data

試したこと

試しに下記のようなコマンドを送ろうと思い、
送信部分に直接コマンドを入力すると、正しく送れているようです。

コマンド:81 01 04 47 00 00 00 00 FF
self.ser.write(b'\x81\x01\x04\x47\x00\x00\x00\x00\xFF')

データの型変換が上手くいってないのでしょうか?

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

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

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

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

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

otn

2019/03/29 00:56

> 上手くいかず、 どうなるのですか?
y_waiwai

2019/03/29 00:56

このままではコードが見れないので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
y_waiwai

2019/03/29 00:59

で、上手く行かず、というのはなにがどういうふうにうまくいかないんでしょうか。 エラーが出るならエラーメッセージを提示してください
Opt

2019/03/29 01:24

すみません、修正いたしました。 エラーは出ていないのですが、カメラが正常に動作しません。
otn

2019/03/29 02:16

どうならないかじゃなくて、どうなるかを書いてください。
guest

回答2

0

ベストアンサー

16進文字列をバイナリーデータに変換するコードは、Qiitaの記事 16進文字列をバイナリに変換 で説明されています。
参考にしてください。

encode関数、decode関数は、文字コードの変換に使うものだと思います。

投稿2019/03/29 01:42

coco_bauer

総合スコア6915

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

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

Opt

2019/03/29 03:34

アドバイス通りに実行したところ正常に動作いたしました。 ありがとうございました。
guest

0

バイナリデータで送信しなければいけないところで、文字列として処理しているため、そこでデータが化けてしてしまってるんでしょう。

#w_data ってのがナニモノかわからないところもあったりなんかしそうなふんいきですが


で、デバッグの方法ですが、シリアルデータをバイナリで受信して表示するようなツールがありますんで、もう一台PCを用意してそれで受信してみる、ってのでどうでしょう

投稿2019/03/29 01:28

編集2019/03/29 01:31
y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問