Лабораторна робота № 4 - Ввід інформації з клавіатури. Обмін інформації з файлами засобами мови Turbo C
Назва роботи : Організація функціонування маніпулятора "миша"
Мета роботи: Ознайомитись з принципами функціонуваня маніпулятора "миша". Засобами Turbo C організувати функціонування маніпулятора "миша".
Загальні положення
Апаратно маніпулятор являє собою периферійні пристрій, що підключається до одного з адапторів послідовного зв'язку комп'ютера. До складу маніпулятора входять датчики преміщення "миші" в горизонтальному та вертикальному напрямках, індикатор натиску кнопок та блок зв'язку з інтерфейсом. Блок зв'язку з інтерфейсом передає в адаптер послідовного зв'язку байти даних при довільному натисканні кнопок та переміщенні "миші" в горизонтальному та вертикальному напрямках на певну величину, так звану "міккі". Один "міккі" звичайно дорівнює 1/200 частині дюйма.
Значення зміщення, що передаються в адаптер, мають "знак". Наприклад, при переміщенні маніпулятора знизу догори на один "міккі" передається байт 01Н, а при переміщенні зверху донизу - байт FFH. Обробник переривань від послідовного адаптера сумує отримані значення з врахуванням знаку. Таким чином, завжди є можливість визначити "біжучу" позицію маніпулятора відносо моменту початку спостереження. Звичайно спостереження за "мишею" починаються після завантаження драйвера "миші" або виконання операції ініціалізації "миші" з програми користувача.
Основними частинами драйвера миші є :
Секція інсталяції драйвера.
Обробник апаратних переривань від адаптера послідовного зв'язку (в ІВМ РС АТ адптерам СОМ1 та СОМ2 відповідають переривання - 0СН та 0СВ).
Обробник програмного переривання інтерфейса прикладної програми з "мишею" (переривання 33Н).
Обробник програмного переривання 10Н керування екраном.
Кожна програма, що використовує для вводу інформації маніпулятор
"миша", повинна виконати такі підготовчі операції:
Визначити, чи інстальований драйвер "миші".
Задати вид і форму курсора маніпулятора.
Описати межі переміщення курсора "миші" по екрану.
Описати "чутливість" курсора, яка дорівнює числу "міккі",що приходяться на один піксель екрана по горизонталі та вертикалі.
Встановити поріг "подвоєної" швидкості курсора "миші".
"Включити" курсор маніпулятора( зробити видимим на екрані).
Встановити курсор в початкову позицію на екрані у відповідності з потребами програм.
Багато з цих дій допомагає виконати функція ініціалізації та визначення біжучого стану маніпулятора стає в стан по замовченню:
Курсор маніпулятора встановлений в центрі екрана та виключений.
Чутливість маніпулятора по вертикалі дорівнює 2 "міккі" на піксел, по горизонталі - 1 "міккі" на піксел.
Поріг "подвійної" швидкості встановлюється рівним 64 "міккі"/сек.
Встановлюється форма курсора по змовченню.
Координати лівого верхнього кута області переміщення курсора маніпулятора відповідають координатам (00), а координати ніжнього правого кута області перемщення маніпулятора - максимальним координатам біжучого відеорежиму мінус 1.
Якщо треба встановити значення, відмінні від значень по замовченню, використовуються функції установки форми курсора, меж його переміщення, завдання значень чутливості та порогу подвійної швидкості.
Сі-функція завдання параметрів курсора маніпулятора "миша" для текстового режиму роботи адаптера в програмі *L4-1.C*.
В графічному режимі роботи відеоадаптора може бути описана довільна власна форма курсора в межах прямокутника 16x16 пікселів курсорів в графічному режимі описується двома масками розміром 16x16 біт кожна. XOR-маска (маска курсора ). При переміщенні курсора попередній вміст екрану відновлюється драйвером "миші ". Маски, комбінують, визначають спосіб обробки біжучого коду кольору пікселя на екрані (pixel-Picture Element - телевізійна точка на екрані).
Біт AND-маски |
Біт XOR - маски |
Колір піксела на екрані |
0 |
0 |
Колір фону |
0 |
1 |
Білий колір |
1 |
0 |
Біжучий колір пікселя |
1 |
1 |
Побітова інверсія біжучого кольору пікселя |
В графічні режимах задається так звана "гаряча пляма" ( Hot spot) у відносних координатах, за точку відліку яких приймається верхній лівий кут прямокутника 16x16 пікселів. "Гаряча пляма" - це той піксел, на який вказує в біжучий момент графічний курсор. Сі-функція установки графічного "миші" в програмі *L4-2.C*.Для отримання графічнрго курсора,
Якого видно на довільному фоні, поступають наступним чином. AND-маскою задають із слів FFFFH, a XOR-маску описують таким чином, щоб в нійстояли одиниці в тих бітах, які утворюють контури кукрсора, а нулі - в усіх решта бітах маски. В прикладі викликається функція для завдання графічного курсору у вигляді стрілки (функція set-graph-cursor ( ) ).
Одразу після ініціалізації екрану, за область допустимих переміщень курсора по замовченню приймається весь екран. Але завжди є можливість обмежити переміщення курсору окремо по горизонталі та по вертикалі. Сі-фуекції для установки меж переміщення курсору по вертикалі та по горизонталі в програмах *L4-3.C*, *L4-4.C*. Після того, як виконані всі необхідні підготовчі операції, програма може використовувати маніпулятор для вводу інформації. Інформація, що вводиться, - це біжуча позиція курсора та стан кнопок маніпулятора. Періодичний ввід інформації з "миші" та попадання курсору в ті або інші області екрану дозволяють виконувати потрібні дії - "відкрити2 підменю і т. ін. визначення стану кнопки (натиснута двічі) використовується як команда на виконання програмою додаткових дій.
Сі-функція визначення біжучих координат курсора та стану кнопок "миші" в прикладі *L4-5.C* та прикладі *L4-6.C* (фіксація одноразового або дворазового натиску на кнопку "миші").
При переміщенні маніпулятоорапостолу, драйвер пересуває "мишу" по екрану без участі програми. Але і прикладна програма має можливість керувати позицією курсора "миші". Сі-функція позиціонування курсору "миші" в точку екрана з координатами int hor-position та int ver-position в прикладі *L4-7.C*.
Для отримання демонстраційної програми, яка читає стан "миші" та фіксує всі переміщення курсора "миші" в межах екрану у верхньому рядку треба, використовуючи файл проекту, виконати сумісну компіляцію файлів : ВООК3 - L3-13.C, L4-1.C, L4-3.C, L4-5.C - L4-8.C та ВООК2 - L8-11.C, L9-5.C, L9-8.C, L9-9.C.
Для отримання демонстраційної програми, що демонструє можливість використання вводу з "миші" для "малювати", треба, використовуючи файл проекту, виконати сумісну компіляцію файлів ВООК3 - L4-1.C-L4-5.C, L4-7.C - L4-9.C та ВООК2 - L8-11.C, L9-2.C, L9-5.C. В ції програмі адаптер встаноалювається в графічний режим 12Н. Далі описується графічний курсор. В верхній частині екрану виводяться номера рядка та стовпчика курсора маніпулятора. Окрім того, відображається код кольора пікселя, що використовується для "малювання".Для виводу текста в графічномуу режимі використовується варіанти функція scroll( ), hor-pm( ) та printche ( ), що працюють через BIOS (ВООК2 - L9-5.C, L9-2.C, L9-3.C. Позиціонування курсора виконує функція goto-xy ( ) (L8-11.C). При натисканні лівої кнопки маніпулятора він "малює" піксел в біжучий позиції. При кожому натисканні правої кнопки код кольору малюємого піксела збільшується на 1. При одночастному натисканні лівої та правої кнопок "миші" демонстраційна програма заверщує свою роботу для виводу пікселя на екран використовуються функція plot( )(BOOK2-L10-5.C).
Порядок виконаня роботи:
1. В середовищі MS DOS ініціалізувати одну з систем програмування :
Turbo C, Turbo C++,Borland C++.
- 2. Компілювати та виконуючі відповідні приклади, розглянути особливості функціонування функцій керування маніпулятором "миша". 3. Зкомпілювати та виконати програми, що демонструють різні режими
Використання "миші". інформація файла клавіатура маніпулятор миша
4. Зробити висновки відносно можливостей маніпулятора "миші".
Результат виконання програми.
#include <dos. h>
#include <stdio. h>
#include <stdlib. h>
#include <conio. h>
#define CURSOR_ON() _AX=1; geninterrupt(0x33);
#define CURSOR_OFF() _AX=2; geninterrupt(0x33);
Static unsigned screen_and_cursor_masks[] =
{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x8000, 0xC000, 0xA000, 0x9000, 0xA800, 0xB400, 0xBA00, 0xBD00,
0xBE80, 0xBF40, 0xBFA0, 0xBFD0, 0xBFE0, 0xAE00, 0xA300, 0xE300,
};
Struct MOUSE_STATE {
Char buttons;
Int hor_position;
Int ver_position;
};
Void set_text_cursor(int mode, unsigned int AND_mask, unsigned int XOR_mask){
Struct REGPACK r;
R. r_ax = 0x0a;
R. r_bx = mode;
R. r_cx = AND_mask;
R. r_dx = XOR_mask;
Intr(0x33, &;r);
}
Void set_graph_cursor(int hot_spot_column, int hot_spot_row, unsigned int far * screen_and_cursor_masks){
Struct REGPACK r;
R. r_ax = 9;
R. r_bx = hot_spot_column;
R. r_cx = hot_spot_row;
R. r_es = FP_SEG(screen_and_cursor_masks);
R. r_dx = FP_OFF(screen_and_cursor_masks);
Intr(0x33, &;r);
}
Void hor_movement(int start_hor_movement, int end_hor_movement){
_AX = 7;
_CX = start_hor_movement;
_DX = end_hor_movement;
Geninterrupt(0x33);
}
Void vert_movement(int start_vert_movement, int end_vert_movement){
_AX = 8;
_CX = start_vert_movement;
_DX = end_vert_movement;
Geninterrupt(0x33);
}
Void ms_state(struct MOUSE_STATE * current_state){
Struct REGPACK r;
R. r_ax = 3;
Intr(0x33, &;r);
Current_state -> buttons = r. r_bx;
Current_state -> hor_position = r. r_cx;
Current_state -> ver_position = r. r_dx;
}
Int ms_release(struct MOUSE_STATE * current_state){
Struct REGPACK r;
R. r_ax = 6;
R. r_bx = current_state -> buttons;
Intr(0x33, &;r);
Current_state -> hor_position = r. r_cx;
Current_state -> ver_position = r. r_dx;
Return r. r_bx;
}
Void ms_move(int hor_position, int ver_position){
_AX = 4;
_CX = hor_position;
_DX = ver_position;
Geninterrupt(0x33);
}
Void main(){
Struct MOUSE_STATE cur_state;
_AX=0;
Geninterrupt(0x33);
If(_AX==0){
Puts("No mouse!!!");
Exit(-1);
}
Set_text_cursor(1, 0x000e, 0x000f);
Hor_movement(0, 639);
Vert_movement(16, 199);
Ms_move(0, 160);
CURSOR_ON();
While (cur_state. buttons!= 0x03){
Ms_state(&;cur_state);
Gotoxy(1,1);
Printf("x=%i ",cur_state. hor_position);
Printf("y=%i ",cur_state. ver_position);
If (cur_state. buttons == 0x01) printf("left ");
If (cur_state. buttons == 0x02) printf("right ");
If (cur_state. buttons == 0x03) printf("both ");
}
CURSOR_OFF();
_AX = 0x0012;
Geninterrupt(0x10);
_AX=0;
Geninterrupt(0x33);
If(_AX==0){
Puts("no mouse!");
Exit(-1);
}
Set_graph_cursor(0, 0, screen_and_cursor_masks);
Hor_movement(0, 639);
Vert_movement(16, 199);
Ms_move(160, 160);
Ms_state(&;cur_state);
CURSOR_ON();
While (cur_state. buttons!= 0x01){
Ms_state(&;cur_state);
}
CURSOR_OFF(); }
Похожие статьи
-
Назва роботи: Ввід інформації з клавіатури Мета роботи: Ознайомитись з можливостями організації вводу з клавіатури в комп'ютерах сімейства ІВМ РС....
-
Назва роботи: Вивід інформації на екран ПК Мета роботи: Ознайомитись з можливостями організації виводу інформації на екран ПК. Загальні положення. Вивід...
-
Назва роботи: Обмін інформації з файлами засобами мови Turbo C Мета роботи: Ознайомитись з можливостями організації обміну інформацією між файлами...
-
Склад і характеристика проектів IDE MS Visual Studio C++ Будь-яка програма, що створюється в середовищі Visual Studio C++ завжди оформляється як окремий...
-
Розглянемо порядок заповнення інформації про внутрішньогосподарські пристрої земельних ділянок. Для всіх ділянок несільськогосподарського призначення...
-
Використання сполучень клавіш - Будова персонального комп'ютера
Сполучення клавіш -- це спосіб виконання дій за допомогою клавіатури. Вони називаються сполученнями, оскільки найчастіше в них одночасно натискаються...
-
Тема №1. Загальна характеристика системи програм 1С:Підприємство 1С: Підприємство є універсальною системою автоматизації і організації діяльності...
-
VC++ - мова і середовище програмування, що відноситься до класу RAD - (Rapid Application Development _ "Засіб швидкої розробки додатків") засобів CASE -...
-
Робота з діапазоном - Microsoft Excel
Виділення діапазону клітинок. Більшість команд Excel оперують з активною клітинкою або виділеним діапазоном клітинок. Для виділення суміжного діапазону...
-
Геоінформаційний система проектування моделювання Порядок реєстрації земельних ділянок З набранням чинності Законом України "Про Державний земельний...
-
Етапи рішення прикладних задач з використанням комп'ютерів 1) Формулювання задачі в термінах певної предметної галузі знань (математика, фізика,...
-
Програмний алгоритм аутентифікація користувач При запуску програми першим вікном буде вікно авторизації (Див. Рис. 1.1.). В цьому вікні є можливість...
-
ЗАГАЛЬНА РОБОТА З ГРАФІКОЮ - Створення 2D гри, використовуючи можливості Java
Двомірні гри це добре, але з них можна вичавити більше застосувавши изометрическую проекцію, тим самим створивши ілюзію тривимірного простору. Треба...
-
Заповнивши список координат ділянки вручну, або зробивши імпорт із зовнішніх форматів, у Вас виникне природна потреба в перегляді результатів вашої...
-
Усі відомі табличні процесори мають типову структуру інтерфейсу. При роботі з електронною таблицею на екран виводяться робоче поле таблиці і панель...
-
Емпіричні знання для інтерпретації результатів - Статистичне оброблення медичної інформації
Імовірність достовірності виражається не критерієм І, а рівнем значущості (Р), який є доповненням імовірності до 100 % і або до 1,0). Так, імовірності 95...
-
Елементарні статистичні характеристики - Статистичне оброблення медичної інформації
Імовірність -- кількісна міра об'єктивної можливості появи події при реалізації певного комплексу умов. Імовірність події А позначається як Р(А) та...
-
Програмна реалізація алгоритмів лінійної структури Алгоритм (латинізов. Algorithmi за араб. ім'ям узб. математека аль-Хороезмі) -- набір інструкцій, які...
-
Цикли вкладені - Формування навичок програмування з використанням алгоритмічної мови С++
Часто буває так, що при повтореннях змінюється не одна величина, а дві (чи навіть більше). І при кожному значенні однієї величини інша величина...
-
За допомогою засобів компілятора, що дозволяють полегшити процес виявлення помилок в програмах, ви можете створити динамічну модель, що ілюструє процес...
-
Вступ, Етапи розв'язання статистичної задачі - Статистичне оброблення медичної інформації
Статистичний програма excel програма Мета: Ознайомити студентів з прикладними програмами Microsoft Office, з медичними документами, їх створенням та...
-
Сканер, Пристрої для передачі інформації - Будова персонального комп'ютера
Сканер служить для автоматичного введення текстів і графіки в комп'ютер з будь-якої плоскої поверхні. Основна характеристика: роздільна здатність...
-
Робота з симулятором машини Ноймана. Дослідження виконання машинного коду в автоматичному режимі
ТЕОРЕТИЧНІ ВІДОМОСТІ: CISC - Complex Instruction Set Computing (обчислення Зі Складною Системою Машинних Інструкцій) Аби дослідити дію машини Ноймана...
-
Методика пошуку інформації та роботи з бібліографічними джерелами
Практичне заняття №2: Методика пошуку інформації та роботи з бібліографічними джерелами Мета: Ознайомити з методикою та сформувати навички пошуку...
-
Панелі інструментів, Вікна діалогу - Microsoft Excel
Під рядком меню розміщуються звичайно панелі інструментів. Панелі інструментів -- це рядок кнопок, при натискуванні на які виконується певна дія. Для...
-
Висновок - Інтернет, як сучасний метод збору первинної інформації
Отже, роблячи висновок даної курсової роботи, можна запевнити про значну необхідність та ефективність використання первинної інформації при маркетингових...
-
Перед написанням драйверу доцільно переконатись чи працює фізичний пристрій як це очікувалось. Майстер можно використати для такої перевірки пристрою....
-
Небезпечні й шкідливі виробничі фактори по природі виникнення діляться на наступні групи: - фізичні; - хімічні; - психофізіологічні; - біологічні. У...
-
Для запуску розробленого програмного продукту необхідна наявність на персо-нальному комп'ютері встановленого Mysql Server (локального), або доступ через...
-
Докладний опис мови - Гнучка система інформаційної підтримки підвищення кваліфікації персоналу ДП №9
З точки зору системи типізації, PHP є мовою програмування з динамічною типізацією. Немає необхідності явного визначення типу змінних, хоча така...
-
Тестовий контроль 1. Для того, щоб ввести параметри облікової політики потрібно : А) зайти в меню "Основна діяльність" / "Облікова політика" / "Облікова...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Конфигурация устройств ввода-вывода Турбо Паскаля - Программирование в среде Turbo Pascal
Результаты работы программы и исходные данные могут быть записаны в файлы на диске, с помощью специальных процедур работы с файлами прямо из программы. В...
-
Введение, Правила и порядок выполнения курсовой работы - Программирование в среде Turbo Pascal
Настоящие методические указания предназначены для выполнения курсовой работы "Расчеты на ЭВМ характеристик выходных сигналов электрических цепей" по...
-
До сих пір ми торкалися лише імпортних продуктів в Internet. А як же складаються справи з нашими? Чесно кажучи, поки що туговато. Напрочуд необмежені...
-
Опис роботи програми - Розробка гри в С# "Корови та бики"
Для того, щоб запустити програму необхідно двічі клікнути мишею на файл Cowbulls. exe. Користувач побачить стартове вікно програми, яке зображене на Рис...
-
Клавіатура і миша - Будова персонального комп'ютера
Клавіатура - пристрій для введення інформаційних даних. Інформаційні дані вводяться у вигляді алфавітно-цифрових та символьних даних. Стандартна...
-
Даний розділ один з найбільш об'ємних, в зв'язку з різноманіттям функцій створення, коригування, трансформування координат і друку багатьох звітних форм....
-
Вибір мережевих програмних засобів - Проектування комп'ютерної межі для дизайнерської фірми
В якості операційної системи для фірми "Ilona" була обрана операційна система OS X El Capitan. Mac OS X включається у вартість нових комп'ютерів Apple...
-
Создание представлений - Банки и базы данных. Системы управления базами данных
Представлением (View) называется виртуальная таблица, отображающая данные, получаемые из реальных таблиц БД, а также из других представлений....
Лабораторна робота № 4 - Ввід інформації з клавіатури. Обмін інформації з файлами засобами мови Turbo C