Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
QNX 4 Руководство пользователя.doc
Скачиваний:
248
Добавлен:
02.05.2014
Размер:
1.02 Mб
Скачать

Глава 7. Подключение терминалов, принтеров и модемов

В этой главе...

Запуск драйверов устройств

Параллельные устройства

Последовательные устройства

7.1. Запуск драйверов устройств

Система QNX обычно содержит одно или более периферийных устройств.

Все эти устройства управляются процессом_Dev. Этот процесс должен

быть запущен первым, прежде чем будут запущены любые драйверы уст-

ройства.

/bin/Dev & Администратор Устройства

Как только Dev будет запущен, один или более драйверов уст-

ройства могут быть включены:

/bin/Dev.con & драйвер консольного устройства

/bin/Dev.par & драйвер устройства параллельного принтера

/bin/Dev.ser & драйвер последовательного устройства

/bin/Dev.pty & псевдо tty драйвер

Каждый из этих драйверов описывается дополнительно в "Utiliti-

es Reference".

7.2. Параллельные устройства

Параллельные порты обычно используются для взаимодействия с

параллельными принтерами. Кроме запуска драйвера Вам необходимо вы-

полнить еще некоторые действия до подключения принтера к машине.

7.2.1. Единственный параллельный порт

Если в машине используется только один параллельный порт, то

никакие параметры не нужны:

Dev.par &

Запущенный таким образом, параллельный драйвер создаст уст-

ройство, названное /dev/par, которое соответствует первому парал-

- 72 -

лельному порту, обнаруживаемому BIOS (LPT1).

7.2.2. Несколько параллельных портов

Если Ваша машина имеет более чем один параллельный порт, то

Вам необходимо запустить Dev.par для каждого дополнительного порта.

Вы должны обеспечить уникальное имя для дополнительных устройств.

Например:

Dev.par &

Dev.par -b 2 -N laser &

Эти команды создадут устройство, названное /dev/par на LPT1, и

второе устройство, названное /dev/laser на LPT2.

7.2.3. Буфера вывода

При наличии памяти Вы могли бы, определив большие буфера выво-

да, значительно сократить длительность цикла обработки при передаче

данных на Ваш принтер. Вот пример параллельного устройства, создан-

ного с буфером вывода в З0K:

Dev.par -O 30000 &

7.3. Последовательные устройства

7.3.1. Аппаратные адаптеры

Адреса ввода/вывода

Драйвер Dev.ser может поддерживать один или более последова-

тельных портов. Аппаратный интерфейс в компьютере состоит из уни-

версального асинхронного интерфейса для каждого последовательного

порта. Драйвер поддерживает любой или все из семейств последова-

тельных контроллеров 8250, 16450 или 16550. Каждый универсальный

асинхронный интерфейс использует восемь последовательных адресов в

массиве адресов ввода/вывода компьютера. Драйвер Dev.ser при запус-

ке получает информацию о массиве адресов ввода/вывода для каждого

универсального асинхронного интерфейса из аргументов командной

строки.

Аппаратное прерывание

- 73 -

Таким же важным, как адрес ввода/вывода, будет аппаратное пре-

рывание, генерируемое каждым универсальным асинхронным интерфейсом.

Большинство микро-ЭВМ обеспечивают различные аппаратные сигналы

прерывания на шине, обозначаемые от IRQ2 до IRQ15 (за исключением

прерываний 0, 1, 8, 9 и 13, которые используются непосредственно в

собственных платах Системы). Этими сигналами прерывания являются

логические сигналы, возбуждаемые высоким уровнем сигнала TTL в

ISA-шинах, которые означают, что Вы можете подключить только одну

адаптерную плату на каждый сигнал прерывания. Архитектура микрока-

нала (MCA-шина) не имеет такого ограничения. Платы последовательных

адаптеров бывают различных конфигураций. Адаптерные платы только с

одним последовательным портом естественно предлагают только ограни-

ченный выбор адресов ввода/вывода и аппаратного прерывания. Следую-

щая таблица представляет некоторые обычно используемые комбинации,

но мы рекомендуем Вам внимательно прочитать аппаратную документацию

на аппаратуру, чтобы выбрать комбинацию, соответствующую адаптерной

плате данного изготовителя:

-------------------------------------------------------------------

Имя Адрес Прерывание

