ときどき、WindowsでUSB機器を扱いたいことがある。
まあ、私の場合はPaSoRiなのだが、バルク転送とかしたいわけだ。
そのとき、どうやるのが一番簡単なのか、まだ決め切れていない。
今のところlibusbを使っているのだが、これを他の人に用意してもらうのは、敷居が高いような気がしている。
敷居が高いと、使ってもらえない、ということになり、それは寂しいと思うのだ。
では、もっと容易そうな環境となると、WinUSBが出てくる。
WinUSB自体は、XPの途中から入ったしくみで、アプリからも制御ができる。
うん、これならよいだろう、とC#から使ってみようとしたが、なかなかいいライブラリがない。
winusbnet - WinUSB .NET wrapper library - Google Project Hosting
WinUsbNet: A managed interface to WinUSB.sys - Home
だいたい、この2つが出てくる。
名前も、大文字小文字が違うだけだ。
だから同じものだろうと思い込んでいたのだが、そうではなかった。
そして困ったことに、どちらもビルドできるサンプルプロジェクトがない。
codeplexの方はサンプルソースはあるが、プロジェクトでは提供されていない。
自分で周りを埋めてしまえばいいんだろうけど・・・手間がかかるのでやりたくない。
デバイスをオープンするところまではできたが、これからまたPaSoRiへのアクセスを移植していくかと思うと、その気力がなくなりそうなことに気付いた。
じゃあ、やはりlibusbに戻るか、と思って探すと、これが出てきた。
LibUsbDotNet C# USB Library | Free software downloads at ...
そもそも、WinUSBを使おうとlibusbを使おうと、標準のPaSoRiドライバを差し替える必要があるので、敷居はどっちにしても高そうだ。
じゃあ、もうlibusbでもいいかもしれん。
NuGetではlibusbのパッケージが見つからないので、自分でインストールすることになる。
(ちなみに、codeplexじゃない版はNuGetにある。他にもFTDIのD2XXインターフェースとかあった。)
じゃあ、libusbにしようか、と思ったが、また考え込んでしまった。
さっきまでは、WinUSBからlibusbへの移植が面倒だとだけ考えていたが、今度はC/C++からC#への変換になるから、むしろそちらの方が面倒だ。
ならば・・・C++/CLIでライブラリにしてしまう、というのがよさそうな気がした。
C++からC++/CLIなら楽だろう、と思ったが、そうではなかった。
CLIになると、^とか、マネージ/アンマネージとか、よく知らない単語が出始めた。
うーん、Windowsでばしばしコーディングするなら覚えるけど、めったに使わないのに勉強するのはめんどくさい・・・。
そんなわけで、結局Qtを選択しましたとさ。
めでたしめでたし。
ドライバのインストールですが、libusb, WinUSBと書かれているのが libusb0.1, libusb-1.0(WinUSB) に該当するのなら、zadig というソフトでドライバのインストールをすると比較的楽にインストールできます。がどうでしょう?
返信削除http://sourceforge.net/projects/libwdi/files/zadig/
コメントありがとうございます。
返信削除すみません、こちらの記事にはリンクしてなかったですが、
私もzadigを使っています。
あれは、いいですよね!
zadigがものすごくマイナーだったらどうしようかと思っていましたが、
使われている人がいて、よかったです。