シリアルをRで使ってみた


Rでarduino
arduinoとシリアルで通信するときに、その結果をグラフをにしたかったので、Rを使ってみた。少し検索してみたが、あまり情報が見つからなかったので、手探りでやってみた。まず、fileコマンドで/dev/ttyUSB0を開けて、読んだり書いたりしてみたら、多少は動くことが分かった。しかし、読むときに、最後まで読んでしまうと、それ以上読み込めなくなることが分かった。そこで、開いて読んで閉じるということを繰り返すことによって、やりたいことができることを確認したのだが、しばしばエラーが出てしまう。手でコマンドを打つと動くのだけど、コードにすると、エラーがでる。でも、それなりに動くからいいか。必ずしも必要かどうかは不明だが、適宜sleepを入れて、結果として以下のようなコードになった。もちろん、読み込んだデータの処理もしないといけないが、それは省略している。

while(TRUE){
 f<-file("/dev/ttyUSB0","r+")
 Sys.sleep(0.1)
 cat("G0000\n",file=f)
 Sys.sleep(0.1)
 d<-scan(f,quiet=TRUE)
 Sys.sleep(0.1)
 close(f)
 Sys.sleep(1)
}