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

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


РЕЖИМ ОПРОС


П

Режим СОБЫТИЕ

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

Взаимодействие длится в течение единственного запроса

( Фиксатор )

Пусковой механизм не используется.

Значение посылается прикладной программе при каждом обращении к функции ОПРОСИТЬ. В течение одно­го взаимодействия функция ОПРОСИТЬ ' может вызываться многократно

Фиксатор

Значения данных ввода и иденти­фикатор устройства при срабатывании фиксатора посылаются в единую оче­редь, откуда они удаляются путем обращения к функции ОЖИДАТЬ СОБЫТИЕ

Т епстые стрелки обозначают поток, входных данных

Тонкиестрепки обогяачают сигналы 'Убавления

Черт. 11

  1. Измерение каждого класса устройств ввода

    1. Измерение устройства ВВОДА ПОЗИЦИИ состоит из позиций в системе мировых координат и номера преобразования, нормирования. Обозначим эти данные через Р и N соответственно..

Тогда Р, преобразованное в НК с помощью N, находится в преде­лах окна станции, а также внутри окна, определенного преобразо­ванием N. Кроме того, Р, преобразованное в НК с помощью N, не попадает ни в одно из полей вывода, имеющих приоритет бо­лее высокий, чем у поля вывода, заданного преобразованием нор­мирования с номером N.

  1. Измерение устройства ВВОДА ПОСЛЕДОВАТЕЛЬ­НОСТИ ПОЗИЦИЙ состоит из последовательности в системе ми­ровых координат и номера преобразования нормирования. Обоз­начим эти точки соответственно через Р1 ... Рп, а через N — но­мер преобразования. Тогда все точки Pi (l< = i< = n), преобразо­ванные в НК с помощью N, находятся внутри окна станции, а также внутри окна, определенного преобразованием N, и, кроме того, не существует поля вывода с более высоким приоритетом, чем у поля вывода, заданного преобразованием нормирования с но­мером N, которое содержало бы все точки.

Заметим, что N может изменяться по мере того, как точки до­бавляются к последовательности позиций.

  1. Обращение к любой из функций ЗАДАТЬ ОКНО, ЗА­ДАТЬ ПОЛЕ ВЫВОДА или ЗАДАТЬ ВХОДНОЙ ПРИОРИТЕТ ПОЛЯ ВЫВОДА может вызвать изменение Р (любого из Pi для последовательности позиций) или N, или обоих значений вместе, но при условии, что новые значения будут удовлетворять указан­ным выше ограничениям.

  2. Применяется следующее правило: ни одно преобразо­вание, имеющее приоритет меньший, чем преобразование с номером б, не может входить в состав измерения для устройства ВВОДА ПОЗИЦИИ или устройства ВВОДА ПОСЛЕДОВАТЕЛЬНОСТИ ПОЗИЦИЙ.

Примечание. При установке по умолчанию значений входных приори­тетов полей вывода поле вывода, заданное преобразованием нормирования с номером Q, имеет наивысший приоритет.

  1. Измерение УСТРОЙСТВА ВВОДА ЧИСЛА представ­ляет значения входных данных, которые являются действительны­ми числами. Каждое значение должно находиться между мини­мальным и максимальным значениями (возможно включитель­но), которые содержатся в блоке данных в таблице состояния гра­фической станции.

  2. Компонентами измерения УСТРОЙСТВА ВЫБОРА АЛЬТЕРНАТИВЫ являются значение ВЫБОР или НЕТ ВЫБО­РА и целое число в диапазоне от 0 до некоторого максимального значения, которое зависит от устройства и указано в таблице опи­сания станции. Если первый компонент имеет значение ВЫБОР, то целое число является правильным значением. Ввод данных от уст­ройства ВЫБОРА АЛЬТЕРНАТИВЫ обычно производится при нажатии оператором кнопки (при этом цифровой идентификатор кнопки определяет измерение) или комбинации кнопок (измере­ние определяется на основе комбинаций нажатых кнопок).

  3. Измерением устройства УКАЗАНИЯ являются значение УКАЗАНИЕ или НЕТ УКАЗАНИЯ, имя сегмента и идентифика­тор указания. Если первый компонент имеет значение УКАЗА­НИЕ, тогда имя сегмента и идентификатор указания должны удов­летворять следующим правилам:

  1. сегмент существует и его атрибуты ВИДИМОСТЬ и ЧУВ­СТВИТЕЛЬНОСТЬ К УКАЗАНИЮ установлены;

  2. сегмент присутствует на графической станции, содержащей устройство УКАЗАНИЯ;

  3. значение идентификатора указания является значением атри­бута идентификатора указания, по крайней мере, одного из при­митивов вывода сегмента. Это проверяется с использованием па­раметров отсечения, действующих в момент поступления примити­ва вывода на станцию. Часть примитива должна находиться внут­ри окна станции и, если отсечение было включено, часть прими­тива должна попадать внутрь прямоугольника отсечения примити­ва. Кроме того, примитив не должен быть полностью перекрыт при­митивами сегментов с более высоким приоритетом.

  1. Перед началом процесса измерения для устройства УКАЗАНИЯ начальное значение этого устройства проверяется на соответствие вышеописанным правилам. Если эти правила не вы­полняются, то в качестве состояния процесса измерения устанав­ливается значение НЕТ УКАЗАНИЯ-

