Имя: Пароль:
IT
 
Перехват штрихкода у сканера штрихкодов.
0 megabax
 
12.04.12
22:42
Добрый день. Тут передо мно встала такая задача: написать прогу, которая перехватывает событие считвания сканера штрихкода, но при этом не мешает работать штрихкоду с дургими программами. Перехватви, прога доложна проверить, что это за штрихкод и при необходимости выдать пользователю диалоговое окно.
Только вот не знаю, с чего начать.
Вероятность 99% что писать буду на C#.
Подскажите плз, в какую сторону смотреть? WinApi? Или, может, дял C# какие то библиотеки для перехвата событйи от сканера штрихкодов? Если WinApi, То подскажите плз, какая это может быть функция или хотя бы ссыклу где про это можно почитать.
1 дущ
 
12.04.12
23:08
Для начала неплохо бы ознакомиться с принципами работы сканеров штрих-кода и узнать какой у тебя будет сканер COM или KB. От этого и подходы будут различаться кардинально.
Проще всего, наверное, перехватить KB, обработать и послать уже приложению перехваченную строку.
2 lex-kex
 
12.04.12
23:18
(0) "но при этом не мешает работать штрихкоду с дургими программами"

только клавиатурный на это способен, хотя я могу ошибаться
3 megabax
 
12.04.12
23:18
КВ - это тот что врубается в разрвы клавиатуры что ли? Маловероятно, что он будет. Хотя и под него придется писать. Задача стоит сделать программу универсальную, но большинство скаенров (порядка 99%) будут конечно, COM.
4 Derik
 
12.04.12
23:34
COM-порты занимаются приложениями монопольно и обратиться к ним из 2-х приложений не получится. Для решения задачи надо либо переправлять событие в виртуальный ком порт или писать свой драйвер сканера. В комплекте с драйвером сканера Штрих-М были исходники их драйвера, можно попробовать их допилить.
5 lex-kex
 
12.04.12
23:35
(3) по моему чтобы отлавливать событие с ком порта его придется занимать,а это мешает работать другим программам со сканером шк
6 megabax
 
13.04.12
00:09
хм, спасибо за советы... оказыывается, все гораздо сложнее, чем думал в начале...
а если как то прерывания сисемные перхватывать? или это уже программированеи на уровене ассембелра?
7 lex-kex
 
13.04.12
00:11
(6) вот тут я точно не советчик
8 Torquader
 
13.04.12
00:13
Во-первых,никто не мешает читать COM-порт,а выдавать результаты уже в другой виртуальный порт или в клавиатуру.
Ну и наоборот - читать события клавиатуры через LL_KEYBOARD_PROC а выдавать в последовательный порт или другому перехватчику
А что нужно сделать - если фильтровать - то это и некоторые сканеры сами умеют
9 megabax
 
13.04.12
10:49
8, тоесть, если я вас правильно, вы предлагаете подключать сканер физическому порту, чиатать с него данных а потом передавтать некому эмулятору вирутального порта, а сама программа будет цеплятся уже к виртулаьному порту. Ксати, а могут ли быть проблемы с виртальунам портом, у разных кассовых программ, таких как 1С, атол, фронтол и так далее?
10 Torquader
 
13.04.12
16:10
(9) Проблемы могут быть только в кривой реализации виртуального порта, так как на уровне программы системный вызов чтения данных из порта передаётся его драйверу без всяких различий в типе порта.