« PIC で USB デバイスがピクピク HID サンプルコード移植編 | トップページ | 映画「サヨナライツカ」 »

「VB で USB Joystick コールバック」のソースコード公開

 最近よくヒットしている記事なので…。

 「joyStickTest.zip」をダウンロード

 VB2008 のプロジェクトごと zip に固めておきました。Win32 API だけだし、他に(C言語で言うところの)コンパイルオプションやプロジェクトのプロパティの設定は気にする必要がないと思ったからです。

 ソースコードは Form1.vb がミソです。joyGetPosEx() 関数によるジョイスティックの読み取りと、joySetCapture() による読み取りを同時にやっています。joyGetPosEx がその関数コールがあった瞬間のゲームパッドの状態しか読み取らないのに対して、joySetCapture はゲームパッドの変化があったとき確実にメッセージループに出てきます。

 実行してみればわかりますが、Form1 の Button1 を押した瞬間のゲームパッドの状態を読み取った結果が joyGetPosEx が得られ、Button1 を押さずともゲームパッドを操作することによって割り込みが入って lparam、rparam の中にそのときのゲームパッドの状態が書かれている、という仕組みが動いています。

 joySetCapture() の方式はまさにイベントドリブンな感じがしますよね。その代わり、ゲームパッドに対するアプリの反応はメッセージループの周期がどのくらい速いかに依存してきます。これはアクションゲームなどでは鈍いのかもしれません。

 このプログラムでは、ゲームパッドが USB ポートに刺さっているかどうかは実行開始時にしか判断していません。実行中に挿抜があった場合はたぶんゲームパッドを見失うか認識できないというだけに終わるでしょう。USB デバイス挿抜のたびに joySetCapture し直せばいいのでしょうが、IYN にはその方法はわかりません。ひょっとしたら、メッセージループの中に「JOYSTICK1 が READY だよん」というメッセージが流れてくるのかもしれません。ワカッタ ヒト ハ IYN ニモ オシエテ クダサイ。

« PIC で USB デバイスがピクピク HID サンプルコード移植編 | トップページ | 映画「サヨナライツカ」 »

パソコン・インターネット」カテゴリの記事

コメント


大変感謝しております。
大体はDirectXのDirectInputを使うと言う話ばかりでした。
もうVBは10年ほど遠ざかっており、久々に、APIを使うと言う事をやってみようと思ったら、全く駄目でした。
お教え感謝いたします。
その後も御健勝で。
繰り返しですが感謝致します。

こんにちは。
win32 API でアプリを開発することも少ないようで、実は .NET framework にない機能をちょっと使いたいとき、ということも未だにあるようですね…。

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 「VB で USB Joystick コールバック」のソースコード公開:

« PIC で USB デバイスがピクピク HID サンプルコード移植編 | トップページ | 映画「サヨナライツカ」 »

2022年3月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
無料ブログはココログ