Parsing GS1条码解析

Parsing GS1条码解析,parsing,barcode,datamatrix,gs1-datamatrix,Parsing,Barcode,Datamatrix,Gs1 Datamatrix,我们需要解析另一方提供的GS1 datamatrix条形码。我们知道他们将使用GTIN(01)、批号(10)、有效期(17)、序列号(21)。问题是条形码阅读器输出一个字符串,格式如下:0107612345678900710050310AC3453G321455777。由于没有分隔符,并且根据GS1标准,序列号和批号都是可变长度的,所以我们很难识别段。我的理解是,似乎最好的解析方法是将解析器嵌入扫描设备中,而不是从应用程序中嵌入。但是我们还没有计划一个嵌入式软件。如何实现解析器?有什么建议吗?可

我们需要解析另一方提供的GS1 datamatrix条形码。我们知道他们将使用GTIN(01)、批号(10)、有效期(17)、序列号(21)。问题是条形码阅读器输出一个字符串,格式如下:0107612345678900710050310AC3453G321455777。由于没有分隔符,并且根据GS1标准,序列号和批号都是可变长度的,所以我们很难识别段。我的理解是,似乎最好的解析方法是将解析器嵌入扫描设备中,而不是从应用程序中嵌入。但是我们还没有计划一个嵌入式软件。如何实现解析器?有什么建议吗?

可变长度字段的末尾应该有一个FNC1字符,该字符未填充到最大值;使FNC1出现在
G3
21
之间

FNC1对人类是不可见的,但可以被扫描仪检测到,并将在扫描仪报告的字符串中复制。只需将字符串直接发送到文本文件,并使用十六进制读取器检查文本即可。
FNC1
应该很明显


如果可以,可以交换
21
字段和
10
字段的顺序,因为您似乎在为
21
使用纯数字。这将使生成的条形码略短。

处理此问题的一种方法是在将FNC1发送到应用程序之前,对扫描仪进行编程,用空格或其他纯文本字符替换FNC1。扫描仪制造商通常提供一种工具,用于生成可在扫描仪中进行简单替换的编程条形码。然后您可以解析数据,而不必处理特殊字符。

我测试了02034531200000111709121510ABCD12343710,10ABCD1234和3710之间应该有一个分隔符。我使用ASCII编码,获取字符串的字节,ascienceoding.GetBytes(barcodeString),它只读取38个字节,字节流中仍然缺少FNC1。缺少FNC1表明了许多事情之一。可能是标签上没有,或者扫描仪没有发送,或者您使用的软件没有正确处理。我要做的是从EAN手册中获取一个已知良好的FNC1,其中包含条形码(我不在乎他们本周的名称,这与此无关)。尝试将该代码读入记事本之类的东西,该记事本应显示额外字符(无法测试,设备不在手上)。您还可以尝试一个例程,该例程接受原始字节并显示十六进制,甚至可以读入
cmd
,并创建一个具有长度的文件。如果您可以通过这些方法之一从EAN源中检测到FNC1,则表明读卡器正常,否则应怀疑读卡器。如果您可以在EAN代码中找到FNC1,但在您的代码中找不到,则应怀疑标签生产软件或设备。如果这些简单的方法中有一种能找到FNC1,并且你确信标签是正确的,那么就怀疑你(大概)的C#例程。谢谢,Magoo。这是个好建议。我会让你不断更新。我测试的代码来自GS1手册,FNC1可以从我的iphone扫描仪中看到。所以我有很好的理由怀疑这个装置。我们决定讨论投资一种更复杂的设备。