一、概述

百度百科

  条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符

  通用商品条形码一般由前缀部分、制造厂商代码、商品代码校验码组成。商品条形码中的 前缀码是用来标识国家或地区的代码,赋码权在国际物品编码协会,如 00-09代表美国、加拿大。45、49代表 日本。69代表中国大陆,471 代表中国台湾地区,489 代表香港特区。

二、运作原理

2.1、识别原理  

  要将按照一定规则编译出来的条形码转换成有意义的信息,需要经历扫描和译码两个过程。物体的颜色是由其反射光的类型决定的,白色物体能反射各种波长的可见光,黑色物体则吸收各种波长的可见光,所以当条形码扫描器光源发出的光在条形码上反射后,反射光照射到条码扫描器内部的光电转换器上,光电转换器根据强弱不同的反射光信号,转换成相应的电信号。根据原理的差异,扫描器可以分为光笔、红光CCD、激光、影像四种。电信号输出到条码扫描器的放大电路增强信号之后,再送到整形电路将模拟信号转换成数字信号。白条、黑条的宽度不同,相应的电信号持续时间长短也不同。主要作用就是防止静区宽度不足。然后译码器通过测量脉冲数字电信号0,1的数目来判别条和空的数目。通过测量0,1信号持续的时间来判别条和空的宽度。此时所得到的数据仍然是杂乱无章的,要知道条形码所包含的信息,则需根据对应的编码规则(例如:EAN-8码),将条形符号换成相应的数字、字符信息。最后,由计算机系统进行数据处理与管理,物品的详细信息便被识别了。

2.2、扫描原理

  条形码的扫描需要扫描器,扫描器利用自身光源照射条形码,再利用光电转换器接受反射的光线,将反射光线的明暗转换成数字信号。不论是采取何种规则印制的条形码,都由静区、起始字符、数据字符与终止字符组成。有些条码在数据字符与终止字符之间还有校验字符。
▲静区:静区也叫空白区,分为左空白区和右空白区,左空白区是让扫描设备做好扫描准备,右空白区是保证扫描设备正确识别条码的结束标记。
为了防止左右空白区(静区)在印刷排版时被无意中占用,可在空白区加印一个符号(左侧没有数字时印<;号,右侧没有数字时加印>;号)这个符号就叫静区标记。主要作用就是防止静区宽度不足。只要静区宽度能保证,有没有这个符号都不影响条码的识别。
▲起始字符:第一位字符,具有特殊结构,当扫描器读取到该字符时,便开始正式读取代码了。
▲数据字符:条形码的主要内容。
▲校验字符:检验读取到的数据是否正确。不同编码规则可能会有不同的校验规则。
▲终止字符:最后一位字符,一样具有特殊结构,用于告知代码扫描完毕,同时还起到只是进行校验计算的作用。
为了方便双向扫描,起止字符具有不对称结构。因此扫描器扫描时可以自动对条码信息重新排列。条码扫描器有光笔、CCD、激光、影像四种
▲光笔:最原始的扫描方式,需要手动移动光笔,并且还要与条形码接触。
▲CCD:以CCD作为光电转换器,LED作为发光光源的扫描器。在一定范围内,可以实现自动扫描。并且可以阅读各种材料、不平表面上的条码,成本也较为低廉。但是与激光式相比,扫描距离较短。
▲激光:以激光作为发光源的扫描器。又可分为线型、全角度等几种。
▲影像:以光源拍照利用自带硬解码板解码,通常影像扫描可以同时扫描一维及二维条码,如Honeywell引擎。
线型:多用于手持式扫描器,范围远,准确性高。
全角度:多为工业级固定式扫描,自动化程度高,在各种方向上都可以自动读取条码及输出电平信号,结合传感器使用。

三、编码规则

3.1、规则  

  唯一性:同种规格同种产品对应同一个产品代码,同种产品不同规格应对应不同的产品代码。根据产品的不同性质,如:重量、包装、规格、气味、颜色、形状等等,赋予不同的商品代码
  永久性:产品代码一经分配,就不再更改,并且是终身的。当此种产品不再生产时,其对应的产品代码只能搁置起来,不得重复起用再分配给其它的商品。
  无含义:为了保证代码有足够的容量以适应产品频繁的更新换代的需要,最好采用无含义的顺序码。

3.2、条形码校验码公式:

