2008年
11月
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

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|

2008-11-13 rubyでRS232C

_ LinuxとWindowsの違い

RS232CのないPCも増えてきたが、装置の制御にはまだまだ使える。個人的にはGPIBの方が好きだが、今回はボードなどが見つからなかったので、RS232Cを使うことになった。 普段ならLinuxから制御するのだが、今回はWindowsを使わざるを得なかった。まあ、それほど違わないだろうと思っていたが、LinuxとWindowsでかなりやり方が違った。 Linuxでは、
r=open("/dev/ttyS0","r+")
system("stty raw -echo -crtscts 9600 -parenb cs8 -ctsopb < /dev/ttyS0")
r.write("read\n")
print r.gets("\x0d\x0a")
という感じでやっている。Windowsでは、いろいろと調べたり試したりした結果、
system("mode com1 baud=9600 parity=N data=8 stop=1")
r=open("com1","r+")
r.write("read\n")
s=""
s<<r.sysread(1) until s[-1]==10
print s
というようになった。本当はsyswriteにすべきかも知れないが、writeでもとりあえずは動いている。しかし、readでは動かなくてしばらく悪戦苦闘していた。自分でLFを探さなければならないのも少し面倒だ。 まあ、苦労したおかげで、実験が多少楽にできるようになった。