摩托罗拉MC3190在扫描时出现奇怪行为

时间:2015-11-03 06:57:08

标签: c# compact-framework windows-ce symbols windows-embedded-compact

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

此代码扫描没有空格的条形码。

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

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

修改 enter image description here

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

1 个答案:

答案 0 :(得分:4)

缺少的零包含在条形码格式中。 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#UPC-E