So-net無料ブログ作成
検索選択

USB プロジェクト - WindowsアプリケーションにはBASICが良く似合う [USB]このエントリーを含むはてなブックマーク#

3ボタン・マウス・デバイス

マイコン側に"Generic HID"デバイスが用意できたので、これを制御するPC側のアプリケーションを作成します。 色々とサンプル・アプリケーションを探し回ったのですが、なかなか適当なのがありません。 古い Visual C++ や Visual BASIC のプロジェクトは、たとえ変換できたとしても、現代のVS2008では、簡単には動きそうにありません。 その中で、Visual BASIC 2005 Express Edition で作ったHIDクラスというものがありました。

Visual BASIC 2005 でHIDを操作する

その期待させるようなアプリケーションがあるのは、ここです。 このページの上から4分の1ほどの所に"HIDClass"というリンクがあります。 コメント欄で hamayan さんに指摘をいただきましたが、 http://www.lvr.com/ というのは、有名なUSB本の原作者の方のサイトなのですね。

Usb Complete: Everything You Need To Develop Custom Usb Peripherals (Complete Guides Series)

Usb Complete: Everything You Need To Develop Custom Usb Peripherals (Complete Guides Series)

  • 作者: Jan Axelson
  • 出版社/メーカー: Lakeview Research
  • 発売日: 2005/06/15
  • メディア: ペーパーバック

苦も無くビルト完了

さっそく、"hidclass_vs5.zip"をダウンロードして、"Visual BASIC 2008 Express Edition"で開いてみました。 いくつかオプションを指定するとプロジェクトが自動的に変換されます。 「無警告」でした。

ビルトすると、アプリケーションが出来ました。 実行ボタンを押してデバッグ開始です。

エラーが出る

WS000113.png

アプリケーション画面で、Vender IDとProduct IDを入れて、"Find My Device"をクリックすると、ちゃんとデバイスを見つけてくれました。 ここで、"Send and Receive Data"にある"Once"をクリックすると、レポートの送信と受信が行われると期待していたのですが、エラーメッセージが出てしまいました。

WS000114.png

何だか難しい日本語ですが、要するに配列の添え字が大きくなりすぎたようです。 問題発生箇所を確認したところ、私が作ったデバイスは、1バイトしかデータを送受信しないのに、2バイト分のデータを取り出そうとしたのが原因であることがわかりました。 そこで、プログラムを修正しました。 以下、1210行辺りの記述です。

lstResults.Items.Add("An Output report has been written.")

'Display the report data in the form's list box.

Debug.WriteLine(" Output Report ID: " & OutputReportBuffer(0))
Debug.WriteLine(" Output Report Data:")
lstResults.Items.Add(" Output Report ID: " & OutputReportBuffer(0))
lstResults.Items.Add(" Output Report Data:")

txtBytesReceived.Text = ""
For Count = 1 To UBound(OutputReportBuffer) '2

    'Add a leading zero to values from 0 to F.

    If Len(Hex(OutputReportBuffer(Count))) < 2 Then

        ByteValue = "0" & Hex(OutputReportBuffer(Count))
    Else
        ByteValue = Hex(OutputReportBuffer(Count))
    End If
    Debug.WriteLine(" " & ByteValue)
    lstResults.Items.Add(" " & ByteValue)
Next Count

再度、挑戦

プログラムを修正して、再度実行します。 "Autoincrement values"をチェックして、"Continuous"ボタンをクリックすると、 約1秒ごとにLEDのパターンが変化し、ボタンを押したときの反応も"Bytes Received"で 確認することが出来ます。

あとは、お好みの機能を実装すれば、PC側アプリケーションは、何とかなりますね。

参考文献

USBハード&ソフト開発のすべて―USBコントローラの使い方からWindows/Linuxドライバの作成まで (TECHI―Bus Interface)

USBハード&ソフト開発のすべて―USBコントローラの使い方からWindows/Linuxドライバの作成まで (TECHI―Bus Interface)

  • 作者: インターフェース編集部
  • 出版社/メーカー: CQ出版
  • 発売日: 2006/07
  • メディア: 単行本
USB Complete: The Developer's Guide (Complete Guides Series)

USB Complete: The Developer's Guide (Complete Guides Series)

  • 作者: Jan Axelson
  • 出版社/メーカー: Lakeview Research
  • 発売日: 2009/06
  • メディア: ペーパーバック

nice!(0)  コメント(1)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 1

お名前(必須)

http://janaxelson.com/hidpage.htm に変わってる
by お名前(必須) (2016-05-12 09:51) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。