-------------------------------------------------------------------

COM1 3F8 IRQ4

COM2 2F8 IRQ3

COM3 3E8 изменяется

COM4 2E8 изменяется

-------------------------------------------------------------------

Многопортовые последовательные адаптеры

Вы можете сконфигурировать многопортовые последовательные

адаптеры так, чтобы они соответствовали большому диапазону адресов

ввода/вывода. Эти адаптеры могут также дать Вам широкую возможность

выбора аппаратных прерываний. Большой выбор адресов ввода/вывода

находится в диапазоне от 280 до BF. Из-за ограниченного числа возмож-

ных аппаратных прерываний, эти платы будут преобразовывать набор

линий с сигналами прерывания от индивидуального универсального

асинхронного интерфейса посредством логического сложения (OR) в

единственное прерывание, выдаваемое в шину. QNX допускает совмест-

ное использование одного и того же прерывания для множества после-

довательных портов, т.к. Dev.ser проверит каждый универсальный

асинхронный интерфейс, который использует это прерывание.

Типичная инсталляция аппаратных средств

- 74 -

На рис.5 показана обычная конфигурация последовательных адап-

терных плат в системе QNX.

+------------------------------------------------------------------+

Ё Ё

Ё Шина Ё

Ё центрального Ё

Ё процессора Ё

Ё +--+ Адаптерные платы Последовательные Ё

Ё Ё Ё устройства Ё

Ё Ё Ё +------------+ Ё

Ё 3F8 Ё Ё-------Ё COM1 +------------------------ Ё

Ё IRO4 Ё Ё<--------+------------+ Ё

Ё Ё Ё Ё

Ё Ё Ё +------------+ Ё

Ё 2F8 Ё Ё-------Ё COM2 +------------------------ Ё

Ё IRO3 Ё Ё<--------+------------+ Ё

Ё Ё Ё +------------+ Ё

Ё 280 Ё Ё-------Ё Ё Ё

Ё Ё Ё Ё Ё Ё

Ё 288 Ё Ё-------Ё +------------------------ Ё

Ё Ё Ё Ё 8-портовая +------------------------ Ё

Ё . Ё Ё . Ё последова- +------------------------ Ё

Ё Ё Ё Ё тельная +------------------------ Ё

Ё . Ё Ё . Ё плата +------------------------ Ё

Ё Ё Ё Ё адаптера +------------------------ Ё

Ё . Ё Ё . Ё +------------------------ Ё

Ё Ё Ё Ё +------------------------ Ё

Ё Ё Ё Ё Ё Ё

Ё 2B8 Ё Ё-------Ё Ё Ё

Ё IRQ5 Ё Ё<--------Ё Ё Ё

Ё Ё Ё +------------+ Ё

Ё +--+ Ё

Ё Ё

+------------------------------------------------------------------+

Рис. 5

ВНИМАНИЕ. В конкретном случае каждый последовательный канал

должен иметь уникальный адрес ввода/вывода, и каждая

адаптерная плата должна использовать уникальное ап-

паратное прерывание.

7.3.2. Последовательный протокол RS-232

- 75 -

Протокол асинхронной связи RS-232C определяет электрический и

физический интерфейс между терминальным оборудованием пользователя

(терминалами) и оборудованием передачи данных (модемами).

Электрический интерфейс

На рис.6_6 показана развязка кабеля стыка RS-232.

+-----------------------------------------------------------+

Ё Ё

Ё +------+ +------+ Ё

Ё ------>Ё2 Tx Ё------> <-------Ё1 CD Ё<------- Ё

Ё Т <------Ё3 Rx Ё<------ Т <-------Ё2 Rx Ё<------- Ё

Ё Е ------>Ё4 RTSЁ------> М Е ------->Ё3 Tx Ё-------> М Ё

Ё Р <------Ё5 CTSЁ<------ О Р ------->Ё4 DTRЁ-------> О Ё

Ё М <------Ё6 DSRЁ<------ Д М --------Ё5 GndЁ-------- Д Ё

Ё И -------Ё7 GndЁ------- Е И <-------Ё6 DSRЁ<------- Е Ё

Ё Н <------Ё8 CD Ё<------ М Н ------->Ё7 RTSЁ-------> М Ё

Ё А ------>Ё20 DTRЁ------> А <-------Ё8 CTSЁ<------- Ё

