2010-04-22 3 views
9

Недавно я приобрел сканер штрих-кода Metrologic (USB-порт), поскольку все уже знают, что он работает как эмулятор клавиатуры из коробки.Как я могу читать штрих-коды, не указав сначала текстовое поле?

Как настроить сканер и приложение так, чтобы мое приложение могло напрямую обрабатывать данные штрих-кода? То есть я не хочу, чтобы пользователь фокусировался на «текстовом поле», а затем обрабатывал данные при срабатывании события KeyPress.

ответ

5

Обычно сканеры штрих-кода могут быть настроены для отправки некоторых символов до и после строки. Поэтому, если вы добавили, например, «F12» до строки штрих-кода, вы можете зафиксировать это и перенести фокус в правильное поле.

Проверьте руководство по сканированию штрих-кода, как это сделать.

+3

Обычно вы * хотите * иметь текстовое поле в любом случае, чтобы пользователи могли вручную вводить штрих-код, если сбой сканирования. Вот почему я считаю, что это лучший выбор. –

+0

Вот как мы это делаем с проверкой читателей; будь то клавиатурный клин или USB, мы настраиваем их для отправки начального символа, который не так легко набирается на клавиатуре.Когда мы видим эту последовательность с помощью метода keydown формы, мы проглатываем эти специальные нажатия клавиш и перемещаем фокус ввода в нужное поле редактирования. Работает очень хорошо. – robsoft

1

Я думаю, самый простой способ сделать это было бы для перехвата нажатий клавиш на более высоком уровне, например, PreviewKeyDown в WinForms (или использовать KeyDown на форму, установите KeyPreview в true и использовать e.SuppressKeyPress остановить ключ спустившись к элементам управления). Там может быть быть прямым API-интерфейсом к устройству; возможно, нет.

0

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

Следующий код адаптирован из того, что я использую сам, но не проверен в его текущей форме.

// Variables defined on Form object 
GettingBarcode : boolean; 
CurrentBarcode : string; 
TypedInShiftState: integer; // 16=shift, 17=ctrl, 18=alt 

procedure Form1.FormShortCut(var Msg: TWMKey; var Handled: Boolean); 
var 
    Character:Char; 
begin 
    Character:=Chr(MapVirtualKey(Msg.CharCode,MAPVK_VK_TO_CHAR)); 
    if GettingBarcode then 
    begin 
    // Take care of case 
    if (TypedInShiftState<>16) and CharInSet(Character,['A'..'Z']) then 
     Character:=Chr(Ord(Character)+32); 
    TypedInShiftState:=0; 
    // Tab and Enter programmed as suffix on barcode scanner 
    if CharInSet(Character,[#9, #13]) then 
    begin 
     // Do something with your barcode string 
     try 
     HandleBarcode(CurrentBarcode); 
     finally 
     CurrentBarcode:=''; 
     Handled:=true; 
     GettingBarcode:=False; 
     end; 
    end 
    else if CharInSet(Character,[#0..#31]) then 
    begin 
     TypedInShiftState:=Msg.CharCode; 
     Handled:=True; 
    end 
    else begin 
     CurrentBarcode:=CurrentBarcode+Character; 
     Handled:=true; 
    end; 
    end 
    else begin 
    if Character=#0 then 
    begin 
     TypedInShiftState:=Msg.CharCode; 
    end 
    else if (TypedInShiftState=18) and (Character='A') then 
    begin 
     GettingBarcode:=True; 
     CurrentBarcode:=''; 
     Handled:=true; 
    end; 
    end; 
end; 
3

Хотя ваш штрих-код имеет разъем USB. Его можно запрограммировать как клин клавиатуры или RS232. Смотрите эту страницу http://www.instrumentsandequipmentco.com/support/faq-metrologic.htm Где это говорит

Q. В чем разница между USB-клавиатура и USB-Point-оф-продажи? Когда MX009 настроен для связи как USB-клавиатура, отсканированные данные будут отображаться в текущем приложении, которое активно на вашем ПК. Данные вводятся так же, как если бы клавиши были нажаты на клавиатуре. Когда MX009 настроен для обмена данными как устройство USB-точки продажи, данные передаются на порт USB, например данные RS232, а порт USB должен быть сконфигурирован как COM-порт. MX009 оставляет заводские настройки для USB-клавиатуры или USB-точки продажи.

Когда ваша программа принимает RS232, вам больше не нужен фокус в текстовом поле.

  1. перепрограммировать свой штрих-код, как точка-оф-продажи (RS232)
  2. Перепрограммируйте отправить суффикс обычно - возврат каретки/CR/$ 0D в конце штрих-кода.

Ищите возврат каретки, чтобы узнать, когда полный штрих-код доступен для вашего кода.