GS1 FNC1 字符的实际十六进制/二进制值是多少?

What is the actual HEX / binary value of the GS1 FNC1 character?

我在 wikipedia 上搜索了很多页面,官方 GS1 规范,但还没有找到问题的明确答案

GS1 FNC1字符的实际十六进制/二进制值是多少?

有很多关于如何使用 GS1 标识符、如何使用 ZPL 打印条形码以及如何对 FNC1 进行编码的信息,但我想知道该字符的实际 HEX 值。

FNC1 到 FNC4 等特殊功能字符属于“non-data 个字符”的 class 个,可以在各种条码符号体系中进行编码,但在条码中没有任何直接的 ASCII 表示解码后的数据流。支持此类字符的每个符号体系都有不同的方案,用于在其内部表示中对它们进行编码,这与任何 byte-orientated 字符数据完全不同。

FNC 字符既用作 标志字符(表示 reader 的特殊内容)又用作 格式化字符 (修改编码数据的含义)。因此,它们不打算直接在主机系统从基本条形码接收的数据中传输 reader。

每个FNC字符的通常用途如下:

  • FNC1 - 结构化数据 标志字符 指示 GS1 和 AIM 格式和组分隔符 格式字符,以及其他用途。
  • FNC2 - 消息附加 标志字符 用于在符号组中缓冲数据以供单次读取。
  • FNC3 - Reader 编程 标志字符 用于设备配置目的。
  • FNC4 - 扩展 ASCII 格式化字符 用于编码序号为 128-255 的字符。

请注意,它们在某些条形码符号体系中可能并非全部可用,甚至可能以不同的、non-typical 或重载的方式指定。

在符号的内部数据中对 FNC 字符进行编码是通过特定于编码软件的“转义机制”完成的。例如,要在数据“(01)00312345678906(21)123456789012(30)0144”的典型 GS1 结构化数据角色中使用 FNC1,您可能会看到转义为 {FNC1} 的 FNC1 字符,因此输入看起来像 {FNC1}010031234567890621123456789012{FNC1}300144。但是每个图书馆接受这些 non-data 字符的方式不同,有些甚至会自动插入所需的字符。

扫描条形码后,符号的内部数据通常会被解码,然后通过基本通道(例如键盘楔)作为要根据 Latin-1 字符编码进行解释的字节序列传输到主机。 FNC 字符不能以这种方式表示并从数据流中排除,但是它们对数据的 格式影响 仍然存在。

例如,大多数符号体系的标准规定,当 FNC1 字符用作符合 GS1 应用程序标识符标准格式的数据中的字段分隔符时,应将其解码并作为 GS (ASCII 29) 传输.明确地说,用作 GS1 应用标识符分隔符的 FNC1 字符的 格式效果 是将 GS 字符放在 variable-length 字段的末尾。但在其他角色中(例如当 FNC1 用于“first/second 位置” 作为标志字符 并且使用非 GS1 格式的数据时)有 no格式化对携带数据的影响,因此在解码期间没有 ASCII 表示。

另一个对数据具有格式化效果的特殊功能字符实例是使用 FNC4 将其范围从 7 位 ASCII 扩展到扩展 ASCII 的符号系统,如 this answer 中所述。

一个微妙的技术点是,传输到主机的数据通常以一个称为“符号标识符”的短符号指示符为前缀 header,它表示数据所来自的符号的类型和用法正在阅读。这通常会因符号数据中存在其他不可见的标志字符而被修改,例如,以指示存在带有“FNC1 in first”的 GS1 格式数据,或者当 FNC3 出现在符号中的任何位置时指示 reader 编程模式.详细信息是特定于符号系统的。

重要的是要知道(并正确设置扫描仪)第一个位置的 FNC1 字符根据 ISO/IEC 15424 转换为符号系统标识符。符号系统标识符的修饰符 m 显示是否存在是否有 FNC1。如果不这样做,应用程序将无法再看到 GS1 结构是否有意。其他结构由例如标识。数据矩阵代码中的宏 06(ISO/IEC 16022,ISO/IEC 15434)。需要弄清楚我们的差异才能采取正确的措施来处理数据。