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

F.P*_*F.P 10 specifications barcode

我在维基百科上搜索了很多页面,官方的GS1规格,但尚未找到问题的明确答案

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

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

Ter*_*ton 21

FNC1到FNC4等特殊功能字符没有任何直接的ASCII表示.支持这些字符的每个符号系统都有一个不同的方案,用于在内部表示中对它们进行编码,这与任何面向字节的字符数据完全不同.

FNC字符既可以作为标记字符(表示读者特别的内容),也可以作为格式化字符(修改编码数据的含义).因此,它们不打算直接在主机系统从基本条形码读取器接收的数据中传输.

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

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

请注意,它们可能并非在某些条形码符号系统中都可用,甚至可能以不同的,非典型的或重载的方式指定.

在符号的内部数据中编码FNC字符是通过特定于编码软件的"转义机制"来完成的.例如,要在数据"(01)00312345678906(21)123456789012(30)0144"的典型GS1结构化数据角色中使用FNC1,您可能会看到FNC1字符被转义,{FNC1}因此输入看起来像{FNC1}010031234567890621123456789012{FNC1}300144.但是每个库都有不同的接受这些非数据字符的方式,有些甚至会自动插入所需的字符[*].

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

例如,大多数符号体系的标准规定,当FNC1字符作为符合GS1应用标识符标准格式的数据中的字段分隔符使用时,它应该被解码并以GS(ASCII 29)传输.明确说明,用作GS1应用程序标识符分隔符的FNC1字符的格式化效果是将GS字符放在可变长度字段的末尾.但是在其他角色中(例如当FNC1在"第一/第二位置" 用作标志字符和非GS1格式数据时),对所携带的数据没有格式化影响,因此在解码期间没有ASCII表示.

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

一个微妙的技术要点是传输到主机的数据通常以称为"符号系统标识符"的短符号指示符标题为前缀,该符号标识符表示从中读取数据的符号的类型和用法.这通常通过符号数据中存在否则不可见的标志字符来修改,例如以"FNC1 in first"指示GS1格式化数据的存在,或者当FNC3出现在符号中的任何位置时指示读取器编程模式.细节是符号系统特定的.

[*]:Pure PostScript中的条形码编写器将自动为任何符号系统插入适当的FNC1字符,其数据仅以GS1应用程序标识符标准格式提供.它还将通过自动使用符号系统支持的FNC4字符对扩展的ASCII字符进行编码.