Ё Л <------Ё22 RI Ё<------ Л <-------Ё9 RI Ё<------- Ё

Ё +------+ +------+ Ё

Ё Ё

Ё 25-штырьковый разъем 9-штырьковый разъем Ё

+-----------------------------------------------------------+

Рис. 6

Главный компьютер обычно рассматривается, как терминальное

устройство. Мы допускаем, что компьютер будет подключаться к моде-

му. Сигналы RS-232 имеют следующие названия:

Tx передача данных

Rx прием данных

RTS запрос для посылки

CTS очистка для посылки

DSR готовность набора данных

DTR готовность терминальных данных

CD обнаружение несущей

RI индикатор кольца

Последовательный протокол

- 76 -

Данные передаются асинхронно, используя битовый протокол, как

показано на рис.7.

+------------------------------------------------------------+

Ё Ё

Ё <------------------ Ё

Ё 1 +-------------------------------+ Mark Ё

Ё Ё 1 ЁD0ЁD1ЁD2ЁD3ЁD4ЁD5ЁD6ЁD7ЁParЁ 0 Ё

Ё 0 ----+ +-------------------------------- Space Ё

Ё Бит Биты Бит Бит Ё

Ё старта данных чет- оста- Ё

Ё ности нова Ё

+------------------------------------------------------------+

Рис. 7

Обычно, строка данных RS-232 находится в состоянии SPACE (0).

Переданный символ состоит из битов, передаваемых в следующем поряд-

ке: I) бит START (всегда 1)(младший бит - первый); 2) от 5 до 8 би-

тов данных (наименее значимый - первый бит); 3) бит четности (до-

полнительный); 4) один или более битов STOP (0). Длительность пере-

дачи каждого бита определена скоростью передачи в бодах, указываю-

щей количество битов в секунду, которое может быть передано. Приз-

нак четности - необязательный, но, если он имеется, то может быть

одним из следующих:

odd сумма битов данных плюс бит четности - нечетная

even сумма битов данных плюс бит четности - четная

mark всегда 1

space всегда 0

Управление сеансом

RS-232 использует линии DTR и DSR для управления сеансами свя-

зи. Терминал поднимает уровень сигнала в DTR, когда он включен и

доступен. Аналогично, модем поднимает уровень в DSR, когда он вклю-

чен и доступен (но необязательно подключен к удаленному модему).

Связь не допускается, если в линиях DTR или DSR уровень не поднят.

Терминал указывает, что он больше не передает данные, сбрасывая ли-

нию DTR, что заставляет большинство модемов отключать телефонную

линию, таким образом освобождая соединение. Модем указывает, что он

установил соединение, выставляя CD. Некоторые модемы также укажут,

что они обнаружили поступающий вызов, выставляя RI (но еще не отве-

тили).

- 77 -

Управление потоком данных

Линии RTS и CTS управляют потоком данных между терминалом и

модемом. Терминал выставляет RTS, когда он способен получать данные

по линии Rx. Аналогично, модем выставляет CTS, когда он может при-

нять данные по линии Tx.

7.3.3. Выбор конфигурации последовательных портов

Утилита stty позволяет установить четыре основных параметра,

которые определяют стык RS-232.

Биты данных

QNX поддерживает четыре размера для символа. Вы выбираете раз-

мер символа данных одной из следующих команд stty:

stty bits=5

stty bits=6

stty bits=7

stty bits=8 (значение по умолчанию)

Этот параметр определяет, сколько битов, следующих за старто-

вым битом, будет использоваться, чтобы сформировать минимальную

порцию для приема символа.

Биты останова

Данные можно передать, если за ними следуют один или два бита

останова. Два бита останова используются только для замедления всей

передачи данных так, чтобы удаленный конец мог поддерживать связь.

Используя stty, Вы определяете одну из следующих команд:

stty stopb=1 (значение по умолчанию)

stty stopb=2

Четность

Для того, чтобы заблокировать передачу битов четности и исклю-

чить проверку (в аппаратных средствах) принимаемых битов на чет-

ность, Вы задаете:

stty par=none (значение по умолчанию)

- 78 -

Если четность используется, Вы должны выдать одну из следую-

щих команд:

stty par=odd

stty par=even

stty par=mark

stty par=space

