在线生成条形码的解决方案(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/

原文地址:https://www.cnblogs.com/lexus/p/2833924.html