zoukankan      html  css  js  c++  java
  • 在线生成条形码的解决方案(39码、EAN13)

    在线生成条形码的解决方案(39码、EAN-13)

    在线生成条形码的解决方案(39码、EAN-13)

    公司有个项目是使用实体刷卡的会员管理系统,并为其它系统如餐饮系统、美发厅管理系统等提供统一的会员注册与信息管理。暂定使用一维条形码卡。

    一般来说,商品最常用的编码是EAN-13,而非商品(如图书馆会员卡,驾驶证条码等)一般使用39码。

    39码 在线测试地址:http://xoyozo.me/Demo/Barcode/Code-39/

    EAN-13 在线测试地址:http://xoyozo.me/Demo/Barcode/EAN-13/

    39码

    39码比较简单,条码以“*”为起始符和终止符,见下图:

    它所能表示的字符包括:0~9 的数字,大写 A~Z 的英文字母,「+」,「-」,「*」,「/」,「%」,「$」,「.」,以及空格符(Space)等,共44组编码。

    39码表:“0”对应白色空位,“1”对应黑色线条。

    字元逻辑型态字元逻辑型态
    A110101001011N101011010011
    B101101001011O110101101001
    C110110100101P101101101001
    D101011001011Q101010110011
    E110101100101R110101011001
    F101101100101S101101011001
    G101010011011T101011011001
    H110101001101U110010101011
    I101101001101V100110101011
    J101011001101W110011010101
    K110101010011X100101101011
    L101101010011Y110010110101
    M110110101001Z100110110101

    字元逻辑型态字元逻辑型态
    0101001101101+100101001001
    1110100101011-100101011011
    2101100101011*100101101101
    3110110010101/100100101001
    4101001101011%101001001001
    5110100110101$100100100101
    6101100110101.110010101101
    7101001011011空白100110101101
    8110100101101  
    9101100101101  

    值得注意的是,39码生成的条形中,每个码之间有一个空位,经扫描枪测试,该空位与一个单位的线条宽度相等时,能确保被正确扫描。

    代码见附件

      

    EAN-13码

    EAN-13码是由13位数字构成,其中最后一位为校验码:

    左侧空白区起始符左侧数据符中间分隔符右侧数据符校验符终止符右测空白区
    9个模块3个模块42个模块5个模块35个模块7个模块3个模块9个模块

     校验码计算的步骤如下: 以 234235654652 为例:


    数据码校验码
    代码位置序号13121110987654321
    数字码234235654652?
    偶数位 3+2+5+5+6+2 
    奇数位2+4+3+6+4+5  

    ① 从序号2开始,将所有偶数位的数字代码求和,得出S1;  S1=3+2+5+5+6+2=23

    ② 从序号3开始,将所有奇数位的数字求和,得出S2;  S2=2+4+3+6+4+5=24

    ③ S3=S1*3+S2;  S3=23*3+24=93

    ④ C=10-(S3的个位数),得到校验码C的值。并且当S3的个位数为0时,C=0。  C=10-3=7

      EAN码的编码规则: 


    数字符
    左侧数据符右侧数据符
    ABC
    0000110101001111110010
    1001100101100111100110
    2001001100110111101100
    3011110101000011000010
    4010001100111011011100
    5011000101110011001110
    6010111100001011010000
    7011101100100011000100
    8011011100010011001000
    9000101100101111110100

     (关于左侧数据符,网络上的资料均显示A3及B6为6位数,经本人实践亲自查证,已修正)

    起始符:101
    中间分隔符:01010
    终止符:101。
    A、B、C中的“0”和“1”分别表示具有一个模块宽度的“空”和“条”。
    因为左侧数据编码方式有两种,要按照前置码选其中一种,如表:

    前置字符左侧数据符编码规则的选择
    0AAAAAA
    1AABABB
    2AABBAB
    3AABBBA
    4ABAABB
    5ABBAAB
    6(中国)ABBBAA
    7ABABAB
    8ABABBA
    9ABBABA
    6903244981002 (心相印软抽100抽) 为例:前置码为6,编码规则为 000000000101ABBBAA01010CCCCCC101000000000
    再对应码表替换ABC,结果为:00000000010100010110100111010000100110110100011010001101010111010010010001100110111001011100101101100101000000000
     

    39码 在线 DEMO 及源码下载:http://xoyozo.me/Demo/Barcode/Code-39/

    EAN-13 在线 DEMO 及源码下载:http://xoyozo.me/Demo/Barcode/EAN-13/

  • 相关阅读:
    LR常用函数汇总
    常用工具软件包下载地址
    MySQL分表操作的例子
    Redis性能优化之redis.cnf配置参数
    Redis监控之redis-live.conf配置
    Oracle中查询和定位数据库问题的SQL语句
    Oracle种常用性能监控SQL语句
    show processlist使用介绍
    MySQL流程控制和存储过程介绍
    MySQL字符集和排序介绍
  • 原文地址:https://www.cnblogs.com/lexus/p/2833924.html
Copyright © 2011-2022 走看看