Демонстрация работы сканера штрих кода "в разрыв клавиатуры" с использованием внешнего события.




Данная конфигурация демонстрирует возможность использования сканера "в разрыв клавиатуры" с генерацией внешнего события. При этом дополнительные драйвера для сканера не используются. В конфигурации использована компонента FormEx от АЛьФ’а (для 7.7) и перехватчик клавиатуры NATIVE от Kobra_RU (для 8.2)

Тема генерации события со сканера штрихкодов в разрыв клавиатуры поднималась не раз. Может быть я плохо искал, но ршения, которе бы меня устроило, я так и не нашел. На многочисленных формах довольно часто предлагают использовать драйвера, которые умеют эмулировать COM порт (это касается только USB сканера, но не KB). Как по мне — это не всегда хорошо. Люди, работающие с этими драйверами регулярно жалутся, что шрихкоды читаются иногда не верно, с ошибками, или  вообще прекращается прием данных со сканера. Кроме того, при работе через удаленный рабочий стол тоже возникают некоторые проблемы с пробросом портов от клиента к серверу, а тем более если таковых подключений не один десяток… Ну а об использовании сканера в разрыв клавиатуры «as is» вообще речь не ведется. Крайне неудобно в каждой форме заводить поле для считываемого штрихкода, да еще и следить за тем, что бы курсор стоял именно в этом поле, а не где попало.

Все эти проблемы поможет решить приведенная методика генерации внешнего события, как для USB, так и для чистого KB сканера. 

В публикации представлены демо конфигурации для платформ 7.7 и для 8.2 (управляемые формы)

Важно:

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

В текущих примерах для 7.7 используется префикс ‘$’. Для 8.2 — ‘C’ Prefix. (тестировалось сканером Metrologic MS9520)

Это и есть единственный минус данного решения. Тот символ, который будет запрограммирован в сканере, будет невозможно набрать с клавиатуры (хотя читать/не читать можно тоже задать программно). Решено: символ ‘$’ как текст можно ввести, например, клавишей F3 (для 7.7)

Потестить данный пример можно и без наличия сканера штрихкодов. В любой из форм можно набрать символ ‘$’ и ввести штрихкод с клавиатуры, закончив ввод клавишей [Enter]. Результат будет одинаковым…

(для тестирования без сканера в 8.2 в настройке «Использовать сканер штрихкодов» поставить НЕТ)

Чуть было не забыл… В приведенном примере решена проблема транслитерации символов, если сканер «в разрыв» считывает данные, когда включена русская раскладка клавиатуры. Для тех, кто работает только с числовыми штрихкодами это не актуально, а вот тем, кому приходится работать с серийными номерами — это проблема. Дело в том что сканеры «в разрыв» при включенной русской раскладке штрихкод [s/n00557F452AZZUI] считает как [ы/т00557А452ФЯЯГШ] что совсем не устроит ни программу учета, ни самого пользователя 🙂

Еще один момент… для нормальной отработки сканера в 8.2 кроме префикса ‘C’ (Enable «C» Prefix) в нем желательно запрограммировать задержку (25 msec Intercharacter Delay)

Источник внешней компоненты перехвата клавиатуры для 8.2: //infostart.ru/public/91306/

2 Comments

  1. BoryaMbi

    Спасибо за пример использования.

    Реально был нужен.

    Reply
  2. ManyakRus

    пригодилось 🙂

    разрыв клавиатуры это хорошо 🙂 для сканера

    Доделал немножко чтоб префикс брал один из стандартных а не $.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *