1

我使用 .net 的摩托罗拉 EMDK sdk 来读取条形码,除了(符号和)符号外一切正常。

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();
4

1 回答 1

1

正如 charlesbridge 所说,显示的信息与 GS1 条码中编码的数据不完全匹配。

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

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

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

如果您喜欢阅读,请参阅GS1 规范,或此应用程序标识符列表以供快速参考。

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

于 2014-03-20T11:11:46.443 回答