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のシステムで利用できます。
新たなバッファー内でシリアルポートにたいする端末エミュレーターを開始する。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
を使用する。
この関数はプロセスとバッファーを作成する。引数はキーワード/引数ペアーで指定する。以下は意味のあるキーワードのリストで、最初の2つ(portとspeed)は必須:
:port port
これはシリアルポートの名前。UnixやGNUシステムでは/dev/ttyS0のようなファイル名、WindowsではCOM1、COM9より高位のポートでは\\.\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)
この関数はシリアルポート接続を設定する。引数はキーワード/引数ペアーで指定する。与えられない属性はそのプロセスのカレントの設定(関数process-contact
を通じて利用可能)から再初期化されるか、妥当なデフォルトにセットされる。以下の引数が定義されている:
:process process
:name name
:buffer buffer
:port port
設定するプロセスを識別するために、これらの引数のいずれかが与えられる。これらの引数が何も与えられなければカレントバッファーのプロセスが使用される。
:speed speed
ビット毎秒、別名ボーレート(baud
rate)によるシリアルポートのスピード。値には任意の数字が可能だが、ほとんどのシリアルポートは1200から115200の間の数少ない定義済みの値でのみ機能して、もっとも一般的な値は9600。speedがnil
なら、この関数は他のすべての引数を無視してそのポートを設定しない。これは接続を通じて送信された‘AT’コマンドでのみ設定可能な、Bluetooth/シリアル変換アダプターのような特殊なシリアルポートで有用かもしれない。speedにたいする値nil
はmake-serial-process
かserial-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
を呼び出す。