如何使用emdk读取特殊符号

时间:2013-10-17 21:31:11

标签: c# windows-mobile barcode symbols motorola-emdk

我使用Motorola EMDK sdk for .net来读取条形码,除了符号和符号外,一切正常。

http://goo.gl/7JkuYX

http://goo.gl/1w0vRi

请参阅下面的代码:

MyReader = new Symbol.Barcode.Reader();
MyReader.Actions.Enable();
MyReader.Decoders.DisableAll();
MyReader.Decoders.CODE128.Enabled = true;
MyReader.Decoders.CODE128.MinimumLength = 2;
MyReader.Decoders.CODE128.MaximumLength = 55;
MyReader.Decoders.CODE128.EAN128 = true;
MyReader.Decoders.CODE128.ISBT128 = true;
MyReader.Decoders.CODE128.Other128 = true;

MyReader.Decoders.SetEnabled(Symbol.Barcode.DecoderTypes.CODE128, true);
MyReaderData = new Symbol.Barcode.ReaderData(Symbol.Barcode.ReaderDataTypes.Binary, Symbol.Barcode.ReaderDataLengths.MaximumLabel);
MyEventHandler = new EventHandler(MyReader_ReadNotify);
MyReader.Actions.Enable();

1 个答案:

答案 0 :(得分:1)

像查尔斯布里奇所说,显示的信息与GS1条形码中编码的数据不完全匹配。

括号内的数据称为应用程序标识符(AI)。每个AI后面跟着它的数据。例如,(11)131011表示该项目于2013年10月11日生成。

如果要重新创建显示的字符串,您的应用程序需要知道每个AI的最大长度。如果AI的数据短于其最大长度,则它将以0x1d字符终止( 存在于解码数据中,但不会在屏幕上呈现)。

在您的示例中,只有序列号(21)具有可变长度,但由于它是条形码中的最后一个AI,因此不需要终止字符。

如果您愿意阅读,请参阅the GS1 spec,或this list of application identifiers以获取快速参考。

至于确定条形码是否为GS1条形码,ReaderData对象包含Type属性,至少在我的设备上,该属性将是RSS...值之一。< / p>