1

我有一个解析 GS1 条码(使用 Zebra 扫描仪)的程序,它工作得很好,至少我认为没问题......直到我遇到一个带有 2 个 GS1 条码的盒子......一个“线性”和一个数据矩阵(UDI )。对于线性,它工作得很好,我成功地取出了 GTIN 和序列号。但数据矩阵不同。出于某种原因,它的内容比线性代码长一点,它有一些生产日期,最后还有其他一些东西。

这是线性代码:(01)00380652555852(17)260221(21)25146965079(30)1 这是数据矩阵:(01)00380652555852(17)260221(21)2514696507911210222240SA60AT225

我在解析序列号时遇到问题 - 25146965079。GS1 中的序列号长度为 1-20 个字符。这个有 11 个,但是我怎样才能让它在 9 个字符之后停止?我怎么知道连续剧到此结束?我尝试将每个字符转换为 UDI,但似乎没有特殊的分隔字符或任何东西..所以老实说我不知道​​该怎么做。有谁有想法吗?

这是代码,如果有人想尝试任何东西https://prnt.sc/1x2sw8l

这些代码/产品来自制造商,所以代码应该没有任何问题,我猜......

4

2 回答 2

0

根据GS1 文档(第 156 页及以后)

所有字段都正确

(01)00380652555852 --> GTIN

(17)260221 --> 到期日期

(21)25146965079 --> 序列号

(11)210222 --> 生产日期

(240)SA60AT225 --> 附加产品标识

我尝试扫描图像,但结果与您的相同。

所以问题是分隔符不存在。这对你来说是个问题,没有分隔符就无法知道序列号在哪里结束。

于 2021-10-22T11:41:19.103 回答
0

如果您使用旨在解释 GS1结构的扫描仪验证条形码,您会发现生成的条形码实际上是不正确的。

在序列号后缺少 GS,如果不是最后一个,这些代码必须以可变长度字段结尾。这在 GS1 通用规范第 7.8.5.2 节中规定

如果没有此分隔符,您将无法知道序列的结束位置 - 或者,解释代码的机器无法知道。

告诉制造商他们需要研究GS1 规格

编辑:“正确”的版本是:

(01)00380652555852(17)260221(21)25146965079<GS>(11)210222(240)SA60AT225

括号和组分隔符<GS>不包含在代码中。

由于您有两个可变长度标识符 (21) 和 (240),因此无论您做什么都需要一个 GS。唯一的选择是对序列号进行一些填充,然后您可以不使用分隔符。

于 2021-10-22T11:47:50.780 回答