1.CODE 128 标准

1.1 code 128码格式:

 

格式:

  从左起: 空白区域,起始字符(Start),数据区域(data),校验码(check),结束字符(Stop),空白区域
  所有字符条纹图像都是以黑色开始,白色结束,只有结束字符例外。

1.2 起始字符:

由于128码有三个字符集。所以有三个起始字符。

Start A : 表示后面的码值代码是从字符集A中值—— 全部大写字母和标点符号和特殊符号。
              Start A的值为:六个黑白粗细不一交替地表示为:{2,1,1,4,1,2}       

Start B: 表示字符集B——全部大小写字符和标点符号。

             Start B的值为:六个黑白粗细不一交替地表示为:{2,1,1,2,1,4} ;

Start C: 表示字符集C——数字00-99.

             Start C的值为:六个黑白粗细不一交替地表示为:{2,1,1,2,3,2}

1.3 数据字符的表示

在128码中所有数据都是形如:d1d2…di ,其中di在(1,4)之间,且1<=i<=6 ,且sum(di) =11。

即总共需要绘制成11条黑白相间的条纹。

校验码算法:

校验码=(起始字符值 +第一位数据值*1 +第二位数据值*2+ …. + 第 n 位数据*n )%103;

1.4 结束字符:

128码结束字符只有一个在编码表中以Stop 来表示,数据为:{2,3,3,1,1,1,2};

 

 

2.图形方式输出Code128C条形码

     

       最近的项目牵涉到一维条码打印的问题。条码的选型上倒没什么,因为要求短且仅包含数字,所以决定选用Code128C。在国外的网站上找了点资料研究了下,终于大致搞懂了Code128C的原理和实现方法。

       Code128C只能编码长度是偶数的数字串,这是它的前提之一。说起来编码规则很简单,00 - 99 这100个数字每个数字都预先规定好一个条码,然后把原始的待编码字符串两位两位的读取,每个两位都从上面提到的码表中找到对应的条码,追加。

      举个例子,我们要打印12345678的Code128c条码。

      首先打印Code128c的条码头,bbsbssbbbss。(b代表1个单位宽度的竖线,s代表1个单位宽度的空白)

      然后对12345678编码。

      我们把它看成 12 34 56 78。12对应的条码是bsbbssbbbss,34对应的条码是bsssbsbbsss,56对应的条码是bbbsssbsbbs,78对应的条码是bbssssbsbss。按次序堆积起来就是了。

       现在应该很好理解为什么C型128码可以打印的比较短,就是因为输出的信息被压缩到原来的一半。

       接下来就是一个自校验码。计算方法是:(105 + (1 * 12 + 2 * 34 + 3 * 56 + 4 *78)) % 103 = 47。再追加47对应的条码bsssbbbsbbs。

       这里有个注意点是,第n组数字要乘以n。比如,12是第一组所以乘1,而34是第二组所以乘2。

      最后就是终结符,固定为bbsssbbbsbsbb,也追加。

      如此得出一个可以代表条形码的字符串:
      bbsbssbbbss bsbbssbbbss bsssbsbbsss bbbsssbsbbs bbssssbsbss bsssbbbsbbs bbsssbbbsbsbb (本字符串中的空格仅作演示,实际编码的时候不会产生空格)

      也就是 StartC 12 34 56 78 47 Stop (实际上没空格)

 

3. Code 128 Barcode Table

