|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.11.2011, 21:25 | #11 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 16.11.2011 в 21:32. |
|
17.11.2011, 01:14 | #12 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
или как отличать нажатия то? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
17.11.2011, 08:04 | #13 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Не надо их отличать. надо сделать так, чтобы его кнопки формировали дикое сочетание клавиш, так, чтобы при работе с обычной клавой такие комбинации практически не встречались. Типа Shift+1+2 или Ё+9+*
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
19.11.2011, 01:31 | #14 | |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
Думаю, что в данном случае следует придерживаться классической схеме построения управляющих
кнопок (клавиатура – это как частный случай использования кнопок). А именно – в таких случаях оптимально использовать свойства матриц. Данный принцип применяется в большинстве устройств - компьютерная клавиатура, клавиши мобильника , любые современные устройства, требующие ввода данных или многофункциональное оперативное управление различными устройствами. Так вот о матрицах – принцип подключения для 9 кнопок (как просил ТС) понятен из следующего рисунка. Алгоритм программного использования следующий: 1. На выходе 1 даем логическую «еденицу» (двоичный код b001) и проверяем состояние входов. Если везде по входам логический «ноль» (b000), то пока нажатой кнопки не обнаружено (заметьте – пока). Если же код b001 – нажата кнопка «1», при коде b010 – нажата «4», при b100 – нажата «7». 2. На выходе 2 даем логическую «еденицу» (код b010) и та же проверка входов - при b000 - нажатой кнопки не обнаружено; - b001 – нажата «2»; - b010 - нажата «5»; - b100 – нажата «8»; 3. Включаем логическую «еденицу» на выходе 3 (b100): - при b000 - нажатой кнопки не обнаружено; - b001 – нажата «3»; - b010 - нажата «6»; - b100 – нажата «9»; Если после проверки этих трех пунктов код на входе равен нулю (b000) , то ни одна кнопка не нажималась, а в противном случае определится одна из 9 кнопок. Данную проверку нажатия клавиш следует проводить в каждом цикле выполнения программы . Ну и конечно, при использовании 4-х входов и 4-х выходов можно подключить уже 16 кнопок, 5 х 5 дает нам 25 кнопок. И т.д. Все это в случае с симметричным подключением, что не обязательно. Возможно ( и часто применяется на практике, как в компьютерной клавиатуре или в мобильниках) несимметричное подключение кнопок. Конкретно практически это можно реализовать через LPT порт по следующей схеме. Подробней об использовании LPT - порта поищите на форуме или в 4-м выпуске журнала "ПРОграммист". Кстати, там же я упоминал и об еще одном "экзотическом" способе. Вот цитата: Цитата:
И не сомневайся даже ... отдых - кайф, работа - лажа!
Последний раз редактировалось DeKot; 19.11.2011 в 01:34. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
клавиатура | kaljan775 | Общие вопросы C/C++ | 2 | 23.11.2010 01:48 |
Клавиатура | zumm | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 27.06.2010 11:16 |
подключение двух компьютеров к интернет через одно подключение | Chudo4258 | Помощь студентам | 3 | 30.03.2010 16:07 |
Клавиатура | RealSHELS | Общие вопросы Delphi | 6 | 29.03.2008 15:52 |
Клавиатура | Pusher | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 22.03.2008 00:47 |