Как правильно получить данные со сканера штрих-кода Symbol LS2208 с помощью С#

Меня попросили разработать приложение C# Winforms, которое считывает штрих-коды и обрабатывает данные на основе продуктов с соответствующим штрих-кодом.

Сканер штрих-кода, который мы используем, это USB-сканер Symbol LS2208, и когда он пришел, в коробке не было инструкций или компакт-диска. Мы подключили его, он издал звуковой сигнал и смог отсканировать значения штрих-кода в блокноте в качестве теста.

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

Это просто кажется немного «неуклюжим», и мне интересно, есть ли другой способ сделать это?


person Karl    schedule 12.11.2012    source источник
comment
Не рекомендуется проверять длину сканера. Что, если кто-то по ошибке просканирует штрих-код два раза подряд?   -  person Dimitar Tsonev    schedule 12.11.2012
comment
если текстовое поле имело значение и не изменилось с момента последнего обновления, я читаю значение и очищаю текстовое поле.   -  person Karl    schedule 12.11.2012
comment
возможный дубликат Как использовать сканер в приложении c#.net   -  person FoamyGuy    schedule 13.11.2012


Ответы (5)


Отличие сканеров штрих-кода от клавиатуры в WinForms

Проверьте эту тему. Там есть все, что вам нужно.

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

Еще одно решение, если вы будете использовать тот самый сканнер.

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

person Dimitar Tsonev    schedule 12.11.2012
comment
Ссылка мертва. - person TaW; 29.10.2020
comment
Да, извините, это было 8 лет назад :( - person Dimitar Tsonev; 29.10.2020

Большинство сканеров штрих-кода отправляют пару управляющих символов до и после фактических данных штрих-кода, обычно что-то вроде ^B и ^C.

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

person PhonicUK    schedule 12.11.2012

Драйвер Motorola и SDK для сканеров

Мне кажется, что у Motorola на самом деле есть SDK для таких вещей с конкретным драйвером LS2208.

Много документации:

Документация Motorola LS2208

Серьезно, гугл моар!

person LightStriker    schedule 12.11.2012

Символ или Motorola LS2208 — довольно стандартный сканер штрих-кода. LS2208 на RJLTechnologies.com

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

Кроме того, синтаксический анализ будет упрощен, и вы можете использовать уже существующую библиотеку symbol/motorola adf для программирования сканера вне приложения либо с помощью программирования штрих-кодов, либо вы можете использовать утилиту сканирования 123SCAN2 от Motorola Solutions. Это означает, что ваше приложение немного более гибкое, не привязано к конкретному сканеру и дает большую гибкость для использования любого необходимого оборудования вместо взаимозависимости от конкретной марки или сканера.

С уважением,

person RJLTechnologyIntegration    schedule 03.09.2013

Вам нужно решение, которое будет использоваться для выполнения каких-либо действий после сканирования штрих-кода. Вы хотите что-то сделать сразу после сканирования штрих-кода устройством для считывания штрих-кодов, верно? Тогда это поможет вам больше. Напишите событие keyPress для текстового поля, которое используется для сканирования штрих-кода. Теперь, если вы напишите туда какой-либо код, он будет выполняться каждый раз, когда вы нажимаете любую клавишу на клавиатуре или каждый раз, когда сканер штрих-кода считывает символ. Если вы хотите выполнить какой-либо код после сканирования штрих-кода, вам нужно добавить условие в это событие keyPress. Сканеры штрих-кода имеют символ возврата (\n), связанный с каждым сканированием штрих-кода. Поэтому вам нужно добавить это условие в событие keyPress. Ниже приведен код для справки.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Return)
        {
            MessageBox.Show( textBox1.Text + " scanned...");
            //write your code here
        }

    }
}
person Kewal    schedule 03.02.2014