通信フォーマット
HID通信を行うわけですが、通信内容のフォーマットを作ります。それなりに、USB自体通信自体の信頼性が高い?はずなので、不要そうですがチェックサムをつけました。
Host->Device
データアドレス | 略語 | 内容 | データ |
00 | PREABMLE | プリアンブル つけてみた 0xAA固定 | 0xAA |
01 | CMD | コマンド | 00:NONE 01:CPU RST 02:CPU RUN 03:READ STATE 04:WRITE MODE |
02 | BYTE NUM | WRITE:DATA部のデータ数 最大 58byte READ:読み出しBYTE数 | 0x3A-0x00 0x00-0xFF |
03 | ADDR 下位 | アドレスの設定(下位) | 0xFF-0x00 |
04 | ADDR 上位 | アドレスの設定(上位 7bit有効) | 0x7F-0x00 |
05-3E | DATA | データ[06-3E] リード時はダミー | 0xFF-0x00 |
3F | CHECK SUM | データ部合計値 + 1 | 0xFF-0x00 |
Device->Host
データアドレス | 略語 | 内容 | データ |
00 | PREABMLE | プリアンブル つけてみた 0x55固定 | 0x55 |
01 | STATE | DEVICE 状態 上位4bit RST/RUN 状態 下位4bit 動作モード | X0:NONE X3:READ STATE X4:WRITE MODE X5:READ MODE X6:BUSY 0X:RST 2X:RUN |
02 | BYTE NUM | DATA部のデータ数 最大 58byte | 0x3A-0x00 |
04 | ADDR 下位 | アドレスのオフセット(下位) | 0xFF-0x00 |
05 | ADDR 上位 | アドレスのオフセット(上位 7bit有効) | 0x7F-0x00 |
05-3E | DATA | データ[06-3E] ライト時はダミー | 0xFF-0x00 |
3F | CHECK SUM | データ部の合値 + 1 | 0xFF-0x00 |
こんな感じで設計してみました。問題ないといいですけど、適宜内容は変えるかもですね。
アプリケーション
PC側のアプリケーションは手間をかけたくないので、pythonで作ります。
以下の参考サイトがあったので、助かりました。

PythonでUSB HIDデバイスに接続
USBデバイスと64 byteのパケット通信をして、受信した64 byteをshellウィンドウに表示します。…
https://krr910183393.wordpress.com/2021/08/01/python-tkinter-usb-hid-host-application/sn
GUIの画面はWxFormBuilderでちょちょいと作ります。

PythonでGUI(WxFormBuilder) - Qiita
PythonのGUI作成ツールは色々ありますが、ライセンス的に使いやすいWxPythonを使うことが多いです。しかしコードを直接記述する方法は時間が非常にかかるためオススメ出来ません。WxFo…
画面はこんな感じ。

PICKIT2っぽいですな。なんか似てしまった。
USB接続してCONNECTをクリックすると右上に出ます。
続きますー
コメント