LoginSignup
9
11

Linuxでシリアル通信をする

Last updated at Posted at 2018-11-19

#RS232cで機器を制御する
RS232cで通信して制御したい装置があって、Linuxで簡単にできる方法を調べている。詳しい人ならばLabViewとか使うのかもしれないけど、そこまで大仰なことは必要なくて、簡単なコマンドが使えれば十分なのでなるべく簡単に済ませたい。

##USB-RS232cケーブル
色々あるけど、今回はこれを買ってみた。
UGREEN USB シリアル変換ケーブル
AmazonのページにLinuxのロゴがあったのでこれにしてみた。繋いでみたところ/dev/ttyUSB0として認識された。

##使えそうなプログラム
WindowsだとTeraTermを使うのが良いが、Linuxだとcuscreenあたりが有名らしい。どちらもまず初めにハマるのは、起動したもののどうやって抜けて良いのかわからないこと。cu~.で、screenC-a kで抜けられる。使い方はそれぞれ

cuの起動
$ cu -s 9600 -l /dev/ttyUSB0
screenの起動
$ screen /dev/ttyUSB0 9600

という感じ。ところがコマンドを打っても、うまく返事が返ってこないので困った。
色々と苦戦したのだが、cu-dオプションをつけて起動したらようやく原因がわかった。改行で\rが入力されているが、相手側は\r\nが必要な装置だった。解決方法が見当たらず困ったが、色々とガチャガチャやっていてわかったのは、C-j\nが、C-m\rが入力されるらしい。これでとりあえずは動いた。

GUIならば、cutecomというものを使えば、改行コードを選べる。GUIは面倒なのでできれば避けたいが、今のところcuscreenのようなCUIでなんとかする方法がわからない。

##pySerialを使う
pythonではpySerialを使うと比較的簡単にRS232c機器と通信できる。これで装置が動かせるようなGUIのプログラムを作るのはどうしたら良いか、実はかなり悩んだんだけど、結論としてはbottle.pyというのを使ってWebアプリにすることで、一応納得いくようなものができた。詳しくは、そのうち時間があれば書くつもり。

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11