2009年8月23日日曜日

スペアナGigaSt v5をrubyからコントロール出来るか

GigaSt v5というスペアナはUSBでPCとつながっている。だからrubyがUSBポートをコントロールできれば、スペアナのデータが取り出せるはずだ。

それで調査してみたのだが、WindowsXPのSP3以降には、MS純正のUSBドライバ(WinUSB.DLLとWinUSB.sys)が入っていることがわかった。

参考:
http://www.wdddc.net/node/25

参考URLの記事によると、以下のようなソフトウェア構成になるらしい。

[ユーザーアプリケーション](exe)
 ↑[ユーザーリンクライブラリ](WinUSB API群を利用するdll)
  ↑[WinUSB.DLL](Microsoft社提供WinUSB API群)
   ↑[WinUSB.SYS](Microsoft社提供WinUSB デバイスドライバ)
    ↑[ユーザーデバイス](ハードウェア)

それで、この絵の下から4番目(上から2番目)の部分にあたるDLLはどうするのかしら・・・とさらに調べた。

すると、libusb というユーザーモードのドライバが存在するらしい。それも、linux, MacOSX, WindowsをサポートしてLGPLで公開されているらしい。Windows版は、LibUsb-Win32。素晴らしい。

すると、あとは、rubyからこのLibUsb-Win32をコントロールできればいいわけだ。
rubyからDLLを呼び出す方法は2つほど存在するようだ。ひとつはWin32APIというライブラリを使う方法。もうひとつは、DLというダイナミックリンクライブラリを呼び出すためのCラッパーライブラリを使う方法。
後者の方が新しいらしく、OSに依存しないようにできるとか。特に、今回はlibusbというライブラリを使うので、このDLを利用したほうがよさそうだ。

ちなみに、rubyからlibusbドライバを呼び出すためのlibusbというライブラリも存在するのだが、こちらはWindowsではコンパイルできなかった。

0 件のコメント:

コメントを投稿