GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Serial-Ports.html ・ emacs-doc.conao3.com

41.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システムで利用可能です。

コマンド: serial-term port speed &optional line-mode

新しいバッファでシリアルポート用のターミナルエミュレータを起動します。port は接続先のシリアルポート名です。例えば、Unix では /dev/ttyS0 となります。MS Windows では COM1 や \\.\COM10(Lisp 文字列におけるバックスラッシュを2つにしたもの)となります。

speed はシリアルポートの速度(ビット毎秒)です。9600 は一般的な値です。バッファは Term モードです。そのバッファで使用するコマンドについては、The GNU Emacs Manual の Term Mode を参照してください。速度と設定は、モードラインメニューで変更できます。line-mode が nil 以外の場合は term-line-mode が、それ以外の場合は term-raw-mode が使用されます。

関数: make-serial-process &rest args

この関数は、プロセスとバッファを作成します。引数はキーワードと引数のペアとして指定します。意味のあるキーワードの一覧を以下に示します。なお、最初の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-flag に初期化します。終了前のクエリ を参照してください。フラグが指定されていない場合、デフォルト値は nil となります。

:stop bool

bool が nil 以外の場合、停止状態でプロセスを開始します。停止状態では、シリアルプロセスは受信データを受け付けませんが、送信データは送信可能です。停止状態は continue-process によって解除され、stop-process によって設定されます。

:filter filter

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

:sentinel sentinel

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

:plist plist

プロセスの初期plistとしてplistをインストールしてください。

:bytesize
:parity
:stopbits
:flowcontrol

これらはserial-process-configureで処理され、make-serial-processから呼び出されます。

後の設定によって変更された可能性のある元の引数リストは、関数 process-contact を通じて取得できます。

以下に例を示します。

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

この関数は、シリアルポート接続を設定します。引数はキーワードと引数のペアとして指定します。指定されなかった属性は、プロセスの現在の設定(関数 process-contact で取得可能)から再初期化されるか、妥当なデフォルト値に設定されます。以下の引数が定義されています:

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

設定対象のプロセスを特定するには、これらの引数のいずれかを指定できます。いずれの引数も指定されない場合は、現在のバッファのプロセスが使用されます。

:speed speed

シリアルポートの速度(ビット毎秒)、別名ボーレート。値は任意の数値を指定できますが、ほとんどのシリアルポートは1200から115200までの定義済みの少数の値でのみ動作し、9600が最も一般的な値です。speedがnilの場合、この関数は他のすべての引数を無視し、ポートの設定を行いません。これは、接続経由で送信される‘AT’コマンドを通じてのみ設定可能なBluetooth-to-シリアルコンバータなどの特殊なシリアルポートにおいて有用です。speedに対するnilの値は、以前にmake-serial-processまたはserial-termを呼び出して既に開かれた接続に対してのみ有効です。

:bytesize bytesize

1バイトあたりのビット数で、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 を呼び出します。