Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват HID устройств, Работа с CardReader 
:(
    Опции темы
Danat
Дата 26.4.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



Когда CardReader подключен к компу то он ведет себя так как будто это еще одна клавитаура и проведение карточки по нему вызывало появление соответствующих символов в Notepad или где-нибудь еще. 
 Необходимо перехватывать то что идет от ридера и не пускать это на клавиатурный ввод, так чтобы моя программа не будучи активной получала информацию о считанной карточке. 
 Раньше проблема казалось была решена за счет хуков, но потом обаружилось что при смене языка (раскладки клавиатуры) считанный код тоже интерпретируется в соответствии с этой раскладкой и к примеру формат "%код?" становится "%код," если вместо Англ стоит Русский.

Поясню как читается код  с карточки:
- таймоут на ожидание следующего символа около 50 мсек иначе все поступающие символы идут прямиком на клавиатурный вывод. При проведении карточкой где-то за пол-секунды появляются 7-8 символов и таким образом можно определить что человек не мог так быстро это набрать, т.е это символы с ридера.
- идет сканирование буфера в который засовываются считанные символы на соответствие формату "%код?". Если очередной поступивший сивол не соответствует формату , он отправляется на вывод.

Был вариант ставить на программе Англ. язык и тогда вроде это не должно мешать включать Русский в других приложениях, но вот в чем загвоздка - символ считывается на Англ. языке моей программой и потом если он "не подходит" , он посылается на вывод опять же в английском варианте и в итоге приложение с включенным Русским шрифтом будет получать все равно Англ. буквы.

Поэтому мне бы хотелось узнать если символы идут именно от кард ридера, то никуда их больше не посылать. Или вообще как-то настроить ридер чтобы он только мне посылал считанный код и не выдавал это за обычные нажатия клавиш на клаве. 
Пока ничего в голову не приходит smile поэтому решил обратиться сюда. 
PM MAIL   Вверх
zhgutov
Дата 28.4.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.12.2004

Репутация: 1
Всего: 2



А почему не использовать только цифры? Как вариант, можно обрабатывать пары для RU/EN. А через какой интерфейс подключен CardReader? 
--------------------
Приполз. Увидел. Укусил.
PM MAIL   Вверх
Danat
Дата 2.5.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



формат "%код?" стандартный и определяется не мной smile. Я бы тоже сразу бы перешел на цифры smile. Обрабатывать варианты RU/EN думаю не стоит так как появление новых языков будет означать обработку новых символов (а на компе скорее всего еще будет стоять Румынский (RO) а там вместо ? идет _) и так уже вообще будет как-то непонятно ридер или юзер вводит текст. Да и после обучения  ООП такой вариант как-то неприятен smile. Эта прога ведь на продажу выставляется, и кажется перехват и анализ кода (т.е. нажатых клавиш) при таких условиях будет не очень устойчивым решением.

Насчет интерфейса

Ридер суется в USB и после этого в системе определяется 2 новых устр-ва:
- USB Human Interface Device
- HID Keyboard Device

Там в настройках драйвера есть всякие deviceID  и пр. но я не знаю если это в итоге позволит мне определять кто посылает код. Т.е. лучше бы кто-то кто работал с HID сказал "да это возможно" и тогда бы я уже стал бы копаться.  

Это сообщение отредактировал(а) Danat - 2.5.2006, 16:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.