【问题标题】:how to read special symbol using emdk如何使用 emdk 读取特殊符号
【发布时间】:2013-10-26 14:10:12
【问题描述】:

我使用 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();

【问题讨论】:

  • '(' 和 ')' 被添加到人类可读的部分,它们没有编码在条形码中。它们是 GS1-128 应用程序标识符。
  • 感谢 charlesbridge

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


【解决方案1】:

正如 charlesbridge 所说,显示的信息与 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... 值之一。

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多