Примечания:

  1. Для некоторых графических станций ировёрка начальных значений'Уст­ройства УКАЗАНИЕ на соответствие п. -2.8.4.7 (правило 3) в момент запуска процесса измерения может быть очень дорогой. В этих случаях начальные зна­чения необходимо проверять только на соответствие правилам 1 и 2.

  2. Измерение устройства УКАЗАНИЯ определено с использованием свойств примитивов вывода и сегментов. Устройства УКАЗАНИЯ существуют только в составе графических станций ввода-вывода.

    1. Измерением устройства ВВОДА СТРОКИ являются значения входных данных, представляющих собой цепочки литер, максимальная длина которых зависит от устройства и определяет­ся значением размера буфера, содержащимся в записи данных в таблице состояния станции.

  1. Очередь событий и текущий отчет о событии

    1. Очередь событий может содержать отчеты о событиях, а .может и не содержать их. Отчеты о событиях состоят из пар зна­чений (идентификатор устройства, значение входных данных), по­лученных в результате срабатывания фиксатора.

Отчеты о событиях могут быть добавлены в очередь событий, если в результате действий оператора срабатывают фик­саторы логических устройств ввода, находящиеся в режиме СОБЫ-ТИЕ. Отчеты о событиях могут быть удалены из очереди событий путем обращения к функциям ОЖИДАТЬ СОБЫТИЕ, УДАЛИТЬ СОБЫТИЯ ОТ УСТРОЙСТВА и ЗАКРЫТЬ СТАНЦИЮ.

  1. При срабатывании фиксатора, являющегося частью од­ного или нескольких логических устройств ввода, находящихся в режиме СОБЫТИЕ, результирующие отчеты о событиях включа­ются в очередь событий и отмечаются как группа отчетов об одно­временных событиях. Отчет о событии добавляется в очередь со­бытий только в том случае, если в ней есть место для всей группы отчетов об одновременных событиях.

Порядок отчетов об одновременных событиях внутри группы не определен.

    1. Если в момент срабатывания фиксатора в очереди со­бытий отсутствует место для всех отчетов об одновременных со­бытиях, то возникает переполнение очереди событий. Информа­ция о переполнении очереди событий не посылается прикладной программе немедленно. Она будет передана через механизм обра­ботки ошибок при следующем обращении к любой из функций ЯГС, которая может удалять отчеты о событиях из очереди собы­тий (ОЖИДАТЬ СОБЫТИЕ, УДАЛИТЬ СОБЫТИЯ ОТ УСТРОЙ­СТВА и ЗАКРЫТЬ СТАНЦИЮ). Очередь событий должна быть очищена перед добавлением в нее последующих отчетов о собы­тиях. Между моментом обнаружения переполнения входной оче­реди и следующим обращением к функции ОЖИДАТЬ СОБЫТИЕ с пустой очередью событий при срабатывании фиксатора не гене­рируется никаких событий и, следовательно, не выдается никаких оповещений. Это позволяет прикладной программе определить, сколько событий было в очереди в момент возникновения перепол­нения, путем вызова функции ОЖИДАТЬ СОБЫТИЕ с нулевым временем ожидания.

    2. 'При поступлении сообщения об ошибке «переполнение очереди событий» фиксатор, вызвавший переполнение, отмечает­ся путем помещения в список ошибочных состояний идентифика­тора какого-либо из логических устройств ввода, использующих этот фиксатор и находящихся в режиме СОБЫТИЕ во время об­наружения переполнения.

    3. Если очередь событий не пуста, то функция ОЖИДАТЬ СОБЫТИЕ удаляет из очереди первый отчет о событии после копирования значения входных данных в текущий отчет о событии в таблице состояния ЯГС. Идентификатор станции, класс устрой­ства ввода и номер устройства передаются прикладной програм­ме непосредственно функцией ОЖИДАТЬ СОБЫТИЕ. Если оче­редь пуста, то функция ОЖИДАТЬ СОБЫТИЕ приостанавливает вычисления до тех пор, пока в очереди не появится отчет о собы­тии, или не пройдет заданное время ожидания.

    4. Прикладная программа может получить содержимое те­кущего отчета о событии путем вызова соответствующей функции ПОЛУЧИТЬ ДАННЫЕ <класс устройств ввода>.

    5. Если после удаления отчета о событии в очереди собы­тий остались другие отчеты из той же группы одновременных со­бытий, что и удаленный отчет, то в таблице состояния ЯГС в поле «наличие одновременных событий» устанавливается значение ЕСТЬ. В противном случае устанавливается значение НЕТ.

    6. При обращении к функции УДАЛИТЬ СОБЫТИЯ ОТ УСТРОЙСТВА из очереди событий удаляются все отчеты о собы­тиях, поступившие от конкретного устройства. Функция ЗАКРЫТЬ СТАНЦИЮ удаляет из очереди событий все отчеты о событиях, поступивших от всех логических устройств ввода этой станции.

    7. Если в момент обращения к функции УДАЛИТЬ СО­БЫТИЯ ОТ УСТРОЙСТВА или к функции ЗАКРЫТЬ СТАНЦИЮ поле «признак наличия одновременных событий» имеет значение ЕСТЬ и в результате этого обращения удаляются все оставшиеся отчеты из группы отчетов об одновременных событиях из головной части очереди, то в указанном поле устанавливается значение НЕТ.

  1. Инициализация устройств ввода

    1. Для каждого класса устройств ввода существует функ­ция ИНИЦИАЛИЗИРОВАТЬ, к которой можно обращаться толь­ко в том случае, если данное логическое устройство ввода находит­ся в режиме ЗАПРОС. Эти функции передают устройству через таблицу состояния станции следующую информацию (если не было обращения к функции ИНИЦИАЛИЗИРОВАТЬ, то исполь­зуются значения, установленные по умолчанию):

