● Jerminal version 0.8096 (FreeBSD, NetBSD, MacOSX, Linux, Cygwin 用シリアル通信プログラム) "9600 bps, 8bit data, 1 stop bit, parity even" などというアレな条件で接続する必要があったのですが、 標準のシリアル通信プログラムであるところの cu(1) や tip(1) (実体は一つ)が揃いも揃って使えないので、 急拠自作しました。 ● インストール $ zcat jerm-80??.tar.gz | tar xf - $ cd jerm-80?? # 80?? はバージョンに合わせてください $ make これでできた jerm を PATH の通ったディレクトリにコピーします。 以上。ただし /dev/cuaa? 等のアクセス権は持ってないとダメ。 大抵の人は Rockwell binary モード (ある種の GPS と通信可能なモード) は不要でしょう。 Rockwell binary モードをコンパイルしないようにできます。 $ make JUPITER_FLAGS= この場合 -j オプションは使えなくなります。 ● 使い方 (1) シリアルポート接続 jerm [デバイスオプション] [クライアントオプション] デバイス名 ○デバイスオプション -b speed 通信スピード(9600) -p [none|even|odd] パリティ(none) -d [7|8] データビット長(8) -s [1|2|1.5] ストップビット(1) -f [none|x|hard] フロー制御(none) -F Set FUCK MODE for TA-100KR/RA SYSTEMS CORP. パリティ等は、最初の一文字だけで指定できます。(例: -pn) デバイス名は FreeBSD /dev/cuaa0 等。 NetBSD /dev/dty00 等。(でいいのか??) Darwin /dev/cu.serial または /dev/tty.serial 等。 MacOS X の場合は も参考に。 Cygwin /dev/ttyS0 (com1) 等 ○クライアントオプション -x 16進ダンプモードで開始します。 -j Rockwell binary data を読みます。 -r rnRN 行末文字の変換方法を設定します。 rnRN は 4 文字からなる文字列で、それぞれ r: リモートからローカルへ来た CR の変換方法 n: リモートからローカルへ来た NL の変換方法 R: ローカルからリモートへ行く CR の変換方法 N: ローカルからリモートへ行く NL の変換方法 を示します。変換方法は以下の文字で指定します。 x = 受信した文字を捨てる。 r = CR に変換する。 n = NL に変換する。 t = CR NL に変換する。 例えばリモートの CR を CR NL に変換するには、 "tnrn" を指定します。 デフォルトは "rnrn" です。 (3) シリアル-TCP 変換サーバ jerm -D [-46T] [-P port] [デバイスオプション] デバイス名 TCP のポート port で TCP 接続を待ちます。 接続されるとオプションに従ってデバイスを開き、 クライアントとデバイス間の通信ができるようになります。 -T hosts_access(3) を有効にします。 -4 IPv4 アドレスを使用します。 -6 IPv6 アドレスを使用します。 (2) TCP による接続 jerm [-46] [-P port] [クライアントオプション] ホスト名 jerm -i [-46] [-P port] [クライアントオプション] [デバイスオプション] ホスト名 シリアルポートの代りに、TCP で接続します。 telnet みたいな感じ。 jerm -D で動いているサーバに接続すると、 サーバのシリアルポートと通信できます。 -i 標準入出力をデバイスオプションに従って初期化します。 この時標準入出力をシリアルポートにリダイレクトする ことで、シリアルデータの「中継」が可能になります。 (ブリッジモード) -4 IPv4 アドレスを使用します。 -6 IPv6 アドレスを使用します。 ○使用方 (1)(2)(3) に共通のオプション -l file ログファイル(常に追加なので、空にするには -z 指定) -z ログを空にします。 ○終了方法 Ctrl-M(または Enter) ~(チルダ) .(ピリオド) の順にタイプします。 -D 指定の時は Ctrl-C で止まります。 -i 指定の時は止まりません。kill -HUP を送ってください。 ○メニュー Ctrl-M(または Enter)の後に次の文字をタイプしてください。 ~? ヘルプ表示。 ~. 終了します。 ~~ ~ を送信します。 ~# break 信号を送信します。 ~x 16進ダンプモードを切り替えます。 ~>file ファイルの内容を送信します。 ・シリアル-TCP 変換サーバ HOST1 に 232C 機器がつながっている時、 HOST1 で jerm -D -P 9800 -b 4800 /dev/cuaa0 と動かしておき、 HOST2 で jerm -P 9800 HOST1 とすると HOST2 から、HOST1 につながっている機器と通信できます。 さらに jerm -i -P 9800 HOST1 -b 4800 < /dev/cuaa0 > /dev/cuaa0 とすると、HOST2 のシリアルポートに接続することで、 HOST1 の機器と通信可能になります。 たとえば 232C機器===WINDOWS のように使っているものを、間に TCP/IP ネットワークを挟んで 232C機器===HOST1 --------------- HOST2====WINDOWS のように使用することができます。 ・Rockwell binary data とは、ジュピター GPS のバイナリフォーマットを読む機能です。 付属の init.sh を使い、 $ sh init.sh bin でジュピターをバイナリモードに、 $ sh init.sh nmea で NMEA モードにできます。バイナリモードにして、 $ jerm -b 4800 -j /dev/cuaa0 とすれば、データが読めます。 ● tiocdtr (おまけプログラム) ER (DTR) 信号を制御します。 ○使い方 $ tiocdtr -f /dev/cuaa0 [コマンド ...] コマンド clear ER をクリアします。 set ER をセットします。 get 信号状態を表示します。 write "message" 文字列を送信します。 pause N N ミリ秒待ちます。 ● バグレポートなどは candy at kgc dot co dot jp まで ● 変更履歴 0.8086 - Cygwin 対応(!) 参考: getaddrinfo(3) ライブラリは、笠原氏のものを使用させて頂きました。 - 通信速度設定で、-b オプションの値をそのまま cfset[io]speed(3) に 渡していたのはまずいということで、速度 <==> B??? 変換をちゃんと やるようにした。 (今まで Linux では「B115200がヘッダで0010002なのを見て計算して コマンドラインに -b 4098 と入れる」とかやってたらしい。) Spasebo to 吉井様 - -D オプション指定時アドレスファミリデフオルトを AF_UNSPEC から AF_INET に変更。(ほんとは AF_UNSPEC のまま、IPv4 と IPv6 で listen(2) するようにしたいんだが……) Spasebo to 笹沼様 0.8095 - printf() の引数バグと warning 0.8094 - OSX Tiger 対応 0.8093 - マニュアルがついた。 Spasebo to kogule at opendarwin dot org. - 行末変換オプション -r が付いた。 Spasebo to hirose31 at t3 dot rim dot or dot jp. - hosts_access(3) 組み込み。 Spasebo to SHIROYAMA Takayuki - BREAK 送信を ~b から ~# に。(tip(1)互換に) - read_line() がバグってた。 0.8092 - linux でコンパイル可能にした。 Spasebo to: SHIROYAMA Takayuki MasaruYokoi - jerm.c 約 1500 行のうち 1/3 を占める Rockwell binary モードを分離可能にした。 /*- * Copyright (c) 2000, 2001, 2002, 2003, 2004 KANDA Toshihiro * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Id: README,v 1.19 2007/08/09 08:51:10 candy Exp $ */