1.首先,把条形码从右往左依次编序号为“1,2,3,4……”从序号二开始把所有偶数序号位上的数相加求和,用求出的和乘3,再从序号三开始把所有奇数序号上的数相加求和,用求出的和加上刚才偶数序号上的数,然后得出和。再用10减去这个和的个位数,就得出校验码。
举个例子:
此条形码为:977167121601X(X为校验码)。
1.1+6+2+7+1+7=24
2.24×3=72
3.0+1+1+6+7+9=24
4.72+24=96
5.10-6=4
所以最后校验码X=4。此条形码为9771671216014。
如果第5步的结果个位为10,校验码是0;也就是说第4步个位为0的情况.

四、码制区别

UPC[统一产品代码]:只能表示数字,一般12位-7位

code 3:能表示字母、数字和其它一些符号共43个字符:A -Z,0 - 9,-.$/+%,pace 条形码的长度是可变化的,通常用“*”号作为起始、终止符校验码不用代码密度介于3 - 9.4个字符/每英寸,空白区是窄条的10倍,用于工业、图书、以及票证自动化管理上。

code 128:表示高密度数据, 字符串可变长,符号内含校验码,有三种不同版本:A,B,and C 可用128个字符分别在 A,B,or C 三个字符串集合中,用于工业、仓库、零售批发。

codabar[库德巴码]:可表示数字0 - 9,字符$、+、 -、还有只能用作起始/终止符的a,b,c d四个字符,可变长度,没有校验位,应用于物料管理、图书馆、血站和当前的机场包裹发送中,空白区比窄条宽10,非连续性条形码,每个字符表示为4条3空。Codabar 又名 NW 7,NW 7是在日本的叫法。

QR码:QR码呈正方形,常见的是黑白两色。在3个角落,印有较小,像“回”字的的正方图案。这3个是帮助解码软件定位的图案,用户不需要对准,无论以任何角度扫描,数据仍可正确被读取。

PDF417(二维码):多行组成的条形码,不需要连接一个数据库,本身可存储大量数据,应用于:医院、驾驶证、物料管理、货物运输,当条形码受一定破坏时,错误纠正能使条形码能正确解码PDF417,是讯宝(Symbol)科技公司于1990年研制的产品。它是一个多行、连续性、可变长、包含大量数据的符号标识。每个条形码有3 - 90行,每一行有一个起始部分、数据部分、终止部分。它的字符集包括所有128个字符,最大数据含量是1850个字符。

符合条码:这是一种新出现的码制类型,由两个很靠近的条码符号组成,并包含互相关联的数据。通常其中一个是线性符号而另一个是堆叠或阵列符号。

详细参看:百度百科

五、编码区别

5.1、一维条形码

  一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准。
  一维条形码的应用可以提高信息录入的速度,减少差错率,但是一维条形码也存在一些不足之处:
  * 数据容量较小:30个字符左右
  * 只能包含字母和数字
  * 条形码尺寸相对较大(空间利用率较低)
  * 条形码遭到损坏后便不能阅读

5.2、二位条形码

  在水平和垂直方向的二维空间存储信息的条形码, 称为二维条形码(2-dimensional bar code)。
  与一维条形码一样,二维条形码也有许多不同的编码方法,或称码制。就这些码制的编码原理而言,通常可分为以下三种类型
  ⒈ 线性堆叠式二维码
    是在一维条形码编码原理的基础上,将多个一维码在纵向堆叠而产生的。典型的码制如:Code 16K、Code 49.PDF417等。
  2.矩阵式二维码
    是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。典型的码制如:Aztec、Maxi Code、QR Code、 Data Matrix等。
  3. 邮政码
    通过不同长度的条进行编码,主要用于邮件编码,如:Postnet、BPO 4-State。
    在许多种类的二维条形码中,常用的码制有:Data Matrix,Maxi Code,Aztec,QR Code,Vericode,PDF417,Ultracode,Code 49,Code 16K 等,其中:
    * Data Matrix 主要用于电子行业小零件的标识,如英特尔(Intel)的奔腾处理器的背面就印制了这种码。
    * Maxi Code 是由美国联合包裹服务(UPS)公司研制的,用于包裹的分拣和跟踪。
    * Aztec 是由美国韦林(Welch Allyn)公司推出的,最多可容纳3832个数字或3067个字母字符或1914个字节的数据。

5.3、彩色条形码

  彩色条码主要是结合带有视像镜头的手提电话或个人电脑,利用镜头来阅读杂志、报纸、电视机或电脑屏幕上的颜色条码,并传送到数据中心。数据中心会因应收到的颜色条码来提供网站资料或消费优惠。

