Code128条形码

Stella981
• 阅读 601

如何看懂Code128条形码
1.条形码种类很多,常见的大概有二十多种码制,其中包括:
Code39码(标准39码)、Codabar码(库德巴码)、Code25码(标准25码)、ITF25码(交叉25码)、Matrix25码(矩阵25码)、UPC-A码、UPC-E码、EAN-13码(EAN-13国际商品条码)、EAN-8码(EAN-8国际商品条码)、中国邮政码(矩阵25码的一种变体)、Code-B码、MSI码、、Code11码、Code93码、ISBN码、ISSN码、Code128码(Code128码,包括EAN128码)、Code39EMS(EMS专用的39码)等一维条码和PDF417等二维条码。

2.CODE128码
CODE128码是广泛应用在企业内部管理、生产流程、物流控制系统方面的条码码制,由于其优良的特性在管理信息系统的设计中被广泛使用,CODE128码是应用最广泛的条码码制之一。
CODE128码是1981年引入的一种高密度条码,CODE128 码可表示从 ASCII 0 到ASCII 127 共128个字符,故称128码。其中包含了数字、字母和符号字符。
特点
●可表示高密度数据和字符串;
●每个字符由3个条、3个空、11个单元构成,字符串可变长;
●符号内含校验码;
●有三种不同的版本:A(数字、大写字母、控制字符)B(数字、大小字母、字符)C(双位数字)
CODE128A:标准数字和大写字母,控制符,特殊字符
CODE128B:标准数字和大写字母,小写字母,特殊字符
CODE128C:[00]-[99]的数字对集合,共100个
●可用128个字符分别在A、B或C三个字符串集合中。
3.如何看懂Code128条形码
Code128条形码
从左往右是黑白相间的条形码,黑的叫“条”(B),白的叫“空”(S)。
如果你仔细看,条和空都有4种不同的宽度。我们将它从细到粗赋予1、2、3、4这几个值。
然后我们开始按照粗细的值来阅读条码、结果如下:
211232 | 112232 | 131123 | 331121 | 241112 | 214121 | 112232 | 311123 | 2331112
注意这个结果是黑白相间的。别只顾着读“条”忘了都空。这边总共有55位。
Code128码有一个头、一个校验、一个尾。
尾总是2331112,这代表Code128已经结束。其余的部分是6位为一个块,包括头。
头有3种:A)211412 B)211214 C)211232 。这分别表示此Code128是什么类型的。(ABC其中一种)
我们将我们读出来的码,去掉头和尾,重新分一次块:
112232 | 131123 | 331121 | 241112 | 214121 | 112232 | 311123
正好是6位为一块。其中最后一个块(除去尾段的最后一个块)是校验位,用于检查该条形码是否被正确编码。
然后查Code 128字符表,对应各个编号表示的是什么。
我们这个是211232开头,是Code128C型。C型码是纯数字的,每个块对应2位数字。
查表可得 12 34 56 78 90 12。
Code128条形码
211214 | 123221 | 223211 | 221132 | 132212 | 2331114
128 B型 1 2 3 校验码 尾

有了这些知识,我们就可以尝试去写一个程序去生成条形码和识别条形码。
其实生成是比较简单的,而识别就比较麻烦了。通常超市是使用条码枪,通过光学原理来识别的,因为黑白条纹的反光特性不一样。
要是用软件对图像进行识别,会有些麻烦。但是,这正是我们要做的。

附:
Code128 字符表:
可以看出从0-63这前64个字符中A类和B类是一样的。
其中有些控制字符,比如CodeA表示此字段下一个个块临时使用Code128A的字符表中的字符。
还有一些其他的,不是很常见,有兴趣的朋友可以参考GBT 15425-2002 EAN UCC系统 128条码 标准。

