3.2. Устройства ввода Помимо основной информации, которую пользователь вводит явно, показания могут содержать и дополнительную информацию, например о текущем состоянии устройства. Например, устройство типа указатель возвращает в качестве основного компонента показаний идентификатор того объекта, на который указывает пользователь. Если физическим устройством этого типа является мышь, то сигнал синхронизации вырабатывается после нажатия кнопки мыши (как правило, левой). При разработке прикладной программы следует предусматривать и такой вариант, когда пользователь нажал кнопку мыши, не указывая при этом ни на какой объект. Если показания будут состоять только из идентификатора объекта, то программист в этом случае столкнется с довольно сложной проблемой анализа некорректности показаний. Разрешить ее будет значительно проще, если в показания включить и еще один компонент, который будет нести информацию о том, указывает ли устройство в момент формирования сигнала синхронизации на какой-либо объект или нет, не вышел ли маркер устройства за пределы выделенного приложению окна и т.п.

3.2.4. Режимы ввода Помимо существующего множества типов логических устройств ввода, показания от этих устройств могут передаваться тремя разными способами. Эти способы (или режимы) отражают характер взаимодействия процесса съема показаний (или применительно к работе пользователя - ввода показаний) и формирования сигнала синхронизации. Обычно инициализация устройства ввода запускает и процесс съема показаний. Для инициализации может потребоваться вызов в явном виде определенной функции API или она может выполняться автоматически. В любом случае, как только будет запущен процесс съема показаний, соответствующая информация начинает поступать в буфер, хотя последний в это время и недоступен для прикладной программы. Например, положение мыши отслеживается непрерывно соответствующими средствами операционной системы, независимо от того, нуждается ли прикладная программа в этой информации или нет.

В режиме работы по запросу с синхронизацией от пользователя (request mode) показания устройства ввода не передаются в прикладную программу до тех пор, пока устройство не сформирует сигнал синхронизации. Этот режим ввода является стандартным для неграфических приложений, например типичной программы на С, которая требует ввода символов. В таких приложениях, встретив вызов функции ввода символов (например, scanf ()), программа приостанавливает выполнение и ожидает, пока пользователь не введет последовательность символов, пользуясь клавиатурой терминала. При этом в последовательности могут быть и символы забоя, а сама последовательность может иметь произвольную длину. По мере ввода данные помещаются в буфер клавиатуры, но содержимое последнего передается прикладной программе только после того, как будет нажата определенная клавиша (чаще всего <Enter>), которая сформирует сигнал синхронизации. Логическое устройство, например локатор, можно перемещать в требуемую позицию, а затем, нажав кнопку на этом устройстве, сформировать сигнал синхронизации. В результате в прикладную программу поступят координаты положения устройства именно в тот момент, когда была нажата кнопка. Схематически связь между сигналом синхронизации и показаниями в режиме работы по запросу показана на рис. 3.8.


⇐ Предыдущая| |Следующая ⇒