Форум программистов, компьютерный форум, киберфорум
Наши страницы
КИП, датчики
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Ivan_32
28 / 24 / 4
Регистрация: 03.02.2010
Сообщений: 66
#1

User-mode драйвер / фильтр для сканера штрих-кодов. Какой правильный подход при разработке? - КИП, датчики

11.09.2012, 03:40. Просмотров 2499. Ответов 3
Метки нет (Все метки)

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

Я сделал пока так:
- Создал невидимое окно HWND_MESSAGE
- Зарегистрировал его как RawInput-приемник (RIDEV_INPUTSINK)
- Получаю WM_INPUT, фильтрую по hDevice
- Сам hDevice получаю из списка всех HID-устройств и Vendor ID и Product ID конкретного сканера (вот только не знаю VID&PID это сканера ли, или же это VID&PID порта или еще что-то такое, не проверял).

Проблемы у меня с этим такие:
- Нужно хранить список VID&PID для всех устройств, аналогичные юзермодные драйверы-программы от производителей к таким вещам не привязаны
- Нет возможность подавить сами сообщения

На данный момент я вижу еще два способа реализации данной задачи:
1. Перевести сканер в режим эмуляции COM-порта, легко и трудно одновременно - сканер то не один будет, да и опять же остается проблема с VID&PID как я подозреваю. Неприемлемо в рамках ТЗ.
2. Подключить к стеку драйверов сканера свой драйвер-фильтр. Очень сложно и вообще я даже не знаю возможно ли это сделать, не зная VID&PID устройства, это конечно решит проблему.

Вопросы у меня такие:
1. Как среди всех HID-устройств найти именно сканер? Есть ли у него какие-либо свойства доступные через WinAPI, которые бы явно указывали на то, что это сканер.
2. Какой подход могли использовать сами производители? Как лучше всего это реализовать? И самое главное как избавится от самих сообщений, как сделать чтобы они только в мою программу приходили?

Может быть кто-нибудь такое уже писал, поделитесь пожалуйста опытом и/или исходниками готовых решений?

Модель сканера - вроде бы Zebex Z-3152.

Почитал, что можно якобы написать фильтр-драйвер с помощью KMDF, мол это проще будет, чем обычный драйвер. Слабо представляю себе как это можно сделать (так как опыта в разработке драйверов у меня минимум или строго говоря вообще нет). Времени у меня по сути нет, но учитывая то, что промежуточное решение у меня почти на руках, думаю, у меня будет время изучить эту область.

P.S.: Под подавлением сообщений я имею в виду, чтобы моя программа становилась конечной точкой куда приходят эти сообщения клавиатуры/сканера, то есть чтобы я нажимал клавишу (или же сканировал штрих-код сканером) и данные о нажатии приходили только в мою программу. Сейчас получается я только получаю копию, а не единственный экземпляр - если при включенной программе поставить фокус на любое текстовое поле, то там все равно появятся циферки штрих-кода при сканировании.
P.P.S: Драйвер производителя с аналогичными функциями на целевой платформе не работает, потому сканер работает в режиме доп.клавиатуры - так все сканеры умеют судя по всему.
P.P.P.S: В гугле был, есть и буду
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 03:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос User-mode драйвер / фильтр для сканера штрих-кодов. Какой правильный подход при разработке? (КИП, датчики):

Прошивка сканера штрих-кодов MS 7120 Orbit
Всем привет. У меня такой вопрос, никто не прошивал через комп. сканер штрих...

Задана таблица товаров и их штрих-кодов. Вывести данные при использовании сканера штрих-кода
Привет. Есть таблица с данными: штрих-код был отсканирован сканером, а все...

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

Подключение сканера штрих-кодов
Всем привет. В скором времени понадобится подключать сканер штрих кодов (модель...

Настройка Сканера штрих-кодов
Здравствуйте, следующая ситуация есть терминал на котором стоит электронная...

Подключение сканера штрих-кодов к ноуту
Здравствуйте! Как можно подключить сканер шрих-кодов, который требует порт...

3
raxp
10180 / 6563 / 491
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
11.09.2012, 11:22 #2
1- в режиме HID (без эмуляции COM) вы ведь можете читать данные через dev.ReadFile(raw, ...) после энумерации и выделения по атрибутам HidDev.Attributes.VendorID и HidDev.Attributes.ProductID, принадлежащие именно вашему сканнеру
2- в режиме эмуляции COM-порта можно однозначно выделить на каком порту сканер по имени в списке через SetupAPI Как получить номер КОМ-порта зная VID и PID

хранить список VID&PID для всех устройств, аналогичные юзермодные драйверы-программы от производителей к таким вещам не привязаны
...разве VID/PID однозначно не укажут производителя? Есть же выделенные диапазоны (при официальной регистрациии), кроме случаев совпадения.

- Нет возможность подавить сами сообщения
костыль: сделать свое окно всегда поверх, добавить полупрозрачность, какую-нибудь служебную информацию, чтобы никого не раздражало.

Почитал, что можно якобы написать фильтр-драйвер с помощью KMDF, мол это проще будет, чем обычный драйвер. Слабо представляю себе как это можно сделать (так как опыта в разработке драйверов у меня минимум или строго говоря вообще нет). Времени у меня по сути нет, но учитывая то, что промежуточное решение у меня почти на руках, думаю, у меня будет время изучить эту область.

P.S.: Под подавлением сообщений я имею в виду, чтобы моя программа становилась конечной точкой куда приходят эти сообщения клавиатуры/сканера, то есть чтобы я нажимал клавишу (или же сканировал штрих-код сканером) и данные о нажатии приходили только в мою программу.
люди сталкивались. Неделю назад в твитт-ленте публиковал ссылку на - фильтр-минидрайвер штрихкод-сканнера для перехвата пакетов HID-клавиатуры http://smart-eyes.com/file_store/driver.rar
0
Ivan_32
28 / 24 / 4
Регистрация: 03.02.2010
Сообщений: 66
11.09.2012, 20:49  [ТС] #3
1- в режиме HID (без эмуляции COM) вы ведь можете читать данные через dev.ReadFile(raw, ...) после энумерации и выделения по атрибутам HidDev.Attributes.VendorID и HidDev.Attributes.ProductID, принадлежащие именно вашему сканнеру
А что можно почитать по этой теме? С готовым драйвером не вариант, он должен быть открытым и изменяемым.
0
raxp
10180 / 6563 / 491
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
11.09.2012, 21:05 #4
...в смысле? По первому варианту есть даже готовый модуль с открытым кодом от JEDI для работы с HID. А почитать как всегда, http://usb.org.

По поводу драйвера, можно попробовать связаться с автором http://smart-eyes.com/?p=21
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 21:05
Привет! Вот еще темы с решениями:

Передача данных со сканера штрих-кодов
Доброго времени суток! Не могли бы Вы мне подсказать, как можно организовать...

Правильный ли подход к разработке на NodeJS с Express?
Итак, как выглядит проект, начинаем с app.js и заканчиваем темплейтом ejs: ...

База данных с использованием сканера штрих-кодов
Доброе утро, день и вечер, дорогие форумчане! Глубочайшая необходимость в базе...

Чтение из HID - клавиатуры (сканера штрих-кодов)
Уважаемые форумчане, требуется ваша помощь. Есть сканер штрих - кодов, который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru