SSブログ

MC9S08JS8 にGUIアプリケーションを書く (3) [USB]このエントリーを含むはてなブックマーク#

2729707

ハードウェアが出来た。 In-Circuit Program も出来た。 次は、 USB アプリケーションに挑戦です。

前回の記事では、MC9S08JS8で作成したUSBデバイスをPCに認識させました。 今回は、GUIアプリケーションを作成します。

STEP3.1 : 開発環境の準備

アプリケーションの開発には、やはり開発環境が必要です。 トレーニング資料では、Visual C#が使用されていましたが、私は、Visual BASICを使ってみる事にしました。

どちらの言語を使う場合にもVisual Studio 2008 Express Editionを使うことができます。 以前、USB プロジェクト - サンプル・ソフトへの長い道のり(前編)Visual Studio 2008 Express Editionをダウンロードした時から一年以上の時がすぎました。 当時ダウンロードしたisoファイルから作成したDVDを使おうとしましたが、現在のバージョンはSP1になっているため、すでにインストールできない状態になっていました。 しかたなく、ダウンロードしなおしです。 日本語版が 931MB で、英語版が 748MB でした。

STEP3.2 : GUIアプリケーションの開発

開発環境が準備できたら、いよいよGUIアプリケーションの開発です。 これまで、GUIアプリケーションの開発は、かなりハードルが高かったと記憶しています。 そのため、比較的ライブラリが揃っているHIDの上にアプリケーションを構築しようとしてHIDデバイスをせっせと考えていました。

ただ、HIDデバイス向けのアプリケーションにしても結構な記述量(技量?)が必要です。 結局、サンプルプログラムの範囲を超えられませんでした。 今回は、あんなに苦労をしなくてもアプリケーションが開発できるらしいのです。

トレーニング資料に従って、新しいプロジェクトを作成します。 そして、 SimpleUSB という謎のコンポーネントを Visual Studio のコンポーネント一覧に入れます。 このコンポーネントは、機能は限定されるけれど、簡単にWinUSBを通じたアプリケーションを作成することが出来るラッパ・プログラムのようです。

WS000254.png

作成したGUI画面は、こんな風になりました。 USBに接続・切断するための"OPEN"ボタンと"CLOSE"ボタン、それに"LED0"の点灯・消灯を決める"LED0"チェックボックスがウィンドウ上の主な登場人物です。

下の方に表示されているコンポーネント"js8"は、"SimpleUSB"コンポーネントのインスタンスです。 このインスタンスを通じてUSBデバイスとデータのやり取りを行います。 記述したプログラムコードは、以下の通りです。

Public Class MainForm

    Private Sub openButton_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
    ) Handles openButton.Click
        If js8.DeviceConnected Then
            statusLabel.Text = "Already connected"
        Else
            statusLabel.Text = "Opening :"
            js8.OpenConnection()
        End If
    End Sub

    Private Sub closeButton_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
    ) Handles closeButton.Click
        Dim status As SimpleUSB.STATUS_CODE

        statusLabel.Text = ""
        status = js8.CloseConnection()
        statusLabel.Text += status.ToString
    End Sub

    Private Sub js8_onDeviceConnect() Handles js8.onDeviceConnect
        statusLabel.Text += "Connected :"
    End Sub

    Private Sub js8_onDeviceDisconnect() Handles js8.onDeviceDisconnect
        statusLabel.Text += "Disconnected :"
    End Sub

    Private Sub led0Cbox_CheckedChanged( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
    ) Handles led0Cbox.CheckedChanged
        putLed()
    End Sub

    Private Sub putLed()
        Dim outBuffer(0) As Byte
        Dim status As SimpleUSB.STATUS_CODE

        outBuffer(0) = 0
        If led0Cbox.Checked Then
            outBuffer(0) = outBuffer(0) + 1
        End If
        status = js8.WriteData(1, outBuffer, 1)
        statusLabel.Text = status.ToString
    End Sub

End Class
WS000255.png

実行したら、こんなアプリケーションになりました。 "OPEN"ボタンでUSBデバイスに接続し、"LED0"チェック・ボックスでLEDを制御します。 少しサイズが大きいのですが、このリンクを "UsbGuiTrain01.zip" という名前で保存すると、プロジェクト・ディレクトリを再現することが出来ます。

参考サイト

USBJM_TRAINING: How to make a graphical user interface (GUI) for USB communication
今回の記事は、ここで見つけたお話を基にしています。 私がGUI開発に使用したのは、 Visual BASIC でしたが、このサイトでは Visual C# が使用されています。 お好みに合わせて、お使いください。

参考文献

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

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

  • 作者: インターフェース編集部
  • 出版社/メーカー: CQ出版
  • 発売日: 2006/07
  • メディア: 単行本
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
  • メディア: ペーパーバック

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

nice! 0

コメント 3

Tsuneo

HID用のC# / VB アプリには、このライブラリが Microchip USB フォーラムで人気です。

USB Hid Device Library
http://labs.mike-obrien.net/Document.aspx?id=hidlibrary

Tsuneo
by Tsuneo (2009-04-29 11:36) 

noritan

なるほど、みんな考えることは同じなのですね。
もちろん、このライブラリもマイコンを選んだりはしないのですよね。

by noritan (2009-04-30 23:18) 

Tsuneo

> もちろん、このライブラリもマイコンを選んだりはしないのですよね。

はい。ソースを一通り見た限り、デバイスが通常のvendor-specificな(つまり、マウスやキーボードではない)HIDでありさえすれば、良いようです。
by Tsuneo (2009-05-02 06:08) 

コメントを書く

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

トラックバック 0

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

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