5.6. 举例说明FNC1

举个例子来说明FNC1的含义:

比如一个GS1-128的条形码,内容是:

(10)123456(30)1000(17)111230

然后对应的条码是:

图 5.2. GS1-128条码:(10)123456(30)1000(17)111230

GS1-128条码:(10)123456(30)1000(17)111230

先来说明,按照GS1-128的格式的话,对应的内容从左到右,依次是:

  1. 起始处的空白区域
  2. 起始位/起始字符
  3. (第一个)FNC1
  4. (10)123456(30)1000
  5. (数据中间的)FNC1
  6. (17)111230
  7. 校验码字符
  8. 停止位
  9. 末尾处的空白区域

其中:

3是FNC1,用于表示此条形码是GS1-128。

5是数据中间的FNC1,表示当前的可变长度的AI,即30,的数据,到此结束,后面的是其他AI的数据了。如果不加这个FNC1,那么由于AI是30所对应的数据长度最多是8,那么后面的4位数据1711,就会被误判为30的数据了。

当然,如果本身数据是这样的:

(10)123456 (17)111230(30)1000

即30这个可变长度的AI,是最后一个AI,所以当然不怕再有后面的数据被误以为是30的数据,当然可以省去最后的那个FNC1。

而作为解码器解码后,对于除了第一个FNC1,在数据中间出现的其他的FNC1,都应该替代为ASCII中GS字符=0x1D=29。而第一个FNC1,按理来说,只是GS1-128条码的标示性的内容,不属于条形码中的数据,所以不应该传输出来。

即,解码后,应该传输出来的数据是:

10123456301000[GS]17111230

其中[GS]代表ASCII中的GS字符。

[提示] ASCII控制字符

GS是ASCII的控制字符中的其中一个。关于ASCII控制字符的详细解释,可参考:ASCII字符集中的功能/控制字符 Function/Control Code/Character in ASCII