我使用Motorola EMDK sdk for .net来读取条形码,除了(符号和)符号外,一切正常。
请参阅下面的代码:
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();
答案 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>