<>条形码之三九码()

(附两三种制作方法)

一、39码简介
  39码是1974年发展出来的条码,是一种可供使用者双向扫描的分散式条码,也就是说两个资料码之间,必须包含一个不具任何意义的空白(或细白,其逻辑值为0),但其具有支援文字的能力,帮应用较一般条码广泛。三九码仅有两种单元宽度,分别为宽单元和窄单元。宽单元的宽度为窄单元的1到3倍,一般多选用2倍、2.5倍或3倍。三九码的每一个条码字符由九个单元组成,其中有三个宽单元,其余是窄单元,因此称为三九码。目前主要应用于工业产品、商业资料及医院的保健资料,它的最大优点是条码的长度没有强制的限定,可用大写英文字母码,且检查码可忽略不计。39码还有编码规则简单、误码率低、所能表示字符个数多等特点,因此在各个领域有着极为广泛的应用。我国也制定了相应的国家标准(GB/T 12908-91)。
二、39码的特性
  标准的39码是由起始安全空间、起始码、资料码、可忽略不计的检查码、终止安全空间及终止码所构成,其所编成的39码如图所示。

综合来说,39码有以下特性:

o        条码的长度没有限制,可随着需求作弹性调整。但在规划长度的大小时,应考虑条码扫描器能允许的范围,避免条码扫描器无法读取完整的资料。

o        起始码和终止码必须固定为“*”字元。

o        允许条码扫描器进行双向的扫描处理。

o        由于39码具有自我检查能力,故检查码可有可无。

o        条码占用空间比较大。

o        可表示的资料包含有0-9的数字,A-Z的英文字母,以及“+”、“-”、“*”、“/”、“%”、“$”、“.”等特殊字符,再加上空白字元“ ”,共计44组编码,并可组合出128个ASCII CODE的字元符号,如表所示。

表:ASCII DODE 字元符号与39码对照表

ASCII

CODE39

ASCII

CODE39

ASCII

CODE39

ASCII

CODE39

NUL

%U

SP

Space

@

%V

%W

SOH

$A

!

/A

A

A

a

+A

STX

$B

/B

B

B

b

+B

ETX

$C

#

/C

C

C

C

+C

EOT

$D

$

/D

D

D

B

+D

ENQ

$E

%

/E

E

E

E

+E

ACK

$F

/F

F

F

F

+F

BEL

$G

/G

G

G

G

+G

BS

$H

/H

H

H

H

+H

HT

$I

/I

I

I

I

+I

LF

$J

*

/J

IJ

J

J

+J

VT

$K

+

/K

K

K

k

+K

FF

$L

,

/L

L

L

l

+L

CR

$M

-

.

M

M

M

+M

SO

$N

.

/0

N

N

N

+N

SI

$O

/

0

O

O

O

+O

DLE

$P

0

0

P

P

P

+P

DC1

$Q

1

1

Q

Q

Q

+Q

Dc2

$R

2

2

R

R

R

+R

Dc3

$S

3

3

S

S

S

+S

DC4

$T

4

4

T

T

T

+T

NAK

$U

5

5

U

U

U

+U

SYN

$V

6

6

V

V

V

+V

ETB

$W

7

7

W

W

W

+W

CAN

$X

8

8

X

X

X

+X

EM

$Y

9

9

Y

Y

Y

+Y

SUB

$Z

:

/Z

Z

Z

Z

+Z

ESC

%A

;

%F

[

%K

{

%Q

FS

%B

<

%G

"

%L

/

%R

GS

%C

=

%H

]

%M

}

%S

RS

%D

>

%I

^

%N

~

%T,%X

US

%E

?

%J

-

%0

DEL

%Y,%Z

三、39码编码方式
  39码的每一个字元编码方式都是籍由九条不同排列的线条编码而得。可区分以下四种类型,如表所示。

表:39码字元编码方式

类别

线条形态

逻辑形态

线条数目

粗黑线

11

2

细黑线

1

1

粗白线

00

2

细白线

0

1

英文字母部分

  26个英文字母所对应的39码如表所示。

表:39码编码对应表(英文字母部分)

字元

逻辑形态

字元

逻辑形态

A

110101001011

N

101011010011

B

101101001011

O

110101101001

C

110110100101

P

101101101001

D

101011001011

Q

101010110011

E

110101100101

R

110101011001

F

101101100101

S

101101011001

G

101010011011

T

101011011001

H

110101001101

U

110010101011

I

101101001101

V

100110101011

J

101011001101

W

110011010101

K

110101010011

X

