FNC1,全称是Function 1 Symbol Character,是GS1-128或者GS1 Datamatrix条形码编码中的第一个符号字符。 FNC1是Code 128字符集中的一个字符,是个特殊字符,在某些情况下,起到一定控制作用。 FNC1不是ASCII字符集中(可见或不可见)的字符。 需要多说明一点的是,ASCII中的,共0-0XFF,256个字符,其中0-0X1F共32个控制字符,叫做不可见字符,余下0x20-0xFF就是我们常见的大小写字母,数字,常见符号等等,称作可见字符。 而FNC1本身就不属于ASCII中,所以也不是ASCII中的那种不可见的控制字符,对此,需要特别注意,不需要再搞混淆了。 第一个FNC1到底应不应该传输出来 GS1 128 Bar Code Symbol Structure The GS1 128 Bar Code Symbol is made up as follows,reading from left to right; 其中,从GS1 128字符集的组成中,我们就可以看出,本身FNC1是属于Double character Start Patten中的其中一个,和后面的Data数据,即我们真正的条形码中的数据,不是一起的,所以也不应该传输出来,而知应该传出来对应的后面的data。 而上述的FNC1,由于处在条形码最开始的位置,所以也被称为第一个FNC1,或者Start Position的FNC1。 具体实现也可以用某个ASCII字符来表示第一个FNC1 虽然作为第一个字符位置的FNC1不应该传输出来,但是作为具体的解析条形码的程序或者解码库来说,其也可以在旋转输出条形码数据的时候,把第一个FNC1传输出来,即表示出来。 FNC1被当做GS的时候,应该传输出来 对于FNC1,除了第一个的FNC1,之后出现的FNC1,即在Data数据中出现的FNC1,所起的作用就和第一个FNC1一样了,是用于分割长度的AI(APPlication Identifier,应用标识符),AI中,有固定长度的,所以有了开始的AI数字(2到4个),就可以知道后面有多少位数字,是对应的此AI的数据,但是对于长度可变的话,后面就不知道有几位数据是此AI的数据,所以要加上一个FNC1来用于区分可变字符的数据和其后的其他的AI。 此时FNC1起的作用就是区分可变长度的AI和其他AI,是用于ASCII的GS(Group Separator,组分隔符)字符=0*1D=29来表示。 (其中,也有对此处的FNC1起的作用,叫做域分隔符(Field Separator)) FNC1的总结 本身是Code 128等字符集中的一个特殊字符,本身就不属于ASCII字符集,也就不是ASCII中的某个字符。 FNC1放在GS1-128字符集中的作用呢,主要就是两个: 1.放在最开始:即放在Start字符后,处于符号集中的第二个位置,在数据之前。此处的作用是,标识此符号集是GS1-128字符集(之前被称为UCC/EAN-128)。 2.放在后面某个位置:即数据中间有FNC1的话,解码器就知道此FNC1是用于区分可变长度的AI和其他AI,然后就会将其替换为GS字符,然后同条形码的数据一起输出。 软件不同,编码方式不同,叫法也不一样,有关FNC1的操作可以参考:两种不同GS1 Datamatrix二维码制作方法。 以上就是有关FNC1的介绍,软件不同,编码方式不同,称呼可能不一样。有关应用标识符的添加可以参考:如何制作含GS1应用标识符的Data matrix二维码。 |