Скорость передачи в бодах

Вы можете определить скорость передачи в бодах опцией ba-

ud=number утилиты stty:

stty baud=number

QNX определяет по умолчанию скорость передачи, равную

9600 бод.

7.3.4. Соединение последовательных устройств

Быстродействующие ECC-модемы

Быстродействующие модемы с исправлением ошибок становятся

очень сложными устройствами - они работают наилучшим образом, когда

задействованы все сигналы аппаратного квитирования связи. Эти моде-

мы часто взаимодействуют с главным компьютером на фиксированной вы-

сокой скорости передачи (например, 38400 бод) и используют ли-

нии RTS/CTS квитирования связи, чтобы отрегулировать фактический

поток данных через линию связи. QNX идеально подходит для работы с

такими модемами. Простой многожильный кабель используется, чтобы

соединить модем и компьютер.

.

- 79 -

+----------------------------------------------------+

Ё +---------+ +-----------+ Ё

Ё Ё Ё ---------Gnd--------- Ё Ё Ё

Ё Ё Ё ----------Tx--------- Ё Ё Ё

Ё Ё Ё ----------Rx--------- Ё Ё Ё

Ё Ё Ё ---------RTS--------- Ё Высоко- Ё Ё

Ё Ё Ё ---------CTS--------- Ё скоростнойЁ Ё

Ё ЁКомпьютерЁ ---------DSR--------- Ё модем Ё Ё

Ё Ё Ё ---------DTR--------- Ё Ё Ё

Ё Ё Ё ----------CD--------- Ё Ё Ё

Ё Ё Ё ----------RI--------- Ё Ё Ё

Ё Ё Ё Ё Ё Ё

Ё +---------+ +-----------+ Ё

+----------------------------------------------------+

Рис.8.

Разводка кабеля для соединения компьютера и

быстродействующего модема

Используя утилиту stty, Вы можете установить аппаратное квити-

рование связи в обоих направлениях и заблокировать его:

stty +ihflow +ohflow +lkhflow </dev/ser1

Иначе, Вы могли бы установить и заблокировать аппаратное кви-

тирование связи при запуске Dev.ser:

Dev.ser -f 3f8, 4 &

Стандартные модемы

Более старые модемы - менее сложные устройства. После установ-

ления один раз канала связи на одну из скоростей передачи, поддер-

живаемых этим модемом, вся последующая связь через линию модема

происходит только с этой скоростью передачи. Другими словами, все

передаваемые данные просто пропускаются по линии модема с той же

самой скоростью, которая установлена. Хотя эти модемы естественно

не поддерживают аппаратное управление потоком данных, они не будут

функционировать правильно, пока все четыре линии управления потоком

данных не связаны. Вам не нужно использовать опции управления пото-

ком данных stty при использовании этих модемов. Для соединения мо-

дема и компьютера используется плоский многожильный кабель.

- 80 -

+------------------------------------------------------------+

Ё Ё

Ё +-------------+ +------------+ Ё

Ё Ё Ё --------Gnd-------- Ё Ё Ё

Ё Ё Ё ---------Tx-------- Ё Ё Ё

Ё Ё Ё ---------Rx-------- Ё Ё Ё

Ё Ё Компьютер Ё --------RTS-------- Ё СтандартныйЁ Ё

Ё Ё Ё --------CTS-------- Ё модем Ё Ё

Ё Ё Ё --------DSR-------- Ё Ё Ё

Ё Ё Ё --------DTR-------- Ё Ё Ё

Ё Ё Ё ---------CD-------- Ё Ё Ё

Ё Ё Ё ---------RI-------- Ё Ё Ё

Ё +-------------+ +------------+ Ё

Ё Ё

+------------------------------------------------------------+

Рис.9.

Разводка кабеля для соединения компьютера и стандартного модема

Последовательные принтеры

Последовательные принтеры - обычно двунаправленные устройства.

Данные передаются из компьютера на принтер, но, т.к. принтеры не

могут работать синхронно с главным компьютером, последовательные

принтеры часто используют программное управление потоком данных,

чтобы отрегулировать поток данных. Другими словами, они передают

символы СТАРТ-СИГНАЛ и СТОП-СИГНАЛ в компьютер. Некоторые принтеры

используют аппаратные линии подтверждения установления связи для

