LinuxでRS232Cのシリアル通信
Evernoteからコピペ
Linuxでシリアル通信を実行しようと思っても,WindowsのTera Termと違って面倒なので備忘録を書いておくことに。
今回は,FT232RL系のモジュールを接続する例で考える。
まずLinuxにシリアル通信デバイス(今回はFT232RLモジュール)をPCに接続。
Linuxで端末を立ち上げて,
% dmesg
と入力してエンター。
すると,いっぱい表示されるが,その中で
FTDI USB Serial Device converter now attached to ttyUSB0
とかいう行がある。コレは「FTDI USBシリアル変換ICはttyUSB0で接続した」ということを示している。
(このttyUSB0とは,シリアルポート0であり,WindowsではCOM~にあたるもの)
したがって,接続するときは"ttyUSB0"を使用。
また,実際に接続する際には cu コマンドを使います(持ってない場合はインストール)。
使い方はこの場合,
% cu -s <baud reat> -l <device name>
となる。<baud reat>は通信速度,<device name>はこの場合,"ttyUSB0"と入力する。
早速これを使って通信を...といきたいところだが,待った,である。
通常,ttyUSB0のような/dev/内のファイルはそのままでは通信できない。
なぜか。
ユーザによってファイルの読み書き実行をできる権限が違うからだ。
例えば,
・そのファイルを保持しているユーザは読み書き実行できるが,その他のユーザはできない
・どのユーザでも読み書き実行ができる
などなど...
では,ttyUSB0のパーミッションを見てみよう。
端末で,
% ls -l /dev/ttyUSB0
と入力する。
すると,
crw-rw--- 1 root dialout 188, 0 2月 10 22:05 /dev/ttyUSB0
と出る。
この出力は時と場合,端末によって変わることがあるが,この場合で書く。
重要なのは頭のあたりの
crw-rw----
であるが,この文字列は(1,3,3,3)文字で区切る。
頭1つ目の文字はファイルの種類を表しているが,ここでは触れないこととする(私がわかってないので...)。
さて,次の3つは,ファイル所有者のパーミッションを表している。
rw-となっているが,この場合,ファイルの所有者は読み書き(Read Write)ができる。
実行もできる場合は rwx。
次の3つはファイルを所有するユーザが所属するグループに属している全てのユーザに関するパーミッションだ。
その次は,その他のユーザである。
よく分かってないのだが,cuコマンドで通信する場合はその他のユーザからファイルにアクセスしていることになるらしい。
てなわけで,このパーミッションを
crw-rw-rw-
にしてやらなければならない。
そこで,chmod コマンドを使う。
% sudo chmod 666 /dev/ttyUSB0
とすればおk。
chmodはスーパユーザでしか実行できない(多分...)ので,sudoで実行する。
すると,通る。
そろそろ接続していこう。
% cu -s 115200 -l /dev/ttyUSB0
と入力する(ボーレートとデバイス名は各自で合わせて欲しい)。
すると,成功の場合,
Connected.
と返してくる。これで通信確立。
もし,
Line in use
とか返してきた場合,パーミッションなどが間違っている可能性があるので,もう一度チェックすること。
切断の際は,
~.
と入力すると,数秒後に切断される。