100101101011

L

101101010011

Y

110010110101

M

110110101001

Z

100110110101

数字与特殊符号部分

  39码也可以表示数字0-9以及特殊符号,其对应的逻辑值如表所示。

表:39码编码对应表(英文字母部分)

字元

逻辑形态

字元

逻辑形态

0

101001101101

+

100101001001

1

110100101011

100101011011

2

101100101011

*

100101101101

3

110110010101

/

100100101001

4

101001101011

%

101001001001

5

110100110101

$

100100100101

6

101100110101

.

110010101101

7

101001011011

空白

100110101101

8

110100101101

9

101100101101

四、检查码的计算
  39码中的检查码部分,并不是必要的部分,可依实际需要,决定加入与否,但在一般的情况下通常多半是予以省略不印,以减少编码的长度与扫描的时间。39码的检查码计算必须先利用表(检查码相对值对照表)将编码字元的相对值查出,将查出的相对值累加后再除以43,得到的余数在查出相对的编码字元,即为检查码字元。
例如,要算出*S123$5*这笔资料的检查码,其计算过程如下:

S的相对值为28

;1的相对值为1

2的相对值为2

;3的相对值为3

$的相对值为39

;5的相对值为5

步骤二 将各相对值累加除以43
累加相对值=28+1+2+3+39+5=78
78/43=1 .35
步骤三 检查出余数相对编码字元
余数=35
查表,得到相对值35之编码字元为Z故,
检查码=Z,得
含检查码在内的39码,为:*S123$5Z*

39码的检查码查询表

编码字元

相对值

编码字元

相对值

0

0

F

15

1

1

G

16

2

2

H

17

3

3

I

18

4

4

J

19

5

5

K

20

6

6

L

21

7

7

M

22

8

8

N

23

9

9

O

24

A

10

P

25

B

11

Q

26

C

12

R

27

D

13

S

28

E

14

T

29

三九码的制作方法

1.在Excel中制作39码

(1)安装字体 3of9.TTF(网络上很多,可先下载该字体.即把3of9.ttf复制到C:"WINDOWS"Fonts中)

(2)在Excel单元格中输入39码,然后前后加*号,再选择字体(3 of 9 Barcode)

选择字体前如图:

选择字体后如图:

2.      在C#操作Excel处理三九码(code39)

(1)    安装字体 3of9.TTF

(2)    添加引用,如图

(3)    编程:(只对在EXCEL实现三九码作简单介绍)

using System;

using System.Reflection;

using System.Runtime.InteropServices;

using Microsoft.Office.Interop.Excel;

namespace Excel

{

/// <summary>

/// Class1

/// </summary>

class Class1

{

/// <summary>

/// Excel

/// </summary>

[STAThread]

public static void Main(string[] args)

{

Application exc = new Application();

if (exc == null)

{

Console.WriteLine("Error:Excel couldn't be started!");

return;

}

exc.Visible = true;

Workbooks workbooks = exc.Workbooks;

_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);

Sheets sheets = workbook.Worksheets;

_Worksheet worksheet = (_Worksheet)sheets.get_Item(1);

Range r = worksheet.get_Range("A1", "A1");

r.ColumnWidth = 30;

r.Value2 = "*12345ABCD*";

r.Font.Name = "3 of 9 Barcode";

}

}

}

运行结果:

3.      用.NET自带的报表服务System.Drawing.ReportDocument时,

如果 2.(1),(2)然后在PrintPage事件中加入以下部分即可:

Font  f= new Font("3 of 9 Barcode", 24, FontStyle.Bold);
string str = "*1234ABCD*";

e.Graphics.DrawString(str, f, Brushes.Black, 10f, 10f, new StringFormat());

运行结果:

(下讲介绍用软件CODESOFT 6 Enterprise制作39码及其它一维条码和二维条码

以及C#中用画图的方式产生39码图片,后续会介绍用C#制作一维条形码code 39

码,UPC码(Universal Product Code A,B,C,D,E),EAN码(EAN8,EAN13),128

码,ISBN码及二维条形码QR,PDF417,Datamatrix等)

转载于:https://www.cnblogs.com/csui2008/archive/2009/01/07/csui2008.html