注:ABC分别为128A类,128B类,128C类的字符表。有些B类的字符为空表示和A类的一样。

    B,S,B,S,B,S// A    B    C 
    2,1,2,2,2,2,// sp          00
    2,2,2,1,2,2,// !           01
    2,2,2,2,2,1,// "           02
    1,2,1,2,2,3,// #           03
    1,2,1,3,2,2,// $           04
    1,3,1,2,2,2,// %           05
    1,2,2,2,1,3,// &           06
    1,2,2,3,1,2,// ...         07
    1,3,2,2,1,2,// (           08
    2,2,1,2,1,3,// )           09
    2,2,1,3,1,2,// *           10
    2,3,1,2,1,2,// +           11
    1,1,2,2,3,2,// ,           12
    1,2,2,1,3,2,// -           13
    1,2,2,2,3,1,// .           14
    1,1,3,2,2,2,// /           15
    1,2,3,1,2,2,// 0           16
    1,2,3,2,2,1,// 1           17
    2,2,3,2,1,1,// 2           18
    2,2,1,1,3,2,// 3           19
    2,2,1,2,3,1,// 4           20
    2,1,3,2,1,2,// 5           21
    2,2,3,1,1,2,// 6           22
    3,1,2,1,3,1,// 7           23
    3,1,1,2,2,2,// 8           24
    3,2,1,1,2,2,// 9           25
    3,2,1,2,2,1,// :           26
    3,1,2,2,1,2,// ;           27
    3,2,2,1,1,2,// <           28
    3,2,2,2,1,1,// =           29
    2,1,2,1,2,3,// >           30
    2,1,2,3,2,1,// ?           31
    2,3,2,1,2,1,// @           32
    1,1,1,3,2,3,// A           33
    1,3,1,1,2,3,// B           34
    1,3,1,3,2,1,// C           35
    1,1,2,3,1,3,// D           36
    1,3,2,1,1,3,// E           37
    1,3,2,3,1,1,// F           38
    2,1,1,3,1,3,// G           39
    2,3,1,1,1,3,// H           40
    2,3,1,3,1,1,// I           41
    1,1,2,1,3,3,// J           42
    1,1,2,3,3,1,// K           43
    1,3,2,1,3,1,// L           44
    1,1,3,1,2,3,// M           45
    1,1,3,3,2,1,// N           46
    1,3,3,1,2,1,// O           47
    3,1,3,1,2,1,// P           48
    2,1,1,3,3,1,// Q           49
    2,3,1,1,3,1,// R           50
    2,1,3,1,1,3,// S           51
    2,1,3,3,1,1,// T           52
    2,1,3,1,3,1,// U           53
    3,1,1,1,2,3,// V           54
    3,1,1,3,2,1,// W           55
    3,3,1,1,2,1,// X           56
    3,1,2,1,1,3,// Y           57
    3,1,2,3,1,1,// Z           58
    3,3,2,1,1,1,// [           59
    3,1,3,1,1,1,// \           60
    2,2,1,4,1,1,// ]           61
    4,3,1,1,1,1,// ^           62
    1,1,1,2,2,4,// _           63
    1,1,1,4,2,2,// NUL   '     64
    1,2,1,1,2,4,// SOH   a     65
    1,2,1,4,2,1,// STX   b     66
    1,4,1,1,2,2,// ETX   c     67
    1,4,1,2,2,1,// EOT   d     68
    1,1,2,2,1,4,// ENQ   e     69
    1,1,2,4,1,2,// ACK   f     70
    1,2,2,1,1,4,// BEL   g     71
    1,2,2,4,1,1,// BS    h     72
    1,4,2,1,1,2,// HT    i     73
    1,4,2,2,1,1,// LF    j     74
    2,4,1,2,1,1,// VT    k     75
    2,2,1,1,1,4,// FF    l     76
    4,1,3,1,1,1,// CR    m     77
    2,4,1,1,1,2,// SO    n     78
    1,3,4,1,1,1,// SI    o     79
    1,1,1,2,4,2,// DLE   p     80
    1,2,1,1,4,2,// DC1   q     81
    1,2,1,2,4,1,// DC2   r     82
    1,1,4,2,1,2,// DC3   s     83
    1,2,4,1,1,2,// DC4   t     84
    1,2,4,2,1,1,// NAK   u     85
    4,1,1,2,1,2,// SYN   v     86
    4,2,1,1,1,2,// ETB   w     87
    4,2,1,2,1,1,// CAN   x     88
    2,1,2,1,3,1,// EM    y     89
    2,1,4,1,2,1,// SUB   z     90
    4,1,2,1,2,1,// ESC   {     91
    1,1,1,1,4,3,// FS    |     92
    1,1,1,3,4,1,// GS    }     93
    1,3,1,1,4,1,// RS    ~     94
    1,1,4,1,1,3,// US    DEL   95
    1,1,4,3,1,1,// FNC3  FNC3  96
    4,1,1,1,1,3,// FNC2  FNC2  97
    4,1,1,3,1,1,// SHIFT SHIFT 98
    1,1,3,1,4,1,// CodeC CodeC 99
    1,1,4,1,3,1,// CodeB FNC4  CodeB
    3,1,1,1,4,1,// FNC4  CodeA CodeA
    4,1,1,1,3,1,// FNC1  FNC1  FNC1
    2,1,1,4,1,2,//      StartA
    2,1,1,2,1,4,//      StartB
    2,1,1,2,3,2,//      StartC
    2,3,3,1,1,1,2,//     Stop
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
速看!今天我才知道,UUID还分五个版本
通用唯一识别码(英语:UniversallyUniqueIdentifier,缩写:UUID)是用于计算机(https://zh.wikiped
Wesley13 Wesley13
3年前
UIWebView长按保存图片和识别图片二维码的实现方案(使用缓存)
0x00需求:长按识别UIWebView中的二维码,如下图长按识别二维码0x01方案1:给UIWebView增加一个长按手势,激活长按手势时获取当前UIWebView的截图,分析是否包含二维码。核心代码:略优点:流程简单,可以快速实现。不足:无法实现保存UIWebView中图片,如果当前We
皕杰报表之条形码单元格
打开或新建一张报表,右键单击报表的某个单元格,设置该单元格的类型为“条形码类型”,则与该单元格相关的设置显示在属性视图中,如下图所示:​同其他类型单元格相比,条形码单元格有它特有的“条形码”属性。条形码类型:该属性用来定义条形码的类型,皕杰报表提供四种类型供用户选择,分别是“39码”、“128码”、“交叉25码”、“库德巴码”和“二维码”。"39码"是一
Stella981 Stella981
3年前
Python Challenge Level 18
初学Python,挑战一下流行的PythonChallenge,很不幸,卡在了18关~~被字符字节码之间的转换搞得焦头烂额,不过终于搞定了还是很happy的~~~主要的问题就是16进制形式的字符如何转成字节码(注意:不是encoding)如:\'89','50','4e','47','0d','0a','1a','0a','00
Stella981 Stella981
3年前
Github标星5300+,专门为程序员开发文档开源管理系统,我粉了
!(https://oscimg.oschina.net/oscnet/a11909a041dac65b1a36b2ae8b9bcc5c432.jpg)码农那点事儿关注我们,一起学习进步!(https://oscimg.oschina.net/oscnet/f4cce1b7389cb00baaab228e455da78d0
Wesley13 Wesley13
3年前
4月9日JindoFS系列直播【存储计算分离场景的计算适应优化】
主题:存储计算分离场景的计算适应优化时间:2020.4.9(周四)19:00参与方式:扫描下方二维码加入钉钉群,群内直接观看或点击直播间链接:https://developer.aliyun.com/live/2592讲师:王道远花名健身,阿里云EMR技术专家,ApacheSpa
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
分布式系统的主键生成方案对比 | 京东云技术团队
UUID​UUID(通用唯一识别码)是由32个十六进制数组成的无序字符串,通过一定的算法计算出来。为了保证其唯一性,UUID规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这