этой цели, а некоторые поддерживают обе формы управления потоком

данных. Для безопасности, Вам следует соединить все девять сигналь-

ных линий, хотя принтеры, которые используют только программное уп-

равление потоком данных могут функционировать так же хорошо с

трехпроводным кабелем (Rx, Tx и Gnd). Кроме того, т.к. принтеры

обычно включены в конфигурацию, как Терминальное Оборудование Поль-

зователя, подобно главному компьютеру, Вы можете использовать ка-

бель нуль-модема.

.

- 81 -

+-----------------------------------------------------------------+

Ё +--------+ +-------+ +-------+ Ё

Ё Ё Ё -------Gnd------- Ё-------Ё ----- Ё Ё Ё

Ё Ё Ё --------Tx------- Ё- -Ё ----- Ё Ё Ё

Ё Ё Ё --------Rx------- Ё- -Ё ----- Ё Ё Ё

Ё Ё Ё -------RTS------- Ё- -Ё ----- Ё Ё Ё

Ё Ё Ё -------CTS------- Ё- -Ё ----- Ё Ё Ё

Ё Ё Ё -------DSR------- Ё- -Ё ----- Ё Ё Ё

Ё Ё Ё -------DTR------- Ё- -Ё ----- Ё Ё Ё

Ё Ё Ё --------CD------- Ё-------Ё ----- Ё Ё Ё

Ё Ё Ё --------RI------- Ё-------Ё ----- Ё Ё Ё

Ё +--------+ +-------+ +-------+ Ё

Ё Компьютер Кабель ПоследовательныйЁ

Ё нуль-модема принтер Ё

Ё Ё

+-----------------------------------------------------------------+

Рис.10.

Разводка кабеля для соединения компьютера и посимвольного

печатающего устройства

--------------------------------------------------------------------

Если принтер использует: Вы используйте:

-------------------------------------------------------------------

программное управление потоком данных stty +osflow </dev/ser1

аппаратное управление потоком данных stty +ohflow </dev/ser1

программное и аппаратное управление

потоком данных обе опции stty

-------------------------------------------------------------------

Терминалы

Терминалы работают с управлением потоком данных или без управ-

ления и с фиксированной скоростью передачи. В отличие от принтеров

терминалы могут работать синхронно с главным компьютером на поддер-

живаемой скорости передачи. Таким образом, достаточно трехпроводно-

го кабеля, хотя Вы можете также использовать девятипроводной ка-

бель. Подобно главному компьютеру, терминалы включены в конфигура-

цию, как Терминальное Оборудование Пользователя, так что обычно

- 82 -

требуется кабель нуль-модема.

+--------------------------------------------------------------+

Ё +--------+ +---------+ +--------+ Ё

Ё Ё Ё Ё Ё Ё Ё Ё

Ё Ё Ё -------Gnd-------- Ё---------Ё ------ Ё Ё Ё

Ё Ё Ё --------Tx-------- Ё- -Ё ------ Ё Ё Ё

Ё Ё Ё --------Rx-------- Ё- -Ё ------ Ё Ё Ё

Ё Ё Ё -------RTS-------- Ё- -Ё ------ Ё Ё Ё

Ё Ё Ё -------CTS-------- Ё- -Ё ------ Ё Ё Ё

Ё Ё Ё -------DSR-------- Ё- -Ё ------ Ё Ё Ё

Ё Ё Ё -------DTR-------- Ё- -Ё ------ Ё Ё Ё

Ё Ё Ё --------CD-------- Ё---------Ё ------ Ё Ё Ё

Ё Ё Ё --------RI-------- Ё---------Ё ------ Ё Ё Ё

Ё +--------+ +---------+ +--------+ Ё

Ё Компьютер Кабель Терминал Ё

Ё нуль-модема Ё

+--------------------------------------------------------------+

Рис.11.

Разводка кабеля для соединения компьютера

и терминала

Если Ваш терминал поддерживает программное управление потоком

данных (например, VT100), то рекомендуется установить программное

управление и блокировки выходного потока данных:

stty +osflow +lksflow </dev/ser1

Как альтернативу, Вы могли бы использовать опцию -x при запус-

ке Dev.ser.

7.3.5. Выбор конфигурации последовательных линий для термина-

лов и пользователей

QNX может использоваться в качестве системы разделения времени

