OSXでシリアル(#2)

 以前にUSB-RSAQ2を使ってMacOS Xからシリアルポート経由で外部機器と通信する記事を掲載しましたが、追加情報です。
 シリアルと通信を行うためにscreenコマンドを利用していましたが、一度つないだ後で切ってしまうとデバイスが認識しなくなる不具合が出たりなど、記事をご覧頂いた方々にも不自由な思いを共有していただいた(笑)ようです。今回は通信に別の手段を利用して接続を行う例をご紹介したいと思います。
 まず、ターミナルのソフトウェアがどいつもこいつも塩梅が良く無いから作ってしまいましたというjerminalを利用します。
 jerminalを入手し、圧縮を解いて展開されたフォルダを確認します。
 LOVE LOVE BSDのサイトにある「BSDの杜」にJerminalへのリンクがあります。現行の最新バージョンはv0.8096(v0.8095と表示されますが…)ですので、tar.gz圧縮が掛かったファイルをダウンロードしてください。

展開直後のフォルダの中身
 展開直後のフォルダの中身
 拡張子が.cや.hのアイコンが白アイコンでないのはXcodeをインストールしているためである
 .pl(Perl)や.sh(シェルスクリプト)はSmultronがインストールしてある場合のアイコン

 ここでターミナルやiTermなどの端末エミュレータアプリケーションを起動します。
 ファイルを展開したフォルダに移動し、makeコマンドでビルドします。ここではデスクトップ上に展開しました。作業ディレクトリがあるのであれば、そこに圧縮ファイルを展開した後、作業を行います。

nanghi$ ~/Desktop$ cd jerm-8096
nanghi$ ~/Desktop/jerm-8096$ make
cc -g -pipe -Wall -DJUPITER    -c -o jerm.o jerm.c
jerm.c: In function 'read_local':
jerm.c:1394: warning: pointer targets in initialization differ in signedness
jerm.c: In function 'server':
jerm.c:1512: warning: pointer targets in passing argument 3 of 'accept' differ in signedness
cc  -o jerm jerm.o -lm
cc -g -pipe -Wall -DJUPITER     tiocdtr.c  -lm  -o tiocdtr
nanghi$ ~/Desktop/jerm-8096$

 多少のウォーニングが出ますが気にせずにおきましょう(笑)。
 ビルドが完了するとオブジェクトファイルである本体のjermのオブジェクトであるjerm.oと IOCTLを受け持つtiocdtr.o、ビルドが成功していれば実行プログラムであるjermが出来上がっています。

make完了後のフォルダ
 make完了後のフォルダ
 jerm.o jerm tiocdtr(.oが見えない)のファイルが増えている
 実際の実行ファイルはjermのみ

 ここで必要なのはjerm本体のみですので、これをコマンド実行パスの通っているディレクトリにFinderのGUIでコピーしてしまいます。もちろんターミナルからcpコマンドでコピーしても結構です(笑)。Xcodeをインストールしている方は/Developer/usr/binにおいても良いでしょう。
 コマンドラインからjerminalを起動するのですが、一応通信条件などを設定して起動します。
 ここでデバイスファイルを指定しなければならないのですが、前回の記事を参照して頂き、/dev/cu.* に接続してできたデバイスファイルを指定して起動します。
screenコマンドでは/dev/tty.PL2303-* を指定していましたが、jerminalでは/dev/cu.PL2303-*を指定します。

nanghi$ jerm -b 9600 -p none -d 8 -s 1 -f none /dev/cu.PL2303-1B122
Jerminal v0.8096  Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007 candy
Type "Ctrl-M ~ ." to exit.
ispeed 9600 ospeed 9600
+IGNBRK -BRKINT -IGNPAR -PARMRK -INPCK -ISTRIP -INLCR -IGNCR -ICRNL -IXON -IXOFF -IXANY -IMAXBEL
-OPOST -ONLCR -OXTABS -ONOEOT
cs8 -CSTOPB +CREAD -PARENB -PARODD +HUPCL +CLOCAL -CCTS_OFLOW -CRTSCTS -CRTS_IFLOW -MDMBUF -ECHOKE -ECHOE -ECHO -ECHONL -ECHOPRT -ECHOCTL -ISIG -ICANON -ALTWERASE -IEXTEN
-EXTPROC -TOSTOP -FLUSHO -NOKERNINFO -PENDIN -NOFLSH
Password:

 ご覧の様になにやら色々と出てきますが、最終的にはログインプロンプトが表示されるはずです。
(この例ではYAMAHAのRT58iを指定したのでログインのユーザ名は出てきません)
 jerm [オプション] デバイスファイル名
 起動時のオプションは

 -b 9600 接続速度
 -p [none|even|odd] パリティなし、偶数、奇数
 -d [7|8] データビット長 7bit or 8bit
 -s [1|2|1.5] ストップビット長 1bit or 2bit or 1.5bit
 -f [none|x|hard] フロー制御なし、Xon/Xoff、ハードウェア制御
 -l file ログファイル

 辺りが一般的に使うオプション類でしょうか。
 判らなければ jerm -h でヘルプが表示されますし、添付のREADMEにも記載されていますので参照してみてください。
 作業を行い、シリアル端末を終了したい場合は特殊なキーコンピネーションストロークが必要です。
 jerminalの場合はCtrl-M(または Enter) ~(チルダ) .(ピリオド) の順にタイプします
 この順にキー入力しますとjerminalは終了し、端末エミュレータのコマンドプロンプトに戻ります。

余談:
 screenコマンドで繋げたは良いが、端末エミュレータのコマンドプロンプトに戻れないとお悩みの方、CTRL-Aの次にCTRL-Dをタイプしてみてください。screenコマンドの接続先がデタッチされ、端末エミュレータのプロンプトに戻ります。
 また、PL2303のドライバですが0.3.1までバージョンアップ、OS X 10.4以上に対応したユニバーサルバイナリとして提供されていますので、現状の不具合がある方はドライバのアップデートも合わせて行ってみると良いかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA