GigaSt v5のUSBチップは、FTDI社のFT232RLというUSB-RS232Cチップが使われている。
よって、GigaSt v5のソフトウェアをインストール時に、このFT232RL用のドライバをインストールしている。
このチップは、結構あちこちで使われているようで、アプリケーション側はUSBがあることを意識しないで、シリアル通信をすることができるそうだ。
ruby-usbドライバが使えなかったので、シリアル通信をすることにしたのだが、どうもうまくデータが取れない。送信するデータは、SnoopyProで確認するとGigaStのオリジナルソフトとまったく同じ内容なのだけれど、なぜかUSBの挙動が違う。オリジナルソフトは、送信前にドライバーとUSBチップの間で何度かコントロールコードのやり取りがあって、そのあとGigaSt向けのデータを送っている。そのあと1秒以内に計測結果が返ってくるのだ。
rubyのシリアル通信用ライブラリがおかしいのか?
wincom.rbというものをつかっているのだが、ソースをざっと見たところ、Win32APIを呼び出している。
送信モードが何か違っているのかなぁ?バイナリーとアスキーがあるのか?
ruby-serialportがコンパイルできなかったので、rubyのDL2でDLLを直接呼び出すことになるのかなぁ。。。
FT232RL、もしかしてDirectDriverで使用してるのかも知れません 仮想COMポート(VCP)ドライバで動いているなら問題ないはずですが・・・不思議ですねぇ
返信削除