HIDD_ATTRIBUTES attr; HidD_GetAttributes( handle, &attr ) ; cout<<"VenderID: " <<attr.VendorID <<endl; cout<<"ProductID: " <<attr.ProductID<<endl; cout<<endl;attrのメンバは、attr.VendorIDになっています。
なお、今回のHIDテストプログラムは、ema log(http://emaame.com/20061227.html)様のサイトにありましたソースリストをもとに作成させていただきました。
プログラムを作成する過程では、あちこちのサイトを検索しまわったために、どことどこのサイトを参考にさせていただいたのか、今となってははっきりわかりません。
でも、やっぱりこのままではいかんなあ、ということで、あらためて検索をし直したり、HDDに残っている古いソースリストを調べたりして、上記ema様のサイトにありましたソースプログラムをもとにさせていただいたことがわかりました。
遅くなりましたが、ema様には感謝申し上げます。
念の為に辞書で調べてみましたら、VenderでもVendorでも、どちらでもよいようです。
それならば、ということで、attr.VenderIDに書き直してコンパイルしてみましたら。
やっぱり、VendorIDでなければダメなのだそうです。
●デバイスみつけた!
そろそろ、PICの側のプログラムについての説明に入らなければいけないのですけれど、どこからはじめていったらよいものか、思案中です。
説明することもなかなかむつかしいです。
とりあえず今回のところは、C++のプログラムをもう少し先に進めておくことにいたします。
前回までの説明で、USBに接続されているデバイスのVendorIDとProductIDを検出するところまでできました。
今回は、そのVendorIDとProductIDをチェックして、ターゲットデバイスのhandleを確定するところまでいきたいと思います。
そこまでできれば、そのあとは本当にWriteFile()とReadFile()で、ターゲットデバイスと送受信するだけになります。
前回までのプログラムに以下の部分を付け加えます。
今回付け加える部分は、とても簡単です。
// // VendorIDとProductIDの取得 // HIDD_ATTRIBUTES attr; HidD_GetAttributes( handle, &attr ) ; cout<<"VendorID: " <<attr.VendorID <<endl; cout<<"ProductID: " <<attr.ProductID<<endl; cout<<endl; // //ここから下が追加する部分 // if (attr.VendorID==0x4d8 && attr.ProductID==0xa){cout << "GET!" <<endl;getmk=1;break;} // CloseHandle(handle); } if (getmk==0){cout <<"not found" <<endl;return;} // //write file & read file // // ここにWriteFile()とReadFile()のプログラムを書く // CloseHandle(handle); }
いままでのプログラムでは、handleがローカルになっていて、forブロックの外で使えませんから、HANDLE handleの宣言はforの前に置くことにします。
int getmk=0; HANDLE handle; for( int index = 0; ; index++ ) {
実行結果です。
ターゲットがみつかりましたから、
GET!
と表示されました。
今度はターゲットのPIC試作基板を外してから、もう一度実行してみました。
今度は、not foundと表示されました。
2010.4.14upload
前へ
次へ
ホームページトップへ戻る