Spec-Zone.ru › Elisp

Работа с последовательными портами

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API