Работа с последовательными портами
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.
- Команда: serial-term порт скорость &опционально режим-строки
-
Запустить эмулятор терминала для последовательного порта в новом буфере. порт — это имя последовательного порта для подключения. Например, в Unix это может быть /dev/ttyS0. В MS Windows это может быть COM1 или \\.\COM10 (двойные обратные косые черты в строках Lisp).
скорость — это скорость последовательного порта в битах в секунду. 9600 — это распространенное значение. Буфер находится в режиме терминала; см. Режим терминала в справочнике GNU Emacs для команд, используемых в этом буфере. Вы можете изменить скорость и конфигурацию в меню строки режима. Если режим-строки не
nil, используетсяterm-line-mode; в противном случае используетсяterm-raw-mode.
- Функция: make-serial-process &rest args
-
Эта функция создает процесс и буфер. Аргументы задаются в виде пар «ключ/аргумент». Вот список значимых ключей, при этом первые два (порт и скорость) являются обязательными:
:port port-
Это имя последовательного порта. В Unix и системах GNU это имя файла, например /dev/ttyS0. В Windows это может быть COM1 или \\.\COM10 для портов выше COM9 (двойные обратные косые черты в строках Lisp).
:speed speed-
Скорость последовательного порта в битах в секунду. Эта функция вызывает
serial-process-configure, чтобы обработать скорость; см. следующую документацию этой функции для получения дополнительной информации. :name name-
Имя процесса. Если имя не задано, порт также будет использоваться в качестве имени процесса.
:buffer buffer-
Буфер, который следует связать с процессом. Значение может быть буфером или строкой, которая называет буфер. Вывод процесса отображается в конце этого буфера, если вы не укажете поток вывода или функцию фильтра для обработки вывода. Если буфер не задан, имя буфера процесса берется из значения ключа
:name. :coding coding-
Если кодировка является символом, она указывает систему кодирования, используемую как для чтения, так и для записи для этого процесса. Если кодировка является консой
(decoding . encoding), декодирование используется для чтения, а кодирование используется для записи. Если не указано, по умолчанию используется определение систем кодирования из самих данных. :noquery query-flag-
Инициализировать флаг запроса процесса на флаг-запроса. См. Запрос перед выходом. Флаги по умолчанию —
nil, если не указано иное. :stop bool-
Запустить процесс в приостановленном состоянии, если bool не
nil. В приостановленном состоянии последовательный процесс не принимает входящие данные, но вы можете отправлять исходящие данные. Приостановленное состояние сбрасывается функциейcontinue-processи устанавливается функциейstop-process. :filter filter-
Установить фильтр в качестве фильтра процесса.
:sentinel sentinel-
Установить контроль в качестве контрольной точки процесса.
: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 является наиболее распространенным значением. Если скорость —
nil, функция игнорирует все остальные аргументы и не настраивает порт. Это может быть полезно для специальных последовательных портов, таких как преобразователи Bluetooth-в-последовательный, которые можно настроить только с помощью команд «AT», отправленных через подключение. Значениеnilдля скорость является допустимым только для подключений, которые были уже открыты предыдущим вызовом функцийmake-serial-processилиserial-term. :bytesize bytesize-
Количество битов на байт, которое может быть 7 или 8. Если размер-байта не задан или
nil, по умолчанию используется 8. :parity parity-
Значение может быть
nil(не использовать четность), символodd(использовать нечетную четность) или символeven(использовать четную четность). Если четность не задана, по умолчанию используется отсутствие четности. :stopbits stopbits-
Количество стоп-битов, используемых для завершения передачи каждого байта. стоп-биты могут быть 1 или 2. Если стоп-биты не заданы или
nil, по умолчанию используется 1. :flowcontrol flowcontrolТип управления потоком для этого соединения, который может быть
nil(не использовать управление потоком), символhw(использовать аппаратное управление потоком RTS/CTS) или символsw(использовать программное управление потоком XON/XOFF). Если управление-потоком не задано, по умолчанию используется отсутствие управления потоком.
Внутренне,
make-serial-processвызываетserial-process-configureдля первоначальной настройки последовательного порта.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Serial-Ports.html