Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Компьютерное железо
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 21:25   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
это не совсем то что нужно, а если при этом нормальная клавиатура будет подлючена
Я уже ответил на этот вопрос, еще до того как Вы его задали. С 2-мя юсб клавами должно получиться.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 16.11.2011 в 21:32.
Utkin вне форума Ответить с цитированием
Старый 17.11.2011, 01:14   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Я уже ответил на этот вопрос, еще до того как Вы его задали. С 2-мя юсб клавами должно получиться.
+DirectInput полагаю?
или как отличать нажатия то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.11.2011, 08:04   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не надо их отличать. надо сделать так, чтобы его кнопки формировали дикое сочетание клавиш, так, чтобы при работе с обычной клавой такие комбинации практически не встречались. Типа Shift+1+2 или Ё+9+*
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 19.11.2011, 01:31   #14
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 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-м выпуске журнала "ПРОграммист".
Кстати, там же я упоминал и об еще одном "экзотическом" способе. Вот цитата:
Цитата:
Еще один, довольно «экзотический» способ
расширения количества входов связан с
использованием порта клавиатуры, вернее
имитации нажатия кнопок клавиатуры. Если
разобрать современную клавиатуру (речь идет о
простых китайских клавиатурах самой низкой
стоимости), то мы увидим, что она состоит из двух
пленок, на которых нанесены контактные
площадки под клавишами и соединяющих
дорожек. Все это выводится на плату с
управляющим контроллером с помощью 26
контактов (количество контактов на разных
моделях может отличаться, но это
несущественно). Принцип работы клавиатуры
заключается в том, что, нажимая какую либо
клавишу, мы тем самым замыкаем определенную
пару из этих 26 контактов. Для каждой клавиши
комбинация такой пары контактов своя. Далее
контроллер клавиатуры обрабатывает этот сигнал
и передает в компьютер код нажатой клавиши.
Поэтому есть возможность подсоединить к этим 26
контактам свою комбинацию входных сигналов и
обрабатывать их уже программно по кодам
нажатых клавиш. Особенностью здесь является то,
что не должно быть одновременно подаваемых
нескольких сигналов таким способом.
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 19.11.2011 в 01:34.
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
клавиатура 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