На черт. 11 показано влияние каждого из режимов работы на измерение и фиксатор логического устройства вывода.
Взаимосвязь между измерением и фиксатором
для различных режимов работы, показанная
для одного логического устройства ввода
РЕЖИМ ОПРОС
П
Режим СОБЫТИЕ
ри срабатывании фиксатора в прикладную программу посылается одно значение.Взаимодействие длится в течение единственного запроса
( Фиксатор )
Пусковой механизм не используется.
Значение посылается прикладной программе при каждом обращении к функции ОПРОСИТЬ. В течение одного взаимодействия функция ОПРОСИТЬ ' может вызываться многократно
Фиксатор
Значения данных ввода и идентификатор устройства при срабатывании фиксатора посылаются в единую очередь, откуда они удаляются путем обращения к функции ОЖИДАТЬ СОБЫТИЕ
Т епстые стрелки обозначают поток, входных данных
Тонкиестрепки обогяачают сигналы 'Убавления
Черт. 11
Измерение каждого класса устройств ввода
Измерение устройства ВВОДА ПОЗИЦИИ состоит из позиций в системе мировых координат и номера преобразования, нормирования. Обозначим эти данные через Р и N соответственно..
Тогда Р, преобразованное в НК с помощью N, находится в пределах окна станции, а также внутри окна, определенного преобразованием N. Кроме того, Р, преобразованное в НК с помощью N, не попадает ни в одно из полей вывода, имеющих приоритет более высокий, чем у поля вывода, заданного преобразованием нормирования с номером N.
Измерение устройства ВВОДА ПОСЛЕДОВАТЕЛЬНОСТИ ПОЗИЦИЙ состоит из последовательности в системе мировых координат и номера преобразования нормирования. Обозначим эти точки соответственно через Р1 ... Рп, а через N — номер преобразования. Тогда все точки Pi (l< = i< = n), преобразованные в НК с помощью N, находятся внутри окна станции, а также внутри окна, определенного преобразованием N, и, кроме того, не существует поля вывода с более высоким приоритетом, чем у поля вывода, заданного преобразованием нормирования с номером N, которое содержало бы все точки.
Заметим, что N может изменяться по мере того, как точки добавляются к последовательности позиций.
Обращение к любой из функций ЗАДАТЬ ОКНО, ЗАДАТЬ ПОЛЕ ВЫВОДА или ЗАДАТЬ ВХОДНОЙ ПРИОРИТЕТ ПОЛЯ ВЫВОДА может вызвать изменение Р (любого из Pi для последовательности позиций) или N, или обоих значений вместе, но при условии, что новые значения будут удовлетворять указанным выше ограничениям.
Применяется следующее правило: ни одно преобразование, имеющее приоритет меньший, чем преобразование с номером б, не может входить в состав измерения для устройства ВВОДА ПОЗИЦИИ или устройства ВВОДА ПОСЛЕДОВАТЕЛЬНОСТИ ПОЗИЦИЙ.
Примечание. При установке по умолчанию значений входных приоритетов полей вывода поле вывода, заданное преобразованием нормирования с номером Q, имеет наивысший приоритет.
Измерение УСТРОЙСТВА ВВОДА ЧИСЛА представляет значения входных данных, которые являются действительными числами. Каждое значение должно находиться между минимальным и максимальным значениями (возможно включительно), которые содержатся в блоке данных в таблице состояния графической станции.
Компонентами измерения УСТРОЙСТВА ВЫБОРА АЛЬТЕРНАТИВЫ являются значение ВЫБОР или НЕТ ВЫБОРА и целое число в диапазоне от 0 до некоторого максимального значения, которое зависит от устройства и указано в таблице описания станции. Если первый компонент имеет значение ВЫБОР, то целое число является правильным значением. Ввод данных от устройства ВЫБОРА АЛЬТЕРНАТИВЫ обычно производится при нажатии оператором кнопки (при этом цифровой идентификатор кнопки определяет измерение) или комбинации кнопок (измерение определяется на основе комбинаций нажатых кнопок).
Измерением устройства УКАЗАНИЯ являются значение УКАЗАНИЕ или НЕТ УКАЗАНИЯ, имя сегмента и идентификатор указания. Если первый компонент имеет значение УКАЗАНИЕ, тогда имя сегмента и идентификатор указания должны удовлетворять следующим правилам:
сегмент существует и его атрибуты ВИДИМОСТЬ и ЧУВСТВИТЕЛЬНОСТЬ К УКАЗАНИЮ установлены;
сегмент присутствует на графической станции, содержащей устройство УКАЗАНИЯ;
значение идентификатора указания является значением атрибута идентификатора указания, по крайней мере, одного из примитивов вывода сегмента. Это проверяется с использованием параметров отсечения, действующих в момент поступления примитива вывода на станцию. Часть примитива должна находиться внутри окна станции и, если отсечение было включено, часть примитива должна попадать внутрь прямоугольника отсечения примитива. Кроме того, примитив не должен быть полностью перекрыт примитивами сегментов с более высоким приоритетом.
Перед началом процесса измерения для устройства УКАЗАНИЯ начальное значение этого устройства проверяется на соответствие вышеописанным правилам. Если эти правила не выполняются, то в качестве состояния процесса измерения устанавливается значение НЕТ УКАЗАНИЯ-
Примечания:
Для некоторых графических станций ировёрка начальных значений'Устройства УКАЗАНИЕ на соответствие п. -2.8.4.7 (правило 3) в момент запуска процесса измерения может быть очень дорогой. В этих случаях начальные значения необходимо проверять только на соответствие правилам 1 и 2.
Измерение устройства УКАЗАНИЯ определено с использованием свойств примитивов вывода и сегментов. Устройства УКАЗАНИЯ существуют только в составе графических станций ввода-вывода.
Измерением устройства ВВОДА СТРОКИ являются значения входных данных, представляющих собой цепочки литер, максимальная длина которых зависит от устройства и определяется значением размера буфера, содержащимся в записи данных в таблице состояния станции.
Очередь событий и текущий отчет о событии
Очередь событий может содержать отчеты о событиях, а .может и не содержать их. Отчеты о событиях состоят из пар значений (идентификатор устройства, значение входных данных), полученных в результате срабатывания фиксатора.
Отчеты о событиях могут быть добавлены в очередь событий, если в результате действий оператора срабатывают фиксаторы логических устройств ввода, находящиеся в режиме СОБЫ-ТИЕ. Отчеты о событиях могут быть удалены из очереди событий путем обращения к функциям ОЖИДАТЬ СОБЫТИЕ, УДАЛИТЬ СОБЫТИЯ ОТ УСТРОЙСТВА и ЗАКРЫТЬ СТАНЦИЮ.
При срабатывании фиксатора, являющегося частью одного или нескольких логических устройств ввода, находящихся в режиме СОБЫТИЕ, результирующие отчеты о событиях включаются в очередь событий и отмечаются как группа отчетов об одновременных событиях. Отчет о событии добавляется в очередь событий только в том случае, если в ней есть место для всей группы отчетов об одновременных событиях.
Порядок отчетов об одновременных событиях внутри группы не определен.
Если в момент срабатывания фиксатора в очереди событий отсутствует место для всех отчетов об одновременных событиях, то возникает переполнение очереди событий. Информация о переполнении очереди событий не посылается прикладной программе немедленно. Она будет передана через механизм обработки ошибок при следующем обращении к любой из функций ЯГС, которая может удалять отчеты о событиях из очереди событий (ОЖИДАТЬ СОБЫТИЕ, УДАЛИТЬ СОБЫТИЯ ОТ УСТРОЙСТВА и ЗАКРЫТЬ СТАНЦИЮ). Очередь событий должна быть очищена перед добавлением в нее последующих отчетов о событиях. Между моментом обнаружения переполнения входной очереди и следующим обращением к функции ОЖИДАТЬ СОБЫТИЕ с пустой очередью событий при срабатывании фиксатора не генерируется никаких событий и, следовательно, не выдается никаких оповещений. Это позволяет прикладной программе определить, сколько событий было в очереди в момент возникновения переполнения, путем вызова функции ОЖИДАТЬ СОБЫТИЕ с нулевым временем ожидания.
'При поступлении сообщения об ошибке «переполнение очереди событий» фиксатор, вызвавший переполнение, отмечается путем помещения в список ошибочных состояний идентификатора какого-либо из логических устройств ввода, использующих этот фиксатор и находящихся в режиме СОБЫТИЕ во время обнаружения переполнения.
Если очередь событий не пуста, то функция ОЖИДАТЬ СОБЫТИЕ удаляет из очереди первый отчет о событии после копирования значения входных данных в текущий отчет о событии в таблице состояния ЯГС. Идентификатор станции, класс устройства ввода и номер устройства передаются прикладной программе непосредственно функцией ОЖИДАТЬ СОБЫТИЕ. Если очередь пуста, то функция ОЖИДАТЬ СОБЫТИЕ приостанавливает вычисления до тех пор, пока в очереди не появится отчет о событии, или не пройдет заданное время ожидания.
Прикладная программа может получить содержимое текущего отчета о событии путем вызова соответствующей функции ПОЛУЧИТЬ ДАННЫЕ <класс устройств ввода>.
Если после удаления отчета о событии в очереди событий остались другие отчеты из той же группы одновременных событий, что и удаленный отчет, то в таблице состояния ЯГС в поле «наличие одновременных событий» устанавливается значение ЕСТЬ. В противном случае устанавливается значение НЕТ.
При обращении к функции УДАЛИТЬ СОБЫТИЯ ОТ УСТРОЙСТВА из очереди событий удаляются все отчеты о событиях, поступившие от конкретного устройства. Функция ЗАКРЫТЬ СТАНЦИЮ удаляет из очереди событий все отчеты о событиях, поступивших от всех логических устройств ввода этой станции.
Если в момент обращения к функции УДАЛИТЬ СОБЫТИЯ ОТ УСТРОЙСТВА или к функции ЗАКРЫТЬ СТАНЦИЮ поле «признак наличия одновременных событий» имеет значение ЕСТЬ и в результате этого обращения удаляются все оставшиеся отчеты из группы отчетов об одновременных событиях из головной части очереди, то в указанном поле устанавливается значение НЕТ.
Инициализация устройств ввода
Для каждого класса устройств ввода существует функция ИНИЦИАЛИЗИРОВАТЬ, к которой можно обращаться только в том случае, если данное логическое устройство ввода находится в режиме ЗАПРОС. Эти функции передают устройству через таблицу состояния станции следующую информацию (если не было обращения к функции ИНИЦИАЛИЗИРОВАТЬ, то используются значения, установленные по умолчанию):
начальное значение, соответствующее данному классу. Если начальное значение задается с нарушением правил, то фиксируется ошибка и таблица состояния не изменяется;
тип подсказки и эха, который определяет способ вывода сообщения с подсказкой (если эхо включено) для логического устройства ввода. Тип подсказки и эха, зависящий от реализации (тип 1), должен быть определен для всех логических устройств ввода. Могут быть определены и другие, необязательные, типы подсказки и эха для каждого класса устройств ввода. Эти дополнительные типы перечисляются в соответствующей функции ИНИЦИАЛИЗИРОВАТЬ. Типы подсказки или эха с отрицательным номером зависят от реализации, а с номером большим, чем указано в функции, резервируются для будущей стандартизации;
область эха (левая, правая, нижняя и верхняя границы) в координатах устройства. В конкретных реализациях логических устройств ввода область эха может быть использована для определенных типов подсказки и эха для их отображения;
блок данных. Для некоторых классов устройств ввода блок данных содержит обязательные управляющие значения. Для некоторых типов подсказки и эха в рамках данного класса устройств ввода блок данных содержит также обязательные управляющие значения. Эти значения занимают точно определенные места в записи данных.
Если при инициализации устройства ввода используется блок данных, то значения, обязательные для данного класса, помещаются первыми. Вслед за ними идут значения, обязательные для данного типа подсказки и.эха (если они существуют). В зависимости от устройства и типа подсказки и эха блок данных может содержать и другую (дополнительную) информацию.
Когда логическое устройство ввода находится в режиме ЗАПРОС и следует обращение к функции ЗАПРОСИТЬ или когда логическое устройство переводится в режимы ОПРОС или СОБЫТИЕ, его измерение устанавливается равным начальному зна- ’ чению из таблицы состояния графической станции, если это значение допустимо для данного устройства. Если это не так, то измерение устанавливается равным значению, зависящему От устройства; исключением являются устройства УКАЗАНИЯ, для которых измерение устанавливается равным значению НЕТ УКАЗАНИЯ.
Тип подсказки и эха задает способ отображения, информирующий оператора о том, что устройство доступно, и эха, информирующего о текущем состоянии измерения. Функции, предназначенные для контроля режима работы устройств ввода ЗАДАТЬ РЕЖИМ <класс устройств ввода>, управляют также включением и выключением эха. Кроме того, должно быть обеспечено зависящее от реализации оповещение о срабатываниях фиксатора.
Следующие элементы в блоке данных являются обязательными: для устройства ввода последовательности позиций — размер буфера входных данных, выраженный в количестве точек; для устройства ВВОДА ЧИСЛА — нижняя и верхняя границы допустимых значений, для устройства ВВОДА СТРОКИ — размер буфера входных данных и начальная позиция курсора; для устройства ВЫБОРА АЛЬТЕРНАТИВЫ — значения типов подсказки и эха с номерами 2, 3, 4 и 5.
Интерфейс ЯГС с метафайлом
Для долговременного хранения графической информации в ЯГС предусмотрен интерфейс с последовательными файлами, называемыми метафайлами ЯГС. Они могут использоваться для: