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).