javascript 是否可以在没有FNC1的情况下解码GS1应用程序标识符格式的数据?

fquxozlt  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(213)

我从GS1应用程序标识符中的GS1数据矩阵条形码中提取了一些数据,但省略了FNC1分隔符(预期作为GS字符传输)。
以下是我希望解析为AI值的错误提取数据(缺少代表条形码消息的FNC1分隔符的GS字符):

01012345678912311700112210123421555666777

预期浸提如下(出于隐私考虑,设盲)

(01) 01234567891231
(17) 001122
(10) 1234
(21) 555666777

但是,根据this notice(第2页),应用程序标识符定义为固定长度或可变长度值。
例如:

  • (00)的长度为18
  • (01)的长度为14
  • (21)的最大长度为20

我怎样才能为缺少可变长度字段分隔符的GS1数据实现解析器呢?

yb3bgrhw

yb3bgrhw1#

如果GS1应用程序标识符格式的数据缺少分隔符,则无法编写可靠的算法来解码这些分隔符,而对于没有预定义长度的字段(如AI(10)),* 严格要求 * 使用这些分隔符来终止字段。
如果没有这些FNC1分隔符,您的示例数据只有以下合法但意外的解码:

(01) 01234567891231
(17) 001122
(10) 123421555666777

为了与GS1系统兼容,条形码扫描仪必须:
1.发出AIM符号标识符修饰符,指示FNC1处于第一位置(“GS1模式”),或提供相同的等效标志。
1.除第一个位置的字符外,将任何FNC1字符作为GS字符(ASCII值29)传输。

  • 如果读卡器不遵循上述协议,则无法将基本字符串传递给主机。此协议是所有支持GS1 AI数据的条形码符号规范的强制性部分。声称支持GS1符号但不按照协议传输FNC1的任何读卡器均存在故障。*

解码格式良好的GS1数据的正确算法在this answer中给出。
GS1提供了Barcode Syntax Resource,其中包括一个C库(具有纯JavaScript和WebAssembly构建版本),该库实现了解析器算法,还可以执行数据的深度验证。

相关问题