|
setup diary |
今日、測定装置が到着したので、早速その制御を試みてみた。その測定装置は、インターフェースはUSBしかない。それをLinuxからUSBTMCで制御するのだ。
以前に別の装置で試したときには、/dev/usbtmc0の権限が問題になった。これはまだ解決できていないが、新たな問題が見つかった。readする際に、時間がかかっていたのだが、それは解決することができた。
rs232cのときにも同じだが、usbtmcでもrubyから"r+"でopenして、読み書きしている。書く方は、writeしたあとでflushすれば、うまく行くことは前に分かった。しかし、読む方は普通のreadを使って一回につき5秒ぐらいかかってしまっている。bufferにたまったdataを読むときに、timeoutを待って、表示されているように思われるので、いろいろと調べていたら、なんとなく原因が分かってきた。rubyのIOのmethodを見ていると、readpartialというものがあり、即座に得られるデータを返してくれるらしい。試しにこれを使ったら、通常の読み込みは思ったとおりに動作した。長い時間待たないといけない場合には、timeoutになってしまったので、bufferに文字があるかどうかをselectかなんかで調べてから読むようにすれば良いのだろう。
あとは、権限問題だ。