Motorola MC3190 странное поведение при сканировании

Я пишу приложение для сканирования штрих-кода и показать его в текстовом поле. Я использую устройство Motorola MC3190 работает на Windows Embedded Compact 7.0. Для осуществления сканирования штрих-кода я использовал Symbol.dll и Symbol.barcode.dll.

У меня проблема с тем, что устройство сканирует штрих-коды, но удаляет символы до и после пробелов. Мой код

private void Form1_Load(object sender, EventArgs e)
    {
        txtBarcode.Focus();
        barcodeReader = new Symbol.Barcode.Reader();
        barcodeReaderData = new Symbol.Barcode.ReaderData(Symbol.Barcode.ReaderDataTypes.Text, Symbol.Barcode.ReaderDataLengths.MaximumLabel);
        barcodeReader.Actions.Enable(); 
        barcodeReader.ReadNotify += new EventHandler(barcodeReader_Read);  
        barcodeReader.Actions.Read(barcodeReaderData);      
    }

private void barcodeReader_Read(object sender, EventArgs e)
    {
        Symbol.Barcode.ReaderData nextReaderData = barcodeReader.GetNextReaderData();  
        txtBarcode.Text = nextReaderData.Text;
        barcodeReader.Actions.Read(barcodeReaderData);  
    }

Этот код сканирует штрих-коды без пробелов.

К вашему сведению: Ранее Motorola MC3190 не мог сканировать символы до и после пробелов, но после обращения в службу поддержки Motorola они сообщили мне некоторые изменения в устройстве. Теперь устройство принимает штрих-коды с пробелами. Я проверил в демонстрации datawedge.

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

Редактировать: введите описание изображения здесь

Когда я сканирую этот штрих-код в своем приложении, он пропускает первую цифру 0 и последнюю цифру 2. В текстовом поле отображается только 825610. Но когда я пытаюсь сканировать тот же штрих-код в Datawedge Demonstration (программное обеспечение поставляется с устройством для проверки сканирования штрих-кода), он показывает 082566102

1 ответ

Решение

Отсутствующий ноль включен в формат штрих-кода. Штрих-коды UPC-E могут начинаться с 0 или 1, которые возвращаются сканером как UPCE0 и UPCE1. Недостающее 2 - контрольная цифра.

Вы можете включить их, установив:

barcodeReader.Decoders.UPCE0.Preamble = UPC.Preambles.System;
barcodeReader.Decoders.UPCE0.ReportCheckDigit = true;

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

(Для получения дополнительной информации о штрих-кодах UPC-E см. https://en.wikipedia.org/wiki/Universal_Product_Code).

Другие вопросы по тегам