с полным набором функциональных возможностей. Многие пользователи

могут быть подключены к нескольким компьютерам в сети QNX через

устройства типа терминала или через модемные линии к терминалам на

удаленных вычислительных центрах. Предположим, что терминал/модем

правильно включен в конфигурацию, Вам нужно обеспечить в системе

механизм, позволяющий пользователям "входить в систему".

Простой пример

- 83 -

Рассмотрим терминал, правильно включенный в конфигурацию через

последовательный порт /dev/ser1. Самый простой способ разрешить

пользователю этого терминала войти в систему - использовать коман-

ду:

ontty /dev/ser1 login

Пользователь сможет войти в систему и выполнять команды. Одна-

ко после выхода из системы (то есть, как только пользователь завер-

шит этот сеанс работы), он не сможет снова зарегистрироваться.

Автоматизированный вход

Для того, чтобы автоматизировать процесс входа, Вы можете ис-

пользовать утилиту tinit. Эта утилита проследит за определенным

устройством, ожидая нажатия любой клавиши на этом терминале. Затем

login выполнится автоматически. Когда пользователь вошел в систему

и затем вышел снова, tinit будет ждать нажатия другой клавиши. Для

запуска login от нажатия клавиш данных на двух последовательных

устройствах, названных /dev/ser1 и /dev/ser2, Вы можете использо-

вать следующую команду:

tinit -T /dev/ser1 /dev/ser2 &

Допустим, взамен Вы захотели, чтобы login автоматически выпол-

нялись без ожидания нажатия клавиши пользователем. Вам следует ис-

пользовать опцию -t:

tinit -t /dev/ser1 /dev/ser2 &

Запуск заданных приложений

Вы не должны всегда запускать login. Вы можете определить лю-

бую программу или даже определить разные программы на каждое уст-

ройство. В некоторых средах "закрытое" приложение всегда ожидается

на данном терминале. Для получения дополнительной информации, смот-

рите tinit в "Utilities Reference".

Доступ к модему

Довольно легко компоновать аппаратные средства типа терминала,

т.к. все возможные значения параметров - известны. Модемы, с другой

стороны, создают особые проблемы, т.к. они могут иметь разные кон-

- 84 -

фигурации в разное время. Например, большинство модемов ответят на

вызов по одной из нескольких скоростей (300, 1200, 2400 и т.п.). Вы

не можете всегда знать заранее скорость передачи поступающего вызо-

ва. Специальная утилита, названная modem, предназначена для работы

с модемами. Используемая с tinit, modem может обеспечить отличные

коммутируемые возможности. Типичная коммутируемая система, исполь-

зующая QNX, могла бы иметь различные последовательные порты

(/dev/ser1, /dev/ser2 и т.п.) и могла бы использовать следующую ко-

манду, чтобы разрешить подключаемый доступ через Hayes-совместимые

модемы:

tinit -c modem -t /dev/ser1 /dev/ser2 &

Чтобы подключить модем, который использует фиксированную ско-

рость передачи, Вы могли бы использовать следующую команду:

tinit -c "модем -b 38400 -L" -t /dev/ser1 &

Утилита tinit автоматически запустит modem для каждой из пос-

ледовательных линий.

Когда связь установлена, утилита modem:

- ответит на телефонный звонок;

- определит и установит соответствующую скорость передачи;

- выполнит login.

Когда пользователь или завершает сеанс или отключается, tinit

снова запустит утилиту modem, которая будет ждать другого вызова.

Для получения дополнительной информации смотрите modem в "Utilities

Reference".

Следует отметить, что Вам не нужно выделять последовательную

линию для поступающих вызовов. Эмулятор терминала qtalk проверяет

свободна ли линия и, если так, подключит modem, позволяя принять

поступающий вызов. Когда сеанс qtalk будет завершен, управление бу-

дет снова передано утилите modem, которая будет ждать прихода пос-

тупающих вызовов. Для получения дополнительной информации смотрите

qtalk в "Utilities Reference".

База данных terminfo

Полноэкранные программы в QNX имеют доступ к базе данных опи-

сания терминалов, известной, как база данных terminfo, которая вы-

полнена, как набор файлов в каталоге /usr/lib/terminfo. Для каждого

терминала, поддерживаемого в QNX, существует отдельный файл. Т.к.