js-jquery-001-条形码概述的更多相关文章

  1. 标签页(tab)切换的原生js,jquery和bootstrap实现

    概述 这是我在学习课程Tab选项卡切换效果时做的总结和练手. 原课程中只有原生js实现,jquery和bootstrap实现是我自己补上的. 本节内容 标签页(tab)切换的原生js实现 标签页(ta ...

  2. js自动生成条形码插件-JsBarcode

    JsBarcode.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  3. js,jquery,css,html5特效

    包含js,jquery,css,html5特效,源代码 本文地址:http://www.cnblogs.com/roucheng/p/texiao.html 2017新年快乐特效 jQuery最新最全 ...

  4. Js/Jquery获取iframe中的元素

    转载: Js/Jquery获取iframe中的元素 - - ITeye技术网站http://java-my-life.iteye.com/blog/1275205 在web开发中,经常会用到ifram ...

  5. js/jquery/html前端开发常用到代码片段

    1.IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条件注释只能用于IE5以上,IE ...

  6. js jquery 页面加载初始化方法

    js jquery 页面加载初始化方法 一.js页面加载初始化方法 // 1.在body里面写初始化方法. <body onload='init()'> </body> < ...

  7. js jquery 选择器总结

    js jquery 选择器总结 一.原始JS选择器. id选择器:document.getElementById("test"); name选择器:document.getElem ...

  8. [JS]jQuery,javascript获得网页的高度和宽度

    [JS]jQuery,javascript获得网页的高度和宽度网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeigh ...

  9. spring访问静态资源出错,No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js...

    问题:spring访问静态资源出错,No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js... web.x ...

  10. js jquery中 的数据类型

    任何一门语言, buguan 是动态的, 还是像C语言的, 都有严格的 类型 "概念的", 这个是由于 编译器和解释器要求的, 需要的. 所以在是使用像 js, jquey ,ph ...

随机推荐

  1. NPOI导入Excel日期格式的处理 - 附类型格式匹配表

    传统操作Excel方法在部署的时候遇到很多问题,如目标主机需要安装Excel.64位电脑不支持.需要安装相关驱动程序等.所以我们一般会使用开源的NPOI来替代传统的Excel操作方法,NPOI的优点是 ...

  2. Android Studio 编写 JNI

    之前一直都不知怎么编写JNI,今天刚好学习一下,感谢梦真的指教,以及提供的文档. 参考链接 http://blog.csdn.net/u011168565/article/details/518781 ...

  3. 哪一个不是EL定义的隐式对象?(选择1项)

    哪一个不是EL定义的隐式对象?(选择1项) A cookie B.pageContext C.attributes D initParam 解答:C 1)pageContext:JSP 页的上下文.它 ...

  4. DELETE 语句用于删除表中的行。

    DELETE FROM 表名称 WHERE 列名称 = 值

  5. 多媒体开发之视频回放---dm642 做rtsp 视频回放功能

    之前看过一款海康的视频录制和回放的ipnc 四路就是: 录制还是在本地电脑录制,通过插件在本地生成录制视频和snap图片, 回放估计就是按时间点生成的文件调用本地播放. http://m.blog.c ...

  6. 剑指 offer set 21 圆圈中最后剩下的数字

    思路 1. 经典解法是用环形链表模拟圆圈, 然后每次减少一个节点. 时间复杂度为 o(mn), 空间复杂度为 o(n) 2. 转化成数学问题, 递推公式决定下一个元素. 时间复杂度为 o(n), 空间 ...

  7. ios开发之--NSMutableParagraphStyle与NSParagraphStyle的使用

    在ios6以后,苹果官方建议用“- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options ...

  8. iOS开发之 -- NSStringFromSelector的使用

    很多时候,我们要触发一个时间,需要设置点击时间,当然了,有很多,比如:按钮,手势,tableview和其他一些空间自带的点击方法, 还有一个就是NSStringFromSelector的使用,废话不多 ...

  9. 【BZOJ4881】5月月赛D 线段游戏 树状数组+set

    Description quailty和tangjz正在玩一个关于线段的游戏.在平面上有n条线段,编号依次为1到n.其中第i条线段的两端点坐 标分别为(0,i)和(1,p_i),其中p_1,p_2,. ...

  10. oracle怎么把一个用户下的表复制给另一个用户?(授予表权限)

    //把system读写权限 授权给scottselect 'Grant all on '||table_name||' to scott;' from all_tables where owner = ...