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を探さなければならないのも少し面倒だ。 まあ、苦労したおかげで、実験が多少楽にできるようになった。