эти файлы имеют промышленный стандартный формат, они могут быть

распространены между различными системами UNIX. Ваша система QNX

- 85 -

должна будет загрузить некоторые из этих файлов со следующими име-

нами:

/usr/lib/terminfo/q/qnx (консоль QNX)

/usr/lib/terminfo/v/vt100 (терминал VT100)

Программа QNX получает доступ к соответствующему файлу в базе

данных при условии, что внешняя переменная TERM была определена.

Если у Вас нет terminfo файла для Вашего типа терминала, то Вы

можете попытаться сделать следующее:

- получить доступ к Quantum Update Service (QUICS) и загрузить

terminfo файл (если он существует);

- получить доступ к другой системе UNIX и подыскать подходящий

terminfo файл;

- использовать infocmp и tic, чтобы настроить Ваш terminfo

файл в соответствии с информацией из справочника для Вашего терми-

нала.

Определение типа терминала

Полноэкранные программы используют внешнюю переменную TERM,

чтобы определить, какой тип терминала в настоящее время использует-

ся. Они также автоматически контролируют их работу, чтобы правильно

отображать данные и интерпретировать клавиши для этого типа терми-

нала. Это будет работать при условии, что внешняя переменная TERM

правильно определена. Для аппаратных средств типа терминалов, рабо-

тающих под управлением закрытых приложений, Вы можете проинициали-

зировать эту внешнюю переменную, когда приложение запускается. Нап-

ример:

TERM=vt100 ontty /dev/ser1 custom_application

Однако, вход пользователей в систему через login и tinit

представляет специальную проблему. Если тип терминала известен,

тогда с помощью tinit можно определить эту внешнюю переменную перед

запуском login:

tinit -c login -t /dev/ser1 TERM=vt100 &

Если Вы ограничиваете коммутируемый доступ только к конкретно-

му типу терминала, тогда пользователи модема должны выполнить спе-

циальную программу, чтобы запросить пользователя о типе его терми-

нала. В QNX такая программа предусмотрена, она имеет имя termdef.

Эта программа отобразит все типы терминалов, поддерживаемые в этой

- 86 -

системе и предложит пользователю выбрать один из них. После выбора

типа терминала termdef соответственно установит внешнюю переменную

TERM, затем выполнит login.

tinit -c "modem -c termdef" -t /dev/ser1 &

7.3.6. Проблемы тестирования последовательных устройств

Следующая таблица предлагает Вам выполнить действия, если Вы

встретите некоторые общие проблемы при подключении последовательных

устройств.

-------------------------------------------------------------------

Проблема Возможная причина Средство

-------------------------------------------------------------------

Не распознаются Неправильно установ- Используйте утилиту stty

символы данных лены скорость передачи для установки правильной

или признак четности скорости передачи и/или

признака четности

-------------------------------------------------------------------

Некоторые символы Неправильно установлен Попробуйте изменить приз-

отображаются хоро- признак четности нак четности, используя

шо, некоторые нет утилиту stty

-------------------------------------------------------------------

Нельзя ни передать, Неисправен кабель Проверьте кабель, если

ни принять данные нуль-модем потребуется, используйте

Неисправны порты Проверьте аппаратные установки и параметры Dev.ser

ввода/вывода

Конфликт прерываний Измените прерывание или адаптерную плату

-------------------------------------------------------------------

Данные принимаются Конфликт прерываний Проверьте аппаратные пре-

и передаются, толь- рывания и параметры за-

ко когда использу- пуска Dev.ser. Убедитесь,

ется другой после- что два последовательных

довательный порт адаптера не используют

одно и то же IRQ

-------------------------------------------------------------------

Случайные потери Поддерживается управ- Определите тип управления

данных лением потоком, но потоком, поддерживаемого

оно отключено устройством и включите

его утилитой stty (ihf-

low, ohflow, isflow и

- 87 -

osflow)

Управление потоком Уменьшите скорость передачи и/или увеличьте коли-

не поддерживается чество стоп-битов; если теряются только принимае-

мые данные, увеличьте входной буфер для Dev.ser

(опция -I)

Проблемы с кабелем Убедитесь, что кабель хорошо заземлен и не слиш-

ком длинный. Также убедитесь, что все провода

стыка RS-232 подключены.

-------------------------------------------------------------------

.

- 88 -