EAN-13最后一位是校验位,不可随便写。EAN缩短码的尺寸
规则如下,可自己编写函数产生,就不会有非法编码了!
EAN码校验位的计算方法
标准版和缩短版的校验码计算方法相同。 
从代码位置序号2开始,所有偶数位的数字代码求和为a。 
将上步中的a乘以3为a。 
从代码位置序号3开始,所有奇数位的数字代码求和为b。 
将a和b相加为c。 
取c的个位数d。 
用10减去d即为校验位数值。 
例:234235654652的校验码的计算如下表:
步骤1:3+2+5+5+6+2=23
步骤2:23*3=69
步骤3:2+4+3+5+4+5=23
步骤4:69+23=92
步骤5:10-2=8
步骤6:校验码为 8 
数据码校验码
代码位置序号13 12 11 10 9 8 7 6 5 4 3 2 1
数字码      2 3 4 2 3 5 6 5 4 6 5 2 ?
偶数位      3 + 2 + 5 + 5 + 6 + 2  
奇数位      2 + 4 + 3 + 5 + 4 + 5

解决方案 »

  1.   

    Xuedong(Xuedong) :
       小弟先谢过了,我现在已经为了它搞得头都大了.我明天再试若有问题我怎么找你呢?
      

  2.   

    [email protected],我在PB下实现了串口、键盘口条码扫描,条码打印,自编了一些函数,因为我试了好多种条码控件,打印都不理想,只好自己编写条码生成程序,用条码字库实现打印,可以随意控制,效果很好,我最近想把这些东西移植到VB,我现在已经做完了EAN-13标准、缩短,UPC-A标准、缩短,CODE39几种。
      

  3.   

    Xuedong(Xuedong) 兄:
        我用激打,及Zebra S400 的专业打印机,都是用直接写屏,它们的效果都不错呀!
        
       另,根据你的算法,我已经可以打印出条形码了,但又有新问题了,我的客户原先用了条形码是12位的CODE-128,他是的Zebra S400 自带的打印程序,效果都不错,但我用这控件打CODE-128,读码器却不能识别,所以我已不能使用CODE-128了.
    但用EAN-13又有长度不符的问题.不知你有没有好的建议?
      

  4.   

    Xuedong(Xuedong) 兄:
       当我最后一位刚好是0时最后一位岂不是产生10了(2位).是不是只取0?