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

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

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。