Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   Перехват считывания сканера штрихкода. (http://forums.kuban.ru/f1024/perehvat_schityvaniya_skanera_shtrihkoda-2487549.html)

megabax 12.04.2012 21:22

Перехват считывания сканера штрихкода.
 
Добрый день. Тут передо мно встала такая задача: написать прогу, которая перехватывает событие считвания сканера штрихкода, но при этом не мешает работать штрихкоду с дургими программами. Перехватви, прога доложна проверить, что это за штрихкод и при необходимости выдать пользователю диалоговое окно.
Только вот не знаю, с чего начать.
Вероятность 99% что писать буду на C#.
Подскажите плз, в какую сторону смотреть? WinApi? Или, может, дял C# какие то библиотеки для перехвата событйи от сканера штрихкодов? Если WinApi, То подскажите плз, какая это может быть функция или хотя бы ссыклу где про это можно почитать.

Чoп 13.04.2012 00:28

в сторону 1С-а смотри...

TVV1 13.04.2012 01:39

т.е. есть некий софт работающий со сканером штрихкодов и нужно перехватить его обмен со сканером для реализации специфических функций, которых не хватает в штатном софте. Причем перехватчик не должен мешать другому софту. Если протокол известен, то нужно разобраться по какому интерфейсу идет обмен со сканером и далее копать уже в эту сторону. Если по RS232 через реальный или виртуальный com порт, то это одна песня, если через что то другое то другая.

Вариантов много от аппаратных, типа спец кабеля, до программных типа перехвата вызова api функций или использования различного софта для создания виртуальных портов (ну это чтобы прослушивать обмен).

megabax 13.04.2012 08:13

1, а почему 1С? Вообще, как раз с веротностью 90% там будет стоять 1С, которой то и моя программа не долна мешать. Спросите, что мешает сделать функционал моей программы в самой 1С? А дело в том, что закрытая будет 1С. Мне туда не разрешат вносить изменения.
Вообще, задача такая: есть куча торговых точек, в каждой из них стоит самая разнообразная кассовая программа: 1С 8, 1С 7.7, при чем сама 1С у всех разная, у кого то она вообще закрыта от изменений. Но может стоять и Атол или фронтол или еще что нибудь. А задача в том, что бы на всех точках сделать прибулду, которая при считывании определенных штрихкодов ломится в центральную базу и передает туда данны, а так же получает необходимые данные оттуда.
Проблема в том, что все кассовые программы разные и заставить точки прейти на одну невозможно.

megabax 13.04.2012 08:14

ЗЫ. Вообще, возникает вопрос, для разных сканеров мне рпидется по разному извратиться, что бы перхватить это собтытие?

flowswitch 13.04.2012 12:05

Сканеры всякие-разные, кто клавиатурой прикидывается и прямо нажатия клавиш имитирует, кто по RS232, кто по USB-Serial.
Если нужна универсальность, то возможно будет проще не сканер слушать, а поле ввода куда данные от него попадут в итоге. Под разный кассовый софт подстраивать придётся - в каком окне какой элемент отслеживать, но различия всяко меньше чем между клавиатурой и rs232.

TVV1 13.04.2012 13:45

Да задачка не однозначная так как разный софт и разные сканеры. В принципе можно сделать как предложил flowswitch, пожалуй это действительно будет значительно проще, т.к. тогда не придется разбираться с разными сканерами и их протоколами и режимами. Единственное нужно будет выдрать данные из софта. Правда тогда будет завязка на используемый софт. Для разработки и отладки потребуется все версии софта, что используются на объектах.
Другой же вариант городить перехватчик, для эмуляторов клавиатуры это постановка соответствующего хука, а для тех что работают через com порт можно использовать что то типа hub4com [url]http://com0com.sourceforge.net/[/url] что бы не заморачиваться с низкоуровневым перехватом. При этом еще придется разобраться с протоколами и режимами работы сканеров и особенностями работы разных версий прошивок для них. Это в принципе может быть оправдано, если типов используемых сканеров немного, например, не более 3-5. Для отладки потребуются соответственно все типы используемых сканеров желательно с рабочими используемыми настройками.


Текущее время: 04:55. Часовой пояс GMT +3.