Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221268
  • 博文数量: 70
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-08 11:53
文章分类

全部博文(70)

文章存档

2011年(1)

2010年(69)

我的朋友

分类: 系统运维

2010-12-09 09:00:08

CODE-128码是一种用模块组配法编制的条码,三套字符集共可以表示128个符号,故称128码,字符集包含数字,大小写英文字母、符号、控制符和00-99的100个双位数的数字。每个字符的条码符号由三条三空11个模块组成,终止符为四条三空13个模块。下图是三个字符集的字符与条空结构对照表。由图中可以看出,与商品条码的三个子集不同,三个字符集共用一套条空结构,每一个字符集都有107个符号,每一个符号都有一个字符值。字符集A和字符集B中的字符大部分是重叠的,只有字符值64以后的符号不同,字符集A中包含了控制符,而字符集B中包含了小写字母;字符集C除了最后七个辅助字符外,只包含了100个双位数的数字,由00-99,其对应的字符值与字符本身相同。
                 
 
        CODE-128码的编码规则:一个CODE-128条码由左空白区、起始符、数据字符、校验符、终止符、右空白区和供人识读的字符构成。
        1、起始符有三个,分别是START A,START B和START C,起始符说明了该条码中的数据使用的字符集。当表示的数据是四个或四个以上连续的数字时,必须使用START C,以缩短条码的长度。
        2、校验符由起始符和数据区的字符值决定,其计算方法参见下面的《校验码的计算》。CODE-128码的校验符是条码本身的特性,它不是数据的一部分,因此校验符不会在供人识读的数据中出现。
        3、终止符STOP由四条三空13个模块构成,三个字符集的终止符是同一个符号。
        由于字符集B中包含了比较丰富的字符,所以表示由英文字母和符号构成的数据时通常都会选用B字符集,如果只用大写字母则选字符集A和字符集B是一样的。
        编码示例:(1)BEIJING'08   (2) GS1-CHINA   (3)20091020
        (1) |START A| B | E |  I  | J |  I  | N | G |  '  | 0 | 8 |校验符|STOP|   (使用A字符集)
        把以上字符对应的条空结构连接起来就构成了一个表示BEIJING'08的条码符号。
        (2) |START B| G | S | 1 | - | C | H |  I  | N | A |校验符|STOP|  (使用B字符集)
        (3) |START C|20|09|10|20|校验符|STOP|   (使用C字符集)
        *注意使用C字符集的(3)与使用A字符集的(1)中表示数字的不同点,AB字符集只能表示单个的数字,而C字符集每一个条码符号都表示2位数字。
        CODE-128条码允许在条码中间改变使用的字符集,这个功能依靠另外三个辅助字符来完成:CODE A,CODE B,CODE C。例如POSTCODE450002用128条码表示:
        |START A| P | O | S | T | C | O | D | E | 4 | 5 | 0 | 0 | 0 | 2 |校验符|STOP|
       全部使用A字符集,一共要使用17个码字。如果把数字部分改用C字符集就会缩短条码的长度,使用15个码字:
        |START A| P | O | S | T | C | O | D | E |CODE C| 45 | 00 | 02 |校验符|STOP|
        另一个辅助字符SHIFT可以使其后的一个字符从字符集A进入字符集B或从字符集B进入字符集A,之后的第二个字符及以后的符号仍然回到原字符集,它不能进入或退出字符集C。例:
        |START B| C | h |  i  | n | a |SHIFT| CR | W | o | r |  l  | d |校验符|STOP|
       该条码在阅读时可以产生以下效果:
       China
       World
        原因是SHIFT让其后的一个字符CR使用了字符集A,而CR是计算机中的回车键,即在读出China后产生一个回车键再读World
 
CODE-128码的校验符:

        CODE-128码的校验符不会出现在数据中,也不用读出,这里仅介绍一下计算方法,实际使用中都是由条码软件自动生成的。由于CODE-128码可以表示字母、符号、控制符,而这些字符不能直接参与计算,所以要为每个字符分配一个码值。各个字符的码值可以参阅CODE-128码的标准文件。

        1、首先为字符串编制条码;

        2、从起始符开始,自左向右为每个条码字符编号;

        3、为每一个字符分配权数,起始符和第一个字符的权数为1,以后依次增加;

        4、每个字符的权数与码值相乘;

        5、所有乘积求和;

        6、第5步的结果除以103求余数;

        7、码值等于余数的字符即为校验符。见下图:

 
阅读(3181) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~