Next: , Previous: , Up: プロセス   [Contents][Index]


39.19 シリアルポートとの対話

Emacsはシリアルポートと対話できます。インタラクティブなM-x serial-termの使用にたいしては端末ウィンドウをオープンして、Lispプログラムmake-serial-processにたいしてはプロセスオブジェクトを作成します。

シリアルポートはクローズと再オープンなしで実行時に設定することができます。関数serial-process-configureによりスピード、バイトサイズ、およびその他のパラメーターを変更できます。serial-termで作成された端末ウィンドウではモードラインをクリックして設定を行うことができます。

シリアル接続はプロセスオブジェクトとして表されて、サブプロセスやネットワークプロセスと同様の方法で使用できます。これによりデータの送受信やシリアルポートの設定ができます。しかしシリアルプロセスオブジェクトにプロセスIDはありません。それにたいしてシグナルの送信はできずステータスコードは他のタイプのプロセスオブジェクトとは異なります。プロセスオブジェクトへのdelete-process、またはプロセスバッファーにたいするkill-bufferは接続をクローズしますが、そのシリアルポートに接続されたデバイスに影響はありません。

関数process-typeはシリアルポート接続を表すプロセスオブジェクトにたいするシンボルserialをリターンします。

シリアルポートはGNU/LinuxやUnix、そしてMS Windowsのシステムで利用できます。

Command: serial-term port speed &optional line-mode

新たなバッファー内でシリアルポートにたいする端末エミュレーターを開始する。portは接続先のシリアルポートの名前。たとえばUnixではこれは/dev/ttyS0のようになるだろう。MS WindowsではCOM1\\.\COM10のようになるかもしれない(Lisp文字列ではバックスラッシュは2重にすること)。

speedはビット毎秒でのシリアルポートのスピード。一般的な値は9600。そのバッファーはTermモードになる。このバッファーで使用するコマンドについてはTerm Mode in The GNU Emacs Manualを参照のこと。モードラインメニューからスピードと設定を変更できる。line-modeが非nilならterm-line-mode、それ以外はterm-raw-modeを使用する。

Function: make-serial-process &rest args

この関数はプロセスとバッファーを作成する。引数はキーワード/引数ペアーで指定する。以下は意味のあるキーワードのリストで、最初の2つ(portspeed)は必須:

:port port

これはシリアルポートの名前。UnixやGNUシステムでは/dev/ttyS0のようなファイル名、WindowsではCOM1COM9より高位のポートでは\\.\COM10のようになるかもしれない(Lisp文字列ではバックスラッシュは2重にすること)。

:speed speed

ビット毎秒でのシリアルポートのスピード。この関数はserial-process-configureを呼び出すことによりスピードを操作する。この関数の更なる詳細については以降のドキュメントを参照のこと。

:name name

そのプロセスの名前。nameが与えられなければportがプロセス名の役目も同様に果たす。

:buffer buffer

そのプロセスに関連付けられたバッファー。値はバッファー、またはそれがバッファーの名前であるような文字列かもしれない。出力を処理するために出力ストリームやフィルター関数を指定しなければ、プロセス出力はそのバッファーの終端に出力される。bufferが与えられなければ、そのプロセスバッファーの名前は:nameキーワードから取得される。

:coding coding

codingはこのプロセスにたいする読み書きに使用されるコーディングシステムを指定する。codingがコンス(decoding . encoding)なら読み取りにdecoding、書き込みにはencodingが使用される。指定されない場合のデフォルトはデータ自身から判断されるコーディングシステム。

:noquery query-flag

プロセスqueryフラグをquery-flagに初期化する。exit前の問い合わせを参照のこと。未指定の場合のフラグのデフォルトはnil

:stop bool

boolが非nilならstoppedの状態でプロセスを開始する。stopped状態ではシリアルプロセスは入力データを受け付けないが出力データの送信は可能。stopped状態のクリアーはcontinue-process、セットはstop-processで行う。

:filter filter

プロセスフィルターとしてfilterをインストールする。

:sentinel sentinel

プロセスセンチネルとしてsentinelをインストールする。

:plist plist

プロセスの初期plistとしてplistをインストールする。

:bytesize
:parity
:stopbits
:flowcontrol

これらはmake-serial-processが呼び出すserial-process-configureにより処理される。

後の設定により変更され得るオリジナルの引数リストは関数process-contactを通じて利用可能。

以下は例:

(make-serial-process :port "/dev/ttyS0" :speed 9600)
Function: serial-process-configure &rest args

この関数はシリアルポート接続を設定する。引数はキーワード/引数ペアーで指定する。与えられない属性はそのプロセスのカレントの設定(関数process-contactを通じて利用可能)から再初期化されるか、妥当なデフォルトにセットされる。以下の引数が定義されている:

:process process
:name name
:buffer buffer
:port port

設定するプロセスを識別するために、これらの引数のいずれかが与えられる。これらの引数が何も与えられなければカレントバッファーのプロセスが使用される。

:speed speed

ビット毎秒、別名ボーレート(baud rate)によるシリアルポートのスピード。値には任意の数字が可能だが、ほとんどのシリアルポートは1200から115200の間の数少ない定義済みの値でのみ機能して、もっとも一般的な値は9600。speednilなら、この関数は他のすべての引数を無視してそのポートを設定しない。これは接続を通じて送信された‘AT’コマンドでのみ設定可能な、Bluetooth/シリアル変換アダプターのような特殊なシリアルポートで有用かもしれない。speedにたいする値nilmake-serial-processserial-termの呼び出しにより、すでにオープン済みの接続にたいしてのみ有効。

:bytesize bytesize

ビット/バイトでの数値で7か8を指定できる。bytesizeが与えられない、またはnilの場合のデフォルトは8。

:parity parity

値にはnil (パリティなし)、シンボルodd (奇数パリティ)、シンボルeven (偶数パリティ)を指定できる。parityが与えられない場合のデフォルトはパリティなし。

:stopbits stopbits

各バイトの送信を終了するために使用されるストップビットの数値。stopbitsには1か2が可能。stopbitsが与えられない、またはnilの場合のデフォルトは1。

:flowcontrol flowcontrol

この接続にたいして使用するフロー制御のタイプでnil (フロー制御を使用しない)、シンボルhw (RTS/CTSハードウェアフロー制御)、シンボルsw (XON/XOFFソフトウェアフロー制御)のいずれか。flowcontrolが与えられない場合のデフォルトはフロー制御なし。

シリアルポートの初期設定のためにmake-serial-processは内部的にserial-process-configureを呼び出す。