2006年10月25日

USB-IOからの値取得 @ 電子工作

色々と実験した結果。USB-IOへの入力を取得する方法が分かりました。

コマンドは下記のページを参考にしました。

Specifications of Morphy USB-IO
>>関連リンク

この他にも色々とlinuxとかBSD用のソースを公開している方があったので、それらも参考になりました。感謝感謝です。

ソースはこんな感じです。(Macでのこの様な情報は少ないので、詳しく書いた方が良ければ、整理して紹介します。)

msg[0]=0x01;msg[1]=0xff;
HIDSetReport(pDevice,kIOHIDReportTypeOutput,0,msg,8);
msg[0]=0x03;msg[1]=0x00;
HIDSetReport(pDevice,kIOHIDReportTypeOutput,0,msg,8);
usleep(100000);

pElement = HIDGetFirstDeviceElement (pDevice, kHIDElementTypeAll);
while (pElement){
if( (int)(pElement->cookie) == 0x10){
long eValue = HIDGetElementValue(pDevice,pElement);
}
}

取得しようとするポートのビットに1を書き込む必用が有ることに気付かず、随分と無駄な時間を使ってしまいました。

上記のソースはHIDSetReportで読み込みたいポートの全てのビットを1にして次にHIDSetReportで読み取りのコマンドを送ってます。その後に、HIDGetElementValueで値を取得しているのですが、何となく効率が悪い気がします。while()なんて使わずにcookieが0x10のモノに直接アクセスしたいのですが、無理なのだろうか?それから、usleep(100000)というウェイトが入ってますが、直ぐさまHIDGetElementValueしてしまうと、値が取得できない場合があるようなので、強制的にウェイトを入れました。どの位が最適なのかは、詰めてないので、もっと少し短くても良いかも知れません。

取り敢えず、これで入出力が出来るようになったので、本格的にMIDIを絡めた実験に移ろうと思います。

閲覧数: 3650 / はてなブックマークusers

blog comments powered by Disqus

関連日記

アマゾン広告

この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。

▼日記検索

Mac

Shade

3D

Flash

ゲーム

ウェブ

音楽

映画

デジカメ

Windows

Linux

携帯電話

テレビ

広島

電子工作

iOS

▼ 最近のトラックバック

▼ランキング

▼関連サイト