[1] USB-IOのREAD spline 【2009/04/25 08:48:04】[返信][編集][削除] [PC] 初めまして。いつも有用な情報をありがとうございます。
自分で解決できそうにないので、ご助言いただければ幸いです。
msubiobase.h と、usbio_test.cをお借りして、
Km2net社製USB-IOの試験をしておりますが、uio_out
は完全に動作するものの、uio_inが正常に動作しません。
具体的にはdoループ内のusb_interrupt_read関数で-22が
戻ってきてしまいます。
シリアルなので半田ミスでreadだけ失敗と言うのも
考えにいのですが、念のためTECHNOKITのものも入手し
ましたが、同様の現象です。
環境は玄箱proにlennyをインストールした状態です。
OSとの相性なのかと思い、libusb-win32を利用し、
windowsXP上でも試験しましたが、どちらのUSB-IOも
全く同じで、出力は正常に動くものの、interrupt_read
がエラーを返す現象です。
usb_interrupt_readで-22が返って来た時にusb_strerror();
で内容を取得してみると、
"_usb_setup_async: invalid endpoint 0x01"
と出ています。
usb_control_msg(udev,0x21,0x09,0x00,0x00,(char *)ctl,8,5000);
usb_interrupt_read(udev,0x1,(char *)indat,8,5000);
の流れがうまく行かない感じです。
USB-IOはどちらも一ヶ月ぐらい前に購入したものです。
lenny上でのgccは4.3.2、XPではMSVC6SP6です。
私が大誤解しているような気もしていますが、ご助言
いただけるとうれしいです。
厚かましいお願い申し訳ないです。よろしくお願いいたします。 | | | [2] Re:USB-IOのREAD spline 【2009/04/25 10:23:48】[編集][削除] [PC] 数日はまっていたのですが、掲示板に書き込んだ後
調査してたら原因がわかりました。
dev->config[0]->interface[0]->altsetting[0]->endpoint[0]->bEndpointAddress
が、1でなく、0x81になっていました。
usb_control_msg(udev,0x21,0x09,0x00,0x00,(char *)ctl,8,5000);
usb_interrupt_read(udev,0x81,(char *)indat,8,5000);
で、問題なく読み込めました。スレ汚し失礼しました。 | | | [3] Re:USB-IOのREAD バケさん(管理人) 【2009/04/25 10:36:32】[編集][削除] [PC] splineさん、こんにちは
書き込みありがとうございます。
自己解決されたということですね、安心しました。
まだ、内容を斜め読みでレスしていますが、
これはサンプルソースは環境によって対応が必要ということでしょうか?
いずれにしろ、わなにはまる場所だと思いますので、大変貴重な情報をありがとうございます。
内容はあとでゆっくり見てみます(今日は仕事なので)
Linux(libusb)がXpで動かせるのですね、またやってみたことがありませんでした。
USBもサポートされているのであれば気軽にTESTに使えますね。
自分がテストする時はバーチャル(VM)に環境を作って行っていました。
lennyもはじめて聞きました。色んなOSでUSB-IOが動かせているのですね、ちょっとうれしく思っています。
どんなことでもいいので気軽に書き込みをしてください。
| | | [4] Re:USB-IOのREAD spline 【2009/04/25 12:33:45】[編集][削除] [PC] バケさん、素早いお返事ありがとうございます。
少なくとも私のXPSP3環境では、
dev->config->interface->altsetting->endpoint->bEndpointAddress
の値は0x81だったので、
usb_interrupt_read(udev,0x81,(char *)indat,8,5000);
として、読み込むことが出来ました。
lenny側はもう一山あるようで、
dev->config->interface->altsetting->endpoint->bEndpointAddress
は同じく0x81なんですが、
usb_set_configuration(udev, 1);
で-16が戻り失敗しています。これは
could not set config 1: Device or resource busy
と言うことなので、他のUSB監視モノとぶつかっているんだ
と思います。dmesgを確認すると、
usb 2-1: usbfs: interface 0 claimed by usbfs while 'usb_io' sets config #1
lennyは入れたばかりなのでまだよくわかっていませんが、
これからrmmodなりいろいろとしなければならない感じです。 | | | [5] Re:USB-IOのREAD spline 【2009/04/27 21:57:43】[編集][削除] [PC] 一応結果のお知らせをします。
要するにあちこちで言われている通り、usbhidがデンと構えて
居るために、libusbでinterrupt入力を受けることは簡単では
なさそうです。
usb_set_configuration失敗
→usb_detach_kernel_driver_np成功
この段階で、IRQの送信先が無くなり、結果
usb_interrupt_readでIRQがこける感じでしょうか。
OSの再構築が本筋なんでしょうけど、今回作ろうとしている
のは全く速度を要求しないので、
usb_bulk_read(udev,0x81,(char *)indat,8,5000);
で良しとすることにしました。
#これもたまにこけるのですけどもね。
どうもお騒がせしました。 | | | [6] Re:Re:USB-IOのREAD バケさん(管理人) 【2009/04/28 21:58:01】[編集][削除] [EZ]W61P usb_detach_kernel_driver_np成功
この命令を付け加えてなんとか動くようになったのですが、これが原因らしいとはLinux初心者の自分にはてが付けれそうにないですね。
でもこのあたりのキーワードで検索するとヒントがあるかもしれません。
自分も時間をみて調べて見ます、また何かわかりましたらお願いしますね。 |
|