2012年
12月
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-12-16 GPIBからUSB-RS232Cへの移行

_ RS232Cのecho

以前はGPIBで制御していた装置を、USBから使おうと思って、USB-RS232Cを使って制御しようとしたら、かなり苦労してしまった。RS232Cにはそれなりに慣れているつもりだったのだが、まだまだ経験が浅いようだ。

まず引っかかったのが、ストレートとクロスの問題だった。これに気づくのに数日かかったのは、反省すべきところである。そして、ボーレートやパリティなどのところはうまく指定しているはずなのに、送信がすぐに文字化けしてしまうという問題に悩まされた。受信はうまくいくのに。

装置のマニュアルをいろいろと読んでいたら、「装置はPCよりも処理速度が遅いので、echoをするモードにして、一文字一文字echoを待ってから、次の文字を送る方が良い」という記述を見つけた。sttyでechoをするようにしてもうまくいかないので、rubyで次のように書いたらうまくいった。

strs.split(//).each{|s|
  @port.write(s)
  @port.flush
  @port.read(1)
}

いつも、装置との通信には苦しめられることが多い気がする。こういう経験を通して、だんだんと慣れて行っているはずなのだが、まだまだ精進が足りないようである。