如何看懂Code128条形码

条形码就是我们看到的商品上有的那些竖条条。

要不是项目上用到这个或许我一辈子也不会对那个感兴趣。

条形码其实是分成很多类的,虽然他们看起来都差不多……

常见的条形码的码制被称为39码、128码、417码等等。

我今天主要讲的是128码即CODE128。

Code128码其实还分成三类,即128A、128B、128C。它们的区别就是对应的字符表不一样。

那么Code128码到底怎么读呢?请看下面的图:

从左往右是黑白相间的条形码,黑的叫“条”(B),白的叫“空”(S)。

如果你仔细看,条和空都有4种不同的宽度。我们将它从细到粗赋予1、2、3、4这几个值。

然后我们开始按照粗细的值来阅读条码、结果如下:

211232231131221213131222212222221224121213121211321132331112

注意这个结果是黑白相间的。别只顾着读“条”忘了都空。这边总共有61位。

Code128码有一个头一个尾。

尾总是2331112,这代表Code128已经结束。其余的部分是6位为一个块,包括头。

头有3种:A)211412 B)211214 C)211232 。这分别表示此Code128是什么类型的。(ABC其中一种)

我们将我们读出来的码,去掉头和尾,重新分一次块:

231131 | 221213 | 131222 | 212222 | 221224 | 121213 | 121211 | 32113

正好是6位为一块。其中最后一个块(除去尾段)是校验位,用于检查该条形码是否被正确编码。

然后,我们有一个字符表。(应该说是我有这张表)这张字符对应各个编号是表示的什么。

我们这个是Code128C型。C型码是纯数字的,每个块对应2位数字。

查表可得 50 09 05 00 01 91 91 。

有了这些知识,我们就可以尝试去写一个程序去生成条形码和识别条形码。

其实生成是比较简单的,而识别就比较麻烦了。通常超市是使用条码枪,通过光学原理来识别的,因为黑白条纹的反光特性不一样。

要是用软件对图像进行识别,会有些麻烦。但是,这正是我们要做的。

附:

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

时间: 2024-10-10 19:07:37

如何看懂Code128条形码的相关文章

教你看懂Code128条形码

首     页 条码控件 条码技术 条码新闻 合作伙伴 联系我们 常见问题 电话:010-84827961 当前位置:条形码控件网 > 条形码控件技术文章 > >正文 教你看懂Code128条形码 发布时间:2014-10-28 Code128码分成三类,即128A.128B.128C.它们的区别就是对应的字符表不一样. 那么Code128码到底怎么读呢?请看下面的图: 从左往右是黑白相间的条形码,黑的叫“条”(B),白的叫“空”(S). 如果你仔细看,条和空都有4种不同的宽度.我们将它

一张图看懂ANSYS17.0 流体 新功能与改进

一张图看懂ANSYS17.0 流体 新功能与改进 提交 我的留言 加载中 已留言 一张图看懂ANSYS17.0 流体 新功能与改进 原创2016-02-03ANSYS模拟在线模拟在线 模拟在线 微信号sim_ol 功能介绍这是数值模拟.仿真分析领域最大的公众号,没有之一!!! 点上方“模拟在线”查看更多“牛B”资讯! 感谢ANSYS公司对平台的友情支持,本次17.0的改进报告均为ANSYS提供(授权直接摘抄,确实给小编省事不少啊).本次首先带来是流体方面的改进和优化.后续陆续推送结构.电磁等各方

《大话西游》20年后重映(附影评:《大话西游》你真的看懂了吗?)

2014-10-25 02:43:24 来源: 北京日报(北京) 本报讯 (记者 周南焱)"电影里的台词差点儿都能背,但在影院里再看还是会笑.看到最后紫霞仙子死的时候.还是忍不住落泪! "昨天下午,经典老片<大话西游>在海航活力天宝影城又一次上映,一位重温影片的观众如是说.还有观众反映,用如今的电影技术水准来看,<大话西游>确实有点老土,但从内容来看还是那么亲切. 周星驰主演的<大话西游>20年前公映,当时票房大败. 但谁也没想到,该片通过盗版光碟和

轻松看懂机器学习十大常用算法

轻松看懂机器学习十大常用算法 通过本篇文章可以对ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题. 每个算法都看了好几个视频,挑出讲的最清晰明了有趣的,便于科普. 以后有时间再对单个算法做深入地解析. 今天的算法如下: 决策树 随机森林算法 逻辑回归 SVM 朴素贝叶斯 K最近邻算法 K均值算法 Adaboost 算法 神经网络 马尔可夫 1. 决策树 根据一些 feature 进行分类,每个节点提一个问题,通过

看懂此文,不再困惑于 JS 中的事件设计

看懂此文,不再困惑于 JS 中的事件设计 今天刚在关注的微信公众号看到的文章,关于JS事件的,写的很详细也很容易理解,相关的知识点都有总结到,看完就有种很舒畅的感觉,该串起来的知识点都串起来了.反正一字节:爽. 作者:aitangyong 链接:blog.csdn.net/aitangyong/article/details/43231111 抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享. (一)事件绑定的几种方式 javascript给DOM绑定事件

xml--小结③DTD的基本语法(看懂即可)

四.DTD的基本语法(看懂即可)1.DTD:Document Type Definition2.作用:约束XML的书写规范.3.DTD文件保存到磁盘时,必须使用UTF-8编码 4.如何引入外部的DTD文档来约束当前的XML文档DTD文件在本地:<!DOCTYPE 根元素名称 SYSTEM "DTD文件的路径">DTD文件在网络上:<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD的路径URL"> 5.D

HDOJ1015看懂题之后的简单粗暴

/* 看懂题意之后,给定target和大写字符串,即是: 把ABCDE--转换为12345-- 在给定的不重复数之中找5个数,使得其 满足a-b^2+c^3-d^4+e^5等于给定的数target 由于数据量不大,最大为20个不重复大写字母, 不多说,5重for循环搞定 */ #include <iostream> #include <algorithm> #include <stdio.h> #include <math.h> #include <m

关于内核态用户态和信号的思考(其中中断上下段没有看懂)

终于搞懂用户态内核态以及中断.信号的上下文切换关系了,处于内核态的时候用户态的上下文保存在内核栈中,此时如果发生中断或者切换,是不会区分进程处于用户态还是内核态的,直接切之,软中断导致的是内核态和用户态的转化,也即是用户上下文到内核上下文的转化,而中断导致的是用户态或者内核态上下文到中断上下文的转化,进程切换导致的是用户态/内核态上下文到用户态/内核态上下文的转化.关键是每个进程都对应一个用户栈和内核栈. 扩展阅读: http://19880512.blog.51cto.com/936364/2

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志