Emacs может взаимодействовать с последовательными портами. Для интерактивного использования
M-x serial-term открывает окно терминала. В программе на Lisp
make-serial-process создаёт объект процесса.
Последовательный порт можно настраивать во время выполнения, без необходимости
закрывать и заново открывать его. Функция serial-process-configure
позволяет изменять скорость, размер байта и другие параметры. В окне
терминала, созданном serial-term, вы можете щёлкнуть на
строке режима для настройки.
Последовательное соединение представлено объектом процесса, который можно
использовать аналогично дочернему или сетевому процессу. Вы можете отправлять и
получать данные, а также настраивать последовательный порт. Однако объект
последовательного процесса не имеет идентификатора процесса, и вы не можете
посылать ему сигналы, а коды состояния отличаются от других типов процессов.
delete-process для объекта процесса или kill-buffer для
буфера процесса закрывают соединение, но это не влияет на устройство,
подключённое к последовательному порту.
Функция process-type возвращает символ serial
для объекта процесса, представляющего соединение через последовательный порт.
Последовательные порты доступны в системах GNU/Linux, Unix и MS Windows.
Запускает эмулятор терминала для последовательного порта в новом буфере. порт — это имя последовательного порта для подключения. Например, это может быть /dev/ttyS0 в Unix. В MS Windows это может быть COM1 или \\.\COM10 (удваивайте обратную косую черту в строках Lisp).
скорость — это скорость последовательного порта в битах в секунду. 9600
— распространённое значение. Буфер находится в режиме Term; см. Режим Term в Руководстве GNU Emacs для команд, используемых в этом буфере.
Вы можете изменять скорость и конфигурацию в меню строки режима.
Если построчный-режим не равен nil, используется term-line-mode;
в противном случае используется term-raw-mode.
Эта функция создаёт процесс и буфер. Аргументы задаются как пары ключевое-слово/значение. Вот список значимых ключевых слов, причём первые два (порт и скорость) обязательны:
:port портЭто имя последовательного порта. В системах Unix и GNU это имя файла, например /dev/ttyS0. В Windows это может быть COM1 или \\.\COM10 для портов выше COM9 (удваивайте обратную косую черту в строках Lisp).
:speed скоростьСкорость последовательного порта в битах в секунду. Эта функция вызывает
serial-process-configure для установки скорости; см.
следующее описание этой функции для получения более подробной информации.
:name имяИмя процесса. Если имя не задано, в качестве имени процесса будет использоваться порт.
:buffer буферБуфер, связываемый с процессом. Значением может быть либо
буфер, либо строка, задающая имя буфера. Вывод процесса помещается в
конец этого буфера, если только вы не укажете поток вывода или функцию
фильтр для обработки вывода. Если буфер не задан, имя
буфера процесса берётся из значения ключевого слова :name.
:coding кодировкаЕсли кодировка — это символ, он задаёт систему кодирования, используемую
как для чтения, так и для записи для этого процесса. Если кодировка — это пара
(декодирование . кодирование), декодирование используется для
чтения, а кодирование — для записи. Если не указано,
по умолчанию системы кодирования определяются по самим данным.
:noquery флаг-запросаИнициализирует флаг запроса процесса значением флаг-запроса. См. Запрос перед выходом. Флаг по умолчанию равен nil, если не указано иное.
:stop логзначЗапускает процесс в остановленном состоянии, если логзнач не равен
nil. В остановленном состоянии последовательный процесс не
принимает входящие данные, но вы можете отправлять исходящие данные. Остановленное
состояние снимается continue-process и устанавливается
stop-process.
:filter фильтрУстанавливает фильтр в качестве фильтра процесса.
: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)
Эта функция настраивает соединение через последовательный порт. Аргументы
задаются как пары ключевое-слово/значение. Атрибуты, которые не указаны,
повторно инициализируются из текущей конфигурации процесса (доступной
через функцию process-contact) или устанавливаются в разумные значения
по умолчанию. Определены следующие аргументы:
:process процесс:name имя:buffer буфер:port портЛюбой из этих аргументов может быть задан для идентификации процесса, который подлежит настройке. Если ни один из этих аргументов не задан, используется процесс текущего буфера.
:speed скоростьСкорость последовательного порта в битах в секунду, также известная как скорость
передачи в бодах. Значение может быть любым числом, но большинство последовательных портов работают
только на нескольких определённых значениях от 1200 до 115200, при этом 9600 является
наиболее распространённым значением. Если скорость равна nil, функция игнорирует
все остальные аргументы и не настраивает порт. Это может быть
полезно для специальных последовательных портов, таких как преобразователи Bluetooth-в-последовательный,
которые можно настроить только с помощью команд ‘AT’, отправляемых через
соединение. Значение nil для скорости допустимо только для
соединений, которые уже были открыты предыдущим вызовом
make-serial-process или serial-term.
:bytesize размер-байтаКоличество бит на байт, которое может быть 7 или 8. Если размер-байта
не задан или равен nil, по умолчанию используется 8.
:parity чётностьЗначение может быть nil (не использовать чётность), символ
odd (использовать нечётную чётность) или символ even (использовать чётную
чётность). Если чётность не задана, по умолчанию чётность отсутствует.
:stopbits стоп-битыКоличество стоп-битов, используемых для завершения передачи
каждого байта. стоп-биты могут быть 1 или 2. Если стоп-биты не
заданы или равны nil, по умолчанию используется 1.
:flowcontrol управление-потокомТип управления потоком, используемый для этого соединения: либо
nil (не использовать управление потоком), символ hw (использовать аппаратное
управление потоком RTS/CTS) или символ sw (использовать программное
управление потоком XON/XOFF). Если управление-потоком не задано, по умолчанию
управление потоком отсутствует.
Внутренне make-serial-process вызывает
serial-process-configure для начальной настройки
последовательного порта.