No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1142 | 1143 | 1144 |...| 1247 | 1248 | 1249 || Next»

継承したメソッドは…

Axis2 で ServiceClass として指定したクラスのオーバライドせずに引き継いだメソッドを公開しようとしたら java2wsdl がうまく動いてくれなかった.メッセージの中身がすべて空になってこけまくる.何かやり方があるのか仕様なのか.よく分からんことで時間を無駄にした.

エラー時に例外投げずにいきなり終了する(System.exit)するライブラリの実装って使いたくないんだけど… これが遠隔地のサーバ上で起きるからデバッグが非常にめんどくさい.System.exit 実行時の挙動を適当に変える方法は無いものか?

集中講義一日目

UMLでシステムをデザインしましょうねという半分講義半分演習.時間が無いので忙しい講義になってた気がする.道具としては無料で手に入る JUDE/Community を使用.今後のために今作ってるシステムもUMLで記述しといたほうがいいかもしれない.研究者が作る適当デモシステムっぽいのでどうでもいいといえばどうでもいいのだけど… 誰かがやっとけば今後の参考になるだろう.

ねむい…

他人に見せることが確定しているプログラムには javadoc ないし doxygen 用のコメントぐらい入れてほしいものだ.まともなドキュメントが無いのでソースを読まねばならずめんどくさい.ついでに,変数名に全く逆の意味の名前をつけないでほしい.コピーしてきて逆の意味のメソッド書いたからこうなったんだろうけど.ということで,自分くらいは少しはまともなコメントを書いておこう.

電子辞書購入

なんとなくいい機会なので電子辞書を買ってみた.買ったのはSIIのSR-E8500.他, SHARPのPW-V8900, CASIOのXD-GT9300 などの候補もあったが,英語に関する収録辞書が一番強力なこいつに決定.検索機能もちゃんとしているようだし.とりあえず暫くはこれで遊べそう.

AVR版USBテープリーダ完成?

データの読み込みまで出来るハード&ソフトが完成.バスパワーでもセルフパワーでも動く.整流用でないショットキーバリアダイオードを電源の逆流防止に入れてて挙動がおかしかったりもしたが,整流用のにしたらちゃんと動くようになった.やはり電流量に応じた物を使わないといけません.あとは,機器の方から能動的にデータを送れるようになると良いのだが… PCからポーリングしまくるとその処理のせいでマイコンの動作が重くなるのでよろしくないので.でもどうやればいいかまだ良くわからない.ついでに,PWMでモータをコントロールする部分もつけたので後はテープ送りの工作をすれば完璧.さすがにバスパワーだとやばいかもしれないけど…

libusb-win32 を使ってみる

USBデバイスのハード部分が出来上がったので次はソフト部分.どうやら libusb-win32 というフリーのライブラリがあるようなので利用してみる.とりあえず inf ファイル作っとかないとデバイスが使えないので libusb-win32-device-bin-0.1.10.1.tar.gz とかの中にある inf-wizard.exe で生成.プログラム自体は AVR USB のサンプルコードを参考に作成.無事エコーテスト成功.あとはしつこくポーリングするか受信待ちが出来るなら待ちをしてやればおわる.

libusb を使ったプログラムの流れ(簡易版)は以下のとおり.何より先に usb_init(); して libusb を初期化.んで,usb_find_busses(); usb_find_devices(); でデバイスを探して,

for(bus=usb_get_busses(); bus; bus=bus->next){
    for(dev=bus->devices; dev; dev=dev->next){

のネストループで全デバイスを走査する.走査時に,dev->descriptor.idVendor, dev->descriptor.idProduct をチェックして,ベンダIDとプロダクトIDがマッチしたら handle = usb_open(dev); で開けてみて,

usb_control_msg(handle, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) +  dev->descriptor.iVendor, 0x0409, buffer, sizeof(buffer), 1000);
usb_control_msg(handle, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) +  dev->descriptor.iProduct, 0x0409, buffer, sizeof(buffer), 1000);

でベンダやプロダクト名を確認する(同一IDに複数のデバイスがあってプロダクト名で識別しないとならないので面倒.usb_get_string でいい気もする).

外れたら usb_close(dev); しとく.

デバイスが見つかったら usb_control_msg でデータのやり取りを.

他の endpoint 開いたほうがいいけど… そんな余裕は無い.

«Prev || 1 | 2 | 3 |...| 1142 | 1143 | 1144 |...| 1247 | 1248 | 1249 || Next»
Search
Feeds

Page Top