zoukankan      html  css  js  c++  java
  • 【重要】条形码原理39码和EAN13码

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

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

    在线测试地址:http://www.toolsfamily.com/tools/barcode/

    39码

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

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

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

    字元

    逻辑型态

    字元

    逻辑型态

    A

    110101001011

    N

    101011010011

    B

    101101001011

    O

    110101101001

    C

    110110100101

    P

    101101101001

    D

    101011001011

    Q

    101010110011

    E

    110101100101

    R

    110101011001

    F

    101101100101

    S

    101101011001

    G

    101010011011

    T

    101011011001

    H

    110101001101

    U

    110010101011

    I

    101101001101

    V

    100110101011

    J

    101011001101

    W

    110011010101

    K

    110101010011

    X

    100101101011

    L

    101101010011

    Y

    110010110101

    M

    110110101001

    Z

    100110110101

    字元

    逻辑型态

    字元

    逻辑型态

    0

    101001101101

    100101001001

    1

    110100101011

    100101011011

    2

    101100101011

    100101101101

    3

    110110010101

    100100101001

    4

    101001101011

    101001001001

    5

    110100110101

    100100100101

    6

    101100110101

    110010101101

    7

    101001011011

    空白

    100110101101

    8

    110100101101

     

     

    9

    101100101101

     

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

    代码见附件

     

    EAN-13码

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

    左侧空白区

    起始符

    左侧数据符

    中间分隔符

    右侧数据符

    校验符

    终止符

    右测空白区

    9个模块

    3个模块

    42个模块

    5个模块

    35个模块

    7个模块

    3个模块

    9个模块

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


    数据码

    校验码

    代码位置序号

    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

    +

    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码的编码规则: 


    数字符

    左侧数据符

    右侧数据符

    A

    B

    C

    0

    0001101

    0100111

    1110010

    1

    0011001

    0110011

    1100110

    2

    0010011

    0011011

    1101100

    3

    0111101

    0100001

    1000010

    4

    0100011

    0011101

    1011100

    5

    0110001

    0111001

    1001110

    6

    0101111

    0000101

    1010000

    7

    0111011

    0010001

    1000100

    8

    0110111

    0001001

    1001000

    9

    0001011

    0010111

    1110100

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

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

    前置字符

    左侧数据符编码规则的选择

    0

    A

    A

    A

    A

    A

    A

    1

    A

    A

    B

    A

    B

    B

    2

    A

    A

    B

    B

    A

    B

    3

    A

    A

    B

    B

    B

    A

    4

    A

    B

    A

    A

    B

    B

    5

    A

    B

    B

    A

    A

    B

    6(中国)

    A

    B

    B

    B

    A

    A

    7

    A

    B

    A

    B

    A

    B

    8

    A

    B

    A

    B

    B

    A

    9

    A

    B

    B

    A

    B

    A

    6903244981002 (心相印软抽100抽) 为例:前置码为6,编码规则为 000000000101ABBBAA01010CCCCCC101000000000
    再对应码表替换ABC,结果为:00000000010100010110100111010000100110110100011010001101010111010010010001100110111001011100101101100101000000000
     

    在线DEMO:http://www.toolsfamily.com/tools/barcode/

    源码下载:BarCode.rar

    本文原始发表于:http://xoyozo.me/blog/barcode.html

  • 相关阅读:
    恭喜,贺喜,同喜
    IIS 原理学习
    ASP.NET Ajax 学习(一)服务器端部分
    一张图片引发的血案
    poj 2828 Buy Tickets
    hdu 1556 Color the ball
    nyoj 求余数
    hdu 1358Period
    hdu 3577Fast Arrangement
    poj2752 Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/cosiray/p/1915631.html
Copyright © 2011-2022 走看看