2012年
1月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2012-01-24 新しい測定装置

_ USBTMCのアクセス速度

今日、測定装置が到着したので、早速その制御を試みてみた。その測定装置は、インターフェースは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かなんかで調べてから読むようにすれば良いのだろう。

あとは、権限問題だ。