条形码之三九码(上)相关推荐

  1. 二维码门禁助力于打造更智能化的出入管理-码上开门,说走就走

    随着门禁行业的逐渐成熟发展,作为智能门禁的新秀-二维码门禁以低成本.智能化.高效率的管理模式越来越受到人们的关注.特别是在智慧城市建设的呼吁下,很多写字楼.智慧社区.办公楼.酒店和公寓等场景都离不开它 ...

  2. 常见二维码上那些奇怪的图案是什么

    专题:神奇二维码  改变生活方式的黑白方块 常见的二维码上为啥三个角上有方块 这是三个定位点,图形旋转也不影响识别 要了解二维码的原理,我们先要来好好认识一下它.现在最常见的二维码是QR二维码(QR是 ...

  3. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第12波-快速生成、读取、导出条形码二维码...

    根据指定的内容生成对应的条形码或二维码,在如今移动互联网时代,并不是一件什么新鲜事,随便百度一下,都能找到好多的软件或在线网站可以帮我们做到,但细想一下,如果很偶然地只是生成一个两这样的图形,百度一下 ...

  4. 移动端扫码上传数据信息

    随着移动端设备的普及,越来越多的工作环节我们可以借助移动设备进行.移动端扫码(支持二维码.条形码)上传数据信息可以很大程度上减少数据录入纰漏,便捷地联动相关数据,提高信息准确率. 在百数的多个解决方案 ...

  5. 绑定ZBar的OpenCV条形码和QR码扫描器

    pip 安装 opencv 教程 https://hotdog29.com/?p=550 今天的博客文章分为四个部分. 在第一部分中,我将向您展示如何安装ZBar库 (使用Python绑定). ZBa ...

  6. GM65条形码二维码扫描识别模块与STM32学习

    目录 模块介绍: 简介: 原理介绍: 工作流程: 技术参数: 修改配置: 代码介绍: 串口函数: 主函数: 模块介绍: 简介: GM65 条形码二维码扫描识别模块是一种基于激光扫描头的识别设备 原理介 ...

  7. JS生成条形码/二维码 barcode.js、JsBarcode

    JS生成条形码/二维码 barcode.JsBarcode JsBarcode Barcode.js 以下代码均非纯原创.新手小白.网上一搜一大把的概念也不写了,直接上可运行的代码及遇到的小坑. Js ...

  8. Opencv+Zbar二维码识别(标准条形码/二维码识别)

    使用Opencv+Zbar组合可以很容易的识别图片中的二维码,特别是标准的二维码,这里标准指的是二维码成像清晰,图片中二维码的空间占比在40%~100%之间,这样标准的图片,Zbar识别起来很容易,不 ...

  9. 【C#】最全单据打印(打印模板、条形码二维码、字体样式、项目源码)

    系列文章 [C#]编号生成器(定义单号规则.固定字符.流水号.业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/12912978 ...

最新文章

  1. 推荐一款好用的搜索引擎(kngine)
  2. Django生命周期与中间件
  3. webpack图解-学习笔记
  4. SAP UI5 应用开发教程之十七 - 聚合绑定在 UI5 复合控件中的使用
  5. Linux系统下MySQL的导出数据语句SELECT … INTO OUTFILE的用法
  6. 详解数据存储的 6 种可选技术
  7. javascript获取系统时间时区_详解Linux操作系统修改时间和修改时区的方法
  8. 动手学习数据分析(四)——数据可视化
  9. Struts 2 的学习笔记(二) struts的配置流程和strut是2的工作原理
  10. C#操作操作类库五(字符串的常用扩展方法)
  11. 卷积神经网络问题总结
  12. javascript DOM操作
  13. python的类方法、静态方法、实例方法_Python 类方法、实例方法、静态方法
  14. 设备接入ONENET(4)ONENET虚拟MQTT设备 simulate-device 使用
  15. Numpy学习---Task03---数组的操作
  16. 第22篇 项目进度管理__计划评审技术__重点内容
  17. 【Unity】 HTFramework框架(三十九)UI的数据驱动模式,MVVM
  18. 华为手机获取root权限
  19. 开源 Python IDE PyScripter设置中文界面
  20. 计算机无法投影,如果无法连接计算机和投影仪怎么办

热门文章

  1. 台式电脑计算机图标,台式win7电脑调整显示器图标大小的两种方法
  2. Unity中的仿真丝袜渲染
  3. MAC新手教程——Apple ID怎么授权电脑
  4. 通过EndNote插入参考文献
  5. 哈夫曼编码压缩解压缩实现不同类型文件压缩比的测试
  6. 中移动M2M业务简介
  7. 2022,SCI一区(Advances in Engineering Software),Semantic Cluster Operator for SR and Its Applications
  8. Chapter 5 Blood Type——12
  9. itext隐藏table的单元格边框
  10. Android Studio的使用导入第三方Jar包