摩托罗拉 MC3190 扫描时的奇怪行为

Motorola MC3190 strange behavior while scanning

我正在编写一个扫描条形码并将其显示到文本框的应用程序。我正在使用在 Windows Embedded compact 7.0 上运行的 Motorola MC3190 设备。为了实现条码扫描,我使用了Symbol.dllSymbol.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);  
    }

此代码扫描不带空格的条形码。

仅供参考:早期的摩托罗拉MC3190无法扫描空格前后的字符,但在联系摩托罗拉支持团队后,他们告诉我设备有一些变化。现在设备正在接受带空格的条形码。我查看了 datawedge 演示。

现在我正在使用符号汇编,这意味着我正在覆盖代码中的现有功能,但到目前为止运气不好。

编辑:

当我在我的应用程序中扫描此条码时,它会跳过第一个数字 0 和最后一个数字 2。文本框只显示 825610。但是当我尝试在 Datawedge 演示中扫描相同的条码时(软件附带用于测试条码的设备扫描)它显示 082566102

缺少的零包含在条形码格式中。 UPC-E 条形码可以以 0 或 1 开头,它们由扫描仪作为 UPCE0 和 UPCE1 返回。缺少的2是校验位。

您可以通过设置包括这些:

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

"spaces" 仅存在于人类条形码的表示中,它们将系统和校验和数字与重要数据分开。条形码本身没有编码的空格。

(有关 UPC-E 条形码的更多信息,请参阅 https://en.wikipedia.org/wiki/Universal_Product_Code#UPC-E