我正在编写一个扫描条形码的应用程序并将其显示在文本框中。我在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演示。
现在我正在使用符号汇编,这意味着我将覆盖代码中的现有功能,但到目前为止还没有运气。
当我在我的应用程序中扫描此条形码时,它跳过第一个数字0和最后一个数字2.文本框仅显示825610.但是当我尝试在Datawedge Demonstration中扫描相同的条形码时(软件附带设备来测试条形码扫描)它显示了082566102
答案 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)