Value Code Set
A
Code Set
B
Code Set
C
Bar/Space Pattern
B S B S B S
0 SP SP 00 2 1 2 2 2 2
1 ! ! 01 2 2 2 1 2 2
2 " " 02 2 2 2 2 2 1
3 # # 03 1 2 1 2 2 3
4 $ $ 04 1 2 1 3 2 2
5 % % 05 1 3 1 2 2 2
6 & & 06 1 2 2 2 1 3
7 ' ' 07 1 2 2 3 1 2
8 ( ( 08 1 3 2 2 1 2
9 ) ) 09 2 2 1 2 1 3
10 * * 10 2 2 1 3 1 2
11 + + 11 2 3 1 2 1 2
12 , , 12 1 1 2 2 3 2
13 - - 13 1 2 2 1 3 2
14 . . 14 1 2 2 2 3 1
15 / / 15 1 1 3 2 2 2
16 0 0 16 1 2 3 1 2 2
17 1 1 17 1 2 3 2 2 1
18 2 2 18 2 2 3 2 1 1
19 3 3 19 2 2 1 1 3 2
20 4 4 20 2 2 1 2 3 1
21 5 5 21 2 1 3 2 1 2
22 6 6 22 2 2 3 1 1 2
23 7 7 23 3 1 2 1 3 1
24 8 8 24 3 1 1 2 2 2
25 9 9 25 3 2 1 1 2 2
26 : : 26 3 2 1 2 2 1
27 ; ; 27 3 1 2 2 1 2
28 < < 28 3 2 2 1 1 2
29 = = 29 3 2 2 2 1 1
30 > > 30 2 1 2 1 2 3
31 ? ? 31 2 1 2 3 2 1
32 @ @ 32 2 3 2 1 2 1
33 A A 33 1 1 1 3 2 3
34 B B 34 1 3 1 1 2 3
35 C C 35 1 3 1 3 2 1
36 D D 36 1 1 2 3 1 3
37 E E 37 1 3 2 1 1 3
38 F F 38 1 3 2 3 1 1
39 G G 39 2 1 1 3 1 3
40 H H 40 2 3 1 1 1 3
41 I I 41 2 3 1 3 1 1
42 J J 42 1 1 2 1 3 3
43 K K 43 1 1 2 3 3 1
44 L L 44 1 3 2 1 3 1
45 M M 45 1 1 3 1 2 3
46 N N 46 1 1 3 3 2 1
47 O O 47 1 3 3 1 2 1
48 P P 48 3 1 3 1 2 1
49 Q Q 49 2 1 1 3 3 1
50 R R 50 2 3 1 1 3 1
51 S S 51 2 1 3 1 1 3
52 T T 52 2 1 3 3 1 1
53 U U 53 2 1 3 1 3 1
54 V V 54 3 1 1 1 2 3
55 W W 55 3 1 1 3 2 1
56 X X 56 3 3 1 1 2 1
57 Y Y 57 3 1 2 1 1 3
58 Z Z 58 3 1 2 3 1 1
59 [ [ 59 3 3 2 1 1 1
60 \ \ 60 3 1 4 1 1 1
61 ] ] 61 2 2 1 4 1 1
62 ^ ^ 62 4 3 1 1 1 1
63 _ _ 63 1 1 1 2 2 4
64 NUL ` 64 1 1 1 4 2 2
65 SOH a 65 1 2 1 1 2 4
66 STX b 66 1 2 1 4 2 1
67 ETX c 67 1 4 1 1 2 2
68 EOT d 68 1 4 1 2 2 1
69 ENQ e 69 1 1 2 2 1 4
70 ACK f 70 1 1 2 4 1 2
71 BEL g 71 1 2 2 1 1 4
72 BS h 72 1 2 2 4 1 1
73 HT i 73 1 4 2 1 1 2
74 LF j 74 1 4 2 2 1 1
75 VT k 75 2 4 1 2 1 1
76 FF I 76 2 2 1 1 1 4
77 CR m 77 4 1 3 1 1 1
78 SO n 78 2 4 1 1 1 2
79 SI o 79 1 3 4 1 1 1
80 DLE p 80 1 1 1 2 4 2
81 DC1 q 81 1 2 1 1 4 2
82 DC2 r 82 1 2 1 2 4 1
83 DC3 s 83 1 1 4 2 1 2
84 DC4 t 84 1 2 4 1 1 2
85 NAK u 85 1 2 4 2 1 1
86 SYN v 86 4 1 1 2 1 2
87 ETB w 87 4 2 1 1 1 2
88 CAN x 88 4 2 1 2 1 1
89 EM y 89 2 1 2 1 4 1
90 SUB z 90 2 1 4 1 2 1
91 ESC { 91 4 1 2 1 2 1
92 FS | 92 1 1 1 1 4 3
93 GS } 93 1 1 1 3 4 1
94 RS ~ 94 1 3 1 1 4 1
95 US DEL 95 1 1 4 1 1 3
96 FNC 3 FNC 3 96 1 1 4 3 1 1
97 FNC 2 FNC 2 97 4 1 1 1 1 3
98 SHIFT SHIFT 98 4 1 1 3 1 1
99 CODE C CODE C 99 1 1 3 1 4 1
100 CODE B FNC 4 CODE B 1 1 4 1 3 1
101 FNC 4 CODE A CODE A 3 1 1 1 4 1
102 FNC 1 FNC 1 FNC 1 4 1 1 1 3 1
103 Start A Start A Start A 2 1 1 4 1 2
104 Start B Start B Start B 2 1 1 2 1 4
105 Start C Start C Start C 2 1 1 2 3 2
106 Stop Stop Stop 2 3 3 1 1 1 2

  

4.参考文献

http://blog.csdn.net/jato333/article/details/3748375

http://blog.csdn.net/dengchonglin/article/details/7680722

Code 128 规则解析的更多相关文章

  1. apache伪静态规则解析

    apache伪静态规则解析 最近有个客户有个要求,昨天折腾了一会,没解决,今天没啥就多学习学习 还是根据例子来学习比较快 1 简单的重定向规则 RewriteEngine On //启动规则 Rewr ...

  2. 一维码Code 128简介及其解码实现(zxing-cpp)

    一维码Code 128:1981年推出,是一种长度可变.连续性的字母数字条码.与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大. Cod ...

  3. (zxing.net)一维码Code 128的简介、实现与解码

    一.简介 一维码Code 128:1981年推出,是一种长度可变.连续性的字母数字条码.与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大 ...

  4. 常见条码类型介绍(Code 39、Code 128、EAN-8、EAN-13、EAN-128、ISSN、TIF、TIF-14、UPC(A)、UPC(E))

    常见条码类型,如下: 1.Code 39 Code 39,又称为"Code 3 of 9",是非零售市场中最常用的格式,用于盘存和跟踪.Code 39码编码规则简单,误码率低.所能 ...

  5. C# 条形码 生成函数 (Code 128 标准

    C# 条形码 生成函数 (Code 128 标准参考:GB/T 18347-2001) 最近在做单据打印,发现客户要求用到条形码,在网上找了,发现只有一些条形码的标准,但打出来发现根本不能扫,还要加某 ...

  6. GitHub上传不了的解决 ssh: connect to host github.com port 22: Bad file number git did not exit cleanly (exit code 128)

    问题情况 本来一直用的是github的客户端,结果现在上传的时候出问题了,去网站上看,新项目已经创建,但是代码却怎么都上传不上去.于是只好用命令行的方式解决. Tortoisegit上是这样说的: g ...

  7. 二维码(QR Code)生成与解析

    二维码(QR Code)生成与解析 写在前面 经常在大街上听到扫码送什么什么,如果真闲着没事,从头扫到位,估计书包都装满了各种东西.各种扫各种送,太泛滥了.项目中从没接触过二维码的东东,最近要使用,就 ...

  8. [Jenkins][git]构建时提示Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git reset --hard" returned status code 128:

    --------------------- 如需转载,转载请注明出处. --------------------- 今日发现所有IOS构建相关的job全部失败,并提示如下错误: ERROR: Erro ...

  9. 解决git did not exit cleanly (exit code 128)

    最近在用git提交代码到部门服务器上的时候,总是有 提示 git did not exit cleanly (exit code 128).网上有2种解决方式: 1.替换路径 1.鼠标右键 -> ...

随机推荐

  1. ubuntu下git输出的颜色变化

    (这些文章都是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) 11点进家门,感觉很温暖哦. 以下是如何在用git的时候清晰的看出关键字的方法. $ vim ...

  2. [ZJOI3527][Zjoi2014]力

    [ZJOI3527][Zjoi2014]力 试题描述 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi.试求Ei. 输入 包含一个整数n,接下来n行每行输入一个数,第i行表示qi. 输出 有n ...

  3. DICOM:DICOM标准学习路线图(初稿)

    题记: DICOM医学图像处理专栏撰写已有两个年头,积累了近百篇文章.起初只是用于记录自己科研.工作中遇到的疑难问题,专注于图像处理(主要是医学图像,这也正是专栏名称最初的由来):后来逐渐延伸到了DI ...

  4. BZOJ 1600

    开始刷一些USACO月赛题了.. 这题简单递推就不说了. 然后我们发现暴力递推是$O(n^2)$的.看起来非常慢. 这道题拥有浓厚的数学色彩,因此我们可以从数学它的规律上找突破口. (于是暴力大法好, ...

  5. set_include_path详细解释

    zendframework的示例index.php里有这样一句 set_include_path('.' . PATH_SEPARATOR . '../library/'. PATH_SEPARATO ...

  6. css定位左移动多少距离

    .main .logo { padding-left:82px; } 说明: .main .logo这个标签的路径离边框的距离是82Px

  7. #ifdef 的技巧用法

    -- int _tmain(int argc, _TCHAR* argv[]) { #ifdef DEBUG cout<<"DEBUG has been defined" ...

  8. Android 使用dip单位进行布局的一点知识

    先看看怎么算出一个设备的dpi, 其实就是算出对角线上有多少个px,之后除上屏幕尺寸.比如,1280*720 的10.1寸设备,dpi = (sqrt(1280*1280+720*720))  / 1 ...

  9. 菜单栏展开和收起效果(纯js)

    2014年6月25日 15:36:29 需要关注的是: 1.用cookie保存用户当前点击的菜单项,不打扰后端代码 2.通过数学计算得到要显示和隐藏的div 3.点击事件是动态绑定到a标签上的,因此当 ...

  10. WordPress前台后台页面打开慢的解决方法

    写个人网站用WordPress程序是一个不错的选择,但是目前安装之后速度很慢,后台配置页面半天打不开,在网上查了一下原来是Google被墙导致,WordPress默认模板会加载谷歌的open-sans ...