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

В состав программы по работе с мышью входят следующие операции:

1) проверка инсталляции драйвера "мыши";

2) задание вида и формы курсора манипулятора;

3) определение границ перемещения курсора по экрану;

4) описание чувствительности курсора, соответствующей числу микки,
приходящихся на один пиксел экрана по горизонтали и вертикали;

5) установка порога удвоенной скорости курсора;

6) включение курсора манипулятора;

7) установка курсора в начальную позицию экрана.

Все приведенные операции осуществляются с прерыванием 33h. Рассмотрим их.

Проверку инсталляции драйвера "мыши" осуществляет функция

АХ = 0000 h

В результате ее выполнения в регистр АХ заносится 0000h, если драйвер мыши отсутствует или FFFFh если мышь готова к работе.

В регистре ВХ устанавливается число кнопок манипулятора: 0002h - две кнопки, 0003h- три кнопки и 0000h- не две кнопки.

Соответствующая программа может иметь следующий вид

-АХ = О,
geninterrupt (0 x 33);

if (-AX = = 0) puts (“отсутствует драйвер "мыши"!”);

else puts ("мышь" готова").

Задание вида и формы курсора осуществляется отдельно для текстового режима и для графического

В текстовом режиме форма курсора задается функцией

АX = OOOA h

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

В регистр BX заносится 00 или 01 в зависимости от того, используется программируемый или "жесткий" курсор. "Жесткий" курсор - это курсор
совпадающий с обычным курсором телеэкрана, занимающим несколько строк
в пределах знакоместа. При этом в регистре СХ устанавливается номер
верхней скэн-линии, а в регистре ДХ - номер нижней.

Например, если в СХ занести значение 0, а в ДХ - значение 7h,
то курсор представится в виде прямоугольника размером 8х8 бит. Если принять СХ=7h, ДХ=7h, то курсор примет виц штриха, лежащего
в основании названного выше прямоугольника или в основании знакоместа.

Программируемый курсор создается так. В регистр СХ помещается
AND- маска курсора, а в регистр ДХ -XОR, -маска. Например, если необходимо запрограммировать курсор в виде штриха в основании знакоместа, то используется его АSСII-код, равный 5F. Запишем

AND-маску=0000h и XOR-маску=хх5Fh

Знаки XX в XOR-маске определяют атрибут символа курсора.

Отметим, что формирование курсора на экране осуществляется так.
Вначале происходит операция исключающего ИЛИ между XOR-маской и
АND-маской курсора:

Z=(XOR- маска XOR AND-маска)

Полученный результат побитово умножается с состоянием экрана в данном знакоместе:
состояние экрана= состояние экрана AND Z.

Программа создания жесткого курсора имеет вид:

-AX = OX0A;

-ВХ = 0Х01;

-СХ = 0Х07;

-ДХ = 0Х07;

geninterrupt (ox33),

а программируемого для данного примера вид:

- АХ = 0Х000A;

- BХ = 0Х0000;

- АХ = 0Х0000;

- ДХ = 0Х335F;

geninterrupt (0Х33);

В данном случае байт атрибута курсора равен XX = 33.

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

Для этого задается две маски: АND, - (маска экрана) и XOR-маска
(маска курсора).

Побитовые операции по формированию цвета пиксела на экране представлены в табл.83

Таблица 83

Бит АND маски Бит Х0R маски Цвет пиксела на экране
0 I I 0 I 0 I Цвет фона Белый цвет Текущий цвет пиксела Побитовая инверсия текущего цвета пиксела

Особенностью графического курсора является наличие так называемого горячего пятна (hotspot) в относительных координатах за точку отсчета которых принят верхний левый угол прямоугольника 16 х 16 пикселов. Горячее пятно – это пиксел, на который указывает в данный момент графический курсор.

Графический курсор описывается функцией

АХ = 0009h

прерывания 33h

При этом в регистре ВХ указывается относительный номер столбца
горячего пятна, а в регистре СХ - номер соответствующей строки.

ES:DX - адрес (указатель) на 32 слова масок. Первые 16 слов образуют AND -маску, а. остальные XOR-маску курсора.

В качестве примера рассмотрим XOR-маску курсора в двоичной системе счисления.

1000 0000 0000 0000

0100 0000 0000 0000

0110 0000 0000 0000

0011 0000 0000 0000

0011 1000 0000 0000

0011 1100 0000 0000

0011 1110 0000 0000

0011 1111 0000 0000

0001 1111 1000 0000

0001 1111 1100 0000

0000 1111 1110 0000

0000 0111 1111 0000

0000 1111 1111 1000

0000 0111 1111 1100

0000 0111 1111 1110

0000 0011 1111 1111

Этой маске в шестнадцатиричной системе счисления соответствует
КОД

0Х8000; 0Х4000; 0Х3000; 0Х3800;

0Х3800; 0Х3600; 0Х3E00; 0X1F00;

0X1F80; 00FC0; 0X0FE0; 0Х07F0;

0X0FF8; 0X07FC; 0X07FE; 0X03FF;

Изображается ХОR - маска на фоне АNД - маски (белый фон).

0XFFFF 0XFFFF 0XFFFF 0XFFFF

0XFFFF 0XFFFF 0XFFFF 0XFFFF

0XFFFF 0XFFFF 0XFFFF 0XFFFF

0XFFFF 0XFFFF 0XFFFF 0XFFFF

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

Для получения белого курсора на текущем фоне AND-маска является инвертированием слов ХОR - маски: там, где в XOR - маске стоят единицы, в АNД - маске стоят нули.

Соответствующая АNД - маска будет иметь вид.

0Х7FFF 0XBFFF 0XCFFF 0XC7FF

0ХС'7FF 0XC3FF 0XC1FF 0XE0FF

0XE07F 0XF03F 0XF01F 0XF80F

OXF007 0XF803 0XF801 0XFC00

Приведенные AND - и ХОR - маски являются элементами массива, типа
static unsigned sereen_and_cursor_masks [ ] = {…}

Программа, реализующая установку курсора может иметь следующий вид

-AX = 0X009

-ВХ = hot_spot_column;

-СХ = hot_spot_row

-ES = FP_SEG(screen_and_cursor_masks);

-ДХ = FP_OFF(screen_and_cursor_masks);

geninterrupt (0X33)

где hot_spot_column, hot_spot_row - координаты Х,У горячего пятна.

Границы перемещения курсора определяются функциями АХ = 0007 и

AX = 0008 прерывания 33h. Первой функцией устанавливаются границы перемещения по вертикали, а второй - по горизонтали. В регистрах СХ и ДХ устанавливаются минимальная и максимальная границы перемещения курсора. Соответствующие программы могут иметь следующий вид. Для горизонтальных границ

- DX = 7;

-СХ = start_hor_movement;

-ДХ = end_hor_movement;

geninterrupt (0X33)

Для вертикальных границ

- AX = 8;

-СХ = start_ver_movement;

-ДХ = end_ver_movement;

geninterrupt (0X33)

Приведенные программы могут составить соответствующие Си – функции назначения границ передвижения курсора. По умолчанию курсору предоставляется весь экран.

Чувствительность курсора устанавливается функцией АX = 000Fh.
В регистрах СХ и ДХ устанавливаются значения чувствительности в микки на 8 пикселов как по горизонтали так и по вертикали. Например, программа, устанавливающая чувствительность один микки на пиксел может иметь вид:

-АХ = 0Х000F;

-CX = 8;

-ДX = 8;

geninterrupt (0X33)

Установка порога удвоенной скорости осуществляется функцией АХ = 0013h. При этом в регистре записывается порог удвоенной скорости. По умолчанию он равен 64 микки/с. В данной программе используется лишь три инструкции

-АХ = 0Х0013;

-ДХ = 0Х0032,

geninterrupt (0X33);

В данном примере порог удвоенной скорости принят равным 32 микки/с. После его достижения скорость движения мыши на экране удваивается.

Текущие установки курсора мыши определяются функцией АХ = 001Bh. В регистре BХ можно прочитать чувствительность по горизонтали, в СХ -чувствительность по вертикали, а в ДХ - порог удвоенной скорости.

Включение курсора осуществляет функция АХ = 0001 прерывания 33h, а выключение функции АХ = 0002 того же прерывания.

Рекомендуются следующие макро для включения и выключения курсора.
# define CURSOR_ON () _AX=1; geninterrupt (0X33);

# define CURSOR_OFF () _AX=1; geninterrupt (0X33);

Установка курсора в начальную позицию экрана осуществляется функцией АХ = 0004h. При этом в регистре СХ должна быть установлена горизонтальная координата курсора, а в ДХ - вертикальная.

Соответствующая функция может быть составлена на основе следующих
инструкций

-АХ = 4;

-СХ = hor_position;

-DX= ver_position

geninterrupt (0X33)

71. Чтение позиции курсора и состояние кнопок мыши.

Для определения местоположения курсора и состояния кнопок манипулятора используется Функция АХ = 0003h. При этом в регистре BL считывается состояние кнопок манипулятора:

бит 0 равен I - нажата левая кнопка

равен 0 - ненажата правая кнопка

бит I равен I - нажата правая кнопка

равен 0 – не нажата правая кнопка

бит 2 равен I - нажата средняя кнопка

равен 0 – не нажата средняя кнопка

Биты 3-7 не используются.

В регистре СХ определяется горизонтальная координата курсора., а в регистре ДХ - вертикальная. Пример программы реализующей названные операции имеет вид

-АХ=0X0003;

geninterrupt (0X33);

buttons = _BL;

hor_position = _CX;

vert_position = _DX;

В текстовом режиме местоположение курсора и число нажатий запрашиваемой кнопки определяется функцией АХ = 0005 4.. При этом в регистр ВХ помешается идентификатор кнопки: 0 - запрос 0 левой кнопки, 1 -запрос 0 правой, 2 - запрос 0 средней кнопки. После выполнения всех
действий в ВХ возвращается число нажатий кнопки, в СХ и ДХ - горизонтальная и вертикальная координаты курсора.

Следует отметить, что число отпусканий кнопок "мыши" определяется
функцией АХ = 0006h.

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

-АХ = 0Х0005;

-ВХ = 0;

geninterrupt (0X33)

buttons = _BL;

hor_position = _CX;

vert_position = _DX;

Для справки по определению суммарного перемещения курсора по горизонтали и вертикали служит функция АХ = 000Bh. При этом в СХ и ДХ возвращаются значения, соответствующие перемещению курсора по соответствующим осям.

72. Графические планшеты (дигитайзеры) и их характеристики.

Графический планшет (дигитайзер) это аппаратное средство ввода графической информации представленной в виде прямоугольных координат Х,У системы координат планшета.

Отличие дигитайзера от мыши следующее.

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

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

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

2. В графическом планшете для ввода информации используется как курсор, так и перо. При этом перо дигитайзера копирует рисунок при вводе информации в масштабе один к одному.

Графические планшеты имеют следующие характеристики.

1. Размер планшета охватывает диапазон от 5 х 5 дюймов до 36 х 48 дюймов.

2. Разрешающая способность определяется количеством линий, размещающихся в одном дюйме. Точность характеризует допустимую ошибку при определении координат точки.

3. Быстродействие определяет число точек в секунду, которое передается из планшета в персональный компьютер.

4. Близость определяет расстояние от поверхности планшета до пера, при котором распознаются точки на планшете.

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

6. Курсоры и перья. Для работы с планшетом используются курсоры и перья. Оба эти устройства могут иметь как кабельное, так и бескабельное соединение. Курсор по своей форме напоминает мышь и может содержать
от одной до 16 кнопок.

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

В последнее время используется так называемые перодавления. Вызов
той или иной функции при этом осуществляется силой нажатия на него.
Уровень давления на перо цифруется в единицах от 64 до 256.

7. Шаблоны меню выбора функций помещаются на планшете в форме многослойного пластмассового бланка, который идентифицирует места на планшете для выбора функций.

Перемещение курсора или пера в данное место шаблона и нажатие
кнопки вызывает соответствующую функцию.

8. Технология планшетов определяет принцип действия планшета. Для целей ГИС технология планшетов практически значения не имеет.

9. Эргономичность определяет оптимальность процесса работы с
графическим планшетом. С этой целью подбирается наиболее удобный планшет.

В качестве примера рассмотрим графический планшет Easy Painter. Настоящий дигитайзер работает в DOS, а также Windows 95 и 3.1. Им полностью может замещаться манипулятор мышь. Настоящим дигитайзером выполняются следующие виды работ

1) черчение, копирование изображения и рисование объектов,

2) управление курсором на экране,

3) выбор места шаблона для выполнения определенной функции.

В комплект дигитайзера входит: планшет I (рис. 44), двухкнопочное перо 2, программное обеспечение (утилиты) для DOS и Windows 95, 3.1., прикладные программы, инструкция пользователя.

Рис.44

Настоящий дигитайзер имеет следующие характеристики:

а) рабочая область (размер) 5х5 дюймов

б) разрешающая способность 1016 линий на дюйм

в) точность - 0,01 дюйма.

г) быстродействие 9600 битов в секунду

д) близость 0,5 дюйма

е) программное обеспечение – утилиты DOS и Windows и замещение (эмуляция) драйвера мыши.

ж) указатель - двухкнопочное перо

з) технология - электромагнитная.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: