我从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数据实现解析器呢?
1条答案
按热度按时间yb3bgrhw1#
如果GS1应用程序标识符格式的数据缺少分隔符,则无法编写可靠的算法来解码这些分隔符,而对于没有预定义长度的字段(如AI(10)),* 严格要求 * 使用这些分隔符来终止字段。
如果没有这些FNC1分隔符,您的示例数据只有以下合法但意外的解码:
为了与GS1系统兼容,条形码扫描仪必须:
1.发出AIM符号标识符修饰符,指示FNC1处于第一位置(“GS1模式”),或提供相同的等效标志。
1.除第一个位置的字符外,将任何FNC1字符作为GS字符(ASCII值29)传输。
解码格式良好的GS1数据的正确算法在this answer中给出。
GS1提供了Barcode Syntax Resource,其中包括一个C库(具有纯JavaScript和WebAssembly构建版本),该库实现了解析器算法,还可以执行数据的深度验证。