Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
QNX.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
596 Кб
Скачать
☆

Режим редактируемого ввода

Наиболее важный режим работы устройства управляется битом ICANON в управляющей структуре termios. Если этот управляющий бит установлен, то Менеджер устройств выполняет функции редактирования строки для принимаемых символов. Таким образом, только когда строка "введена" - обычно, когда получен символ перевода каретки (CR), - данные станут доступны для прикладных процессов. Такой режим работы называется редактируемым - от английского edited. Этот режим еще называют canonical (каноническим) и иногда cooked (приготовительным).

Большинство неполноэкранных приложений выполняются в редактируемом режиме. Типичным примером является командный интерпретатор (Shell).

Следующая таблица показывает, как Dev обрабатывает некоторые специальные управляющие символы, если соответствующие параметры установлены в структуре termios.

Dev выполнит:

Когда получит символ:

Сдвиг курсора на один символ влево

LEFT

Сдвиг курсора на один символ вправо

RIGHT

Сдвиг курсора в начало строки

HOME

Сдвиг курсора в конец строки

END

Удаление символа слева от курсора

ERASE

Удаление символа в текущей позиции курсора

DEL

Удаление всей строки ввода

KILL

Стирание текущей строки и восстановление предыдущей

UP

Стирание текущей строки и восстановление следующей

DOWN

Переключение между режимами вставки и замены

INS

Символы редактирования строки отличаются для различных терминалов. При запуске консоли QNX всегда определен полный набор редактирующих символов.

Если терминал подключен к QNX через последовательный канал, необходимо установить редактирующие символы, которые будут использоваться для данного конкретного терминала. Для этого вы можете использовать утилиту stty. Например, если терминал VT100 подключен к последовательному порту (/dev/ser1), то следующая команда извлечет соответствующие редактирующие символы из базы данных terminfo и применит их к /dev/ser1:

stty term=vt100 </dev/ser1

Если же к этому последовательному порту подключен модем, для связи с другой QNX системой с помощью утилиты qtalk, редактирующие символы следует установить так:

stty term=qnx </dev/ser1

Режим необрабатываемого ввода

Когда бит ICANON не установлен, то говорят, что устройство находится в необрабатываемом ("сыром", английский термин raw) режиме. В этом режиме не производится никакое редактирование ввода, а все получаемые данные немедленно становятся доступными для QNX-процессов.

Полноэкранные программы и коммуникационные программы являются примерами приложений, которые переводят устройство в сырой режим.

При чтении из сырого устройства приложение может задать условия, при которых будет удовлетворен запрос на ввод данных. Критерии, используемые при приеме сырых данных, базируются на двух параметрах структуры termios: MIN и TIME. Приложение может определить еще один дополнительный параметр при вызове функции dev_read(). Этот параметр, TIMEOUT, используется при написании протоколов или приложений реального времени. Учтите, что для функции read() TIMEOUT всегда 0.

Когда процесс запрашивает ввод n байт данных, эти три параметра определяют, когда должен быть удовлетворен запрос:

MIN

TIME

TIMEOUT

Описание:

0

0

0

Вернуть немедленно столько байт, сколько доступно в данный момент (но не более n байт)

M

0

0

Вернуть не более n байт только тогда, когда доступны, по меньшей мере, M байт

0

T

0

Вернуть не более n байт только тогда, когда доступен хотя бы один байт либо истекло T x .1 секунд

M

T

0

Вернуть не более n байт только тогда, либо когда будут доступны M байт, либо будет принят хотя бы один байт и интервал между любыми последовательно принятыми символами превысил T x .1 секунд

0

0

t

Зарезервировано

M

0

t

Вернуть не более n байт только тогда, когда доступны M байт либо истекло t x .1 секунд

0

T

t

Зарезервировано

M

T

t

Вернуть не более n байт только тогда, когда доступны M байт, либо истекло t x .1 секунд и не был получен ни один символ, либо был принят хотя бы один байт и интервал между любыми последовательно принятыми символами превысил T x .1 секунд

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]