目录
(一)一维码的组成
-
组成:两侧静空区、起始码、资料码、校验码、终止码
-
前置码:是隐藏的,不占用黑条白条来表示,由后面数字的奇偶性来推断出
-
静空区:位于条码两侧无任何符号的白色区域,用来提示扫码器准备扫码
-
起始码:第一位字码,表示一个条码的开始
-
资料码:标识一个条码的具体数值
-
校验码:检测识别出的字符是否有效,解码时先进行运算,如果运算结果与检查码相同,则此次读取有效
-
终止码:表示一个条码的结束
(二)基础知识
1、进制---二进制
条码的黑色条表示二进制的1,白色代表0,宽度为0.33mm,有的黑色条很宽,说明连着好几个二进制1
一维条形码只能表示数字,不能表示字母符号和汉字,每个数字由7个二进制位组成
根据EAN 码,起始符、终止符编码为101,分隔符编码为01010
2、码制
-
一维条码的码制: EAN码、39码、交叉25码、UPC码、128码、93码,ISBN码及Codabar(库德巴码)等
EAN 码:是国际通用的符号体系,是一种长度固定、无含意的条码,所表达的信息全部为数字,主要应用于商品标识
39码和128码:为目前国内企业内部自定义码制,可以根据需要确定条码的长度和信息,它编码的信息可以是数字、字母,主要应用于工业生产线领域、图书管理等
93码:是一种类似于39码的条码,它的密度较高,能够替代39码
25码:主要应用于包装、运输以及国际航空系统的机票顺序编号等
Codabar码:应用于血库、图书馆、包裹等的跟踪管理
ISBN:用于图书管理
3、条形码数字代表的含义
一维条形码都是由13个数字,前三个数:制造码,接着四个数:制造商代码,接着五个数:商品标识代码,最后一个数:校验码
该条形码:692 0152 46102 0,692(制造码),0152(制造商代码),46102商品标识代码,0(校验码)可以用来防伪以及识别校验
扫描得到的结果其实为92 0152 46102 0,根据左侧数据符6个数的奇偶性推测出前置码,最后得到一维码为692 0152 46102 0
因为前置码是隐藏的,所以只有12个数字(左侧数据符6个+右侧数据符6个)
4、一维码的宽度
一个数字由7个二进制位组成,每一个二进制位由一个黑条或者白条来表示,每一个条的宽度为0.33mm
图2-2共有12个数字表示数据信息,总共占12*7=84位
起始符,终止符编码、分隔符总共占11位
除前置码,整个区域宽度为:(84+11)* 0.33 = 31.35mm
5、 解码得到的数值是唯一的
-
给定二进制串可以找到唯一确定的数字
-
给一个数字不能唯一确定对应的是哪个二进制串,因为有三种编码方式
6、前置码是怎么得到的
-
前置码是由左侧数据符6个数的奇偶性推测出来的
-
对于条形码:692 0152 46102 0,左侧数据符为920152,右侧数据符为461020
-
因为扫码枪是从左到右扫的,前七位是0001011,对应数值9,那么左侧6个数字都应该是左侧数据符
数值 | 二进制 | 奇偶性 |
---|---|---|
9 | 0001011 | 奇 |
2 | 0011011 | 偶 |
0 | 0100111 | 偶 |
1 | 0110011 | 偶 |
5 | 0110001 | 奇 |
2 | 0010011 | 奇 |
-
根据表2-2可以得到前置码为6
7、校验码有什么用?
-
EAN-13最后一个字符是校验码,用来保证条形码识别的准确性
-
校验码的算法
-
从右至左,将13个字符顺序排列
-
将偶数位的数据相加,结果乘以3,得到P
-
将奇数位的数据相加,得到N
-
M= P + N
-
用M除以10,取余数。求余数以10为模的补数C
-
若C与校验码数值相等,则译码正确
-
(三)如何读取一维码
扫码枪利用一维码上面白和黑条的不同反光率,射出的红色光线得到不同的反射强度,然后利用光电传感器转为电信号,滤波放大后转为数字信号0,1。每个数字由7个黑色或者白色单位宽度的条组成。当然你可以用摄像头拍摄然后图像处理方式进行一维码中0,1的提取也是可以的
从左往右扫描得到左侧6个数字,同时根据编码表给出的奇偶性推导出第一个前置码为多少,再扫描右侧数据符6个,得到了总的13个数据符
这13个数字里面包含了产品的重要信息,跟数据库进行对比得到产品的生产商,产品名称等信息