начальное значение, соответствующее данному классу. Если начальное значение задается с нарушением правил, то фиксиру­ется ошибка и таблица состояния не изменяется;

тип подсказки и эха, который определяет способ вывода сооб­щения с подсказкой (если эхо включено) для логического устрой­ства ввода. Тип подсказки и эха, зависящий от реализации (тип 1), должен быть определен для всех логических устройств ввода. Мо­гут быть определены и другие, необязательные, типы подсказки и эха для каждого класса устройств ввода. Эти дополнительные ти­пы перечисляются в соответствующей функции ИНИЦИАЛИЗИ­РОВАТЬ. Типы подсказки или эха с отрицательным номером за­висят от реализации, а с номером большим, чем указано в функ­ции, резервируются для будущей стандартизации;

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

блок данных. Для некоторых классов устройств ввода блок дан­ных содержит обязательные управляющие значения. Для некото­рых типов подсказки и эха в рамках данного класса устройств вво­да блок данных содержит также обязательные управляющие зна­чения. Эти значения занимают точно определенные места в запи­си данных.

    1. Если при инициализации устройства ввода использует­ся блок данных, то значения, обязательные для данного класса, помещаются первыми. Вслед за ними идут значения, обязательные для данного типа подсказки и.эха (если они существуют). В зави­симости от устройства и типа подсказки и эха блок данных может содержать и другую (дополнительную) информацию.

    2. Когда логическое устройство ввода находится в режиме ЗАПРОС и следует обращение к функции ЗАПРОСИТЬ или ког­да логическое устройство переводится в режимы ОПРОС или СО­БЫТИЕ, его измерение устанавливается равным начальному зна- ’ чению из таблицы состояния графической станции, если это зна­чение допустимо для данного устройства. Если это не так, то из­мерение устанавливается равным значению, зависящему От уст­ройства; исключением являются устройства УКАЗАНИЯ, для ко­торых измерение устанавливается равным значению НЕТ УКАЗА­НИЯ.

    3. Тип подсказки и эха задает способ отображения, инфор­мирующий оператора о том, что устройство доступно, и эха, ин­формирующего о текущем состоянии измерения. Функции, пред­назначенные для контроля режима работы устройств ввода ЗА­ДАТЬ РЕЖИМ <класс устройств ввода>, управляют также вклю­чением и выключением эха. Кроме того, должно быть обеспечено зависящее от реализации оповещение о срабатываниях фиксато­ра.

    4. Следующие элементы в блоке данных являются обяза­тельными: для устройства ввода последовательности позиций — размер буфера входных данных, выраженный в количестве точек; для устройства ВВОДА ЧИСЛА — нижняя и верхняя границы до­пустимых значений, для устройства ВВОДА СТРОКИ — размер буфера входных данных и начальная позиция курсора; для уст­ройства ВЫБОРА АЛЬТЕРНАТИВЫ — значения типов подсказ­ки и эха с номерами 2, 3, 4 и 5.

  1. Интерфейс ЯГС с метафайлом

    1. Для долговременного хранения графической информации в ЯГС предусмотрен интерфейс с последовательными файлами, на­зываемыми метафайлами ЯГС. Они могут использоваться для: