php 条码校验位,Code128条形码如何计算其宽度?如何得出其校验位?

Code128条形码是一个非常高密的字母数字条码,能够存储需要的编码数据,它可以编码所有128个ASCII码字符,它使用最少的空间。

在Code128符号体系中,每个数据字符编码都是由11个黑或白模块组成,这11个模块由三个条和三个空来形成,条和空可以由1-4个模块的宽度来组成。停止字符由13个模块组成。

code128码符号包括一个静止区(10倍X-尺寸 )、一个开始字符、编码数据、一个检测字符、停止字符和一个尾部的静止区(10倍X-尺寸),为了获得最佳的扫描效果(使用接触式扫描器),静止区至少要在6.35mm以上。

为了保证条形码的可读性(绝大都数条码扫描器都可以识度),最小的X-尺寸为7.5mil,最小的条形码高度是条形码宽度的15%或者6.35mm以上。

98a75990c0679bbe46fb7aef31738e1a.gif

有106个不同的3条/3空组合,106个组合中的任何一个都可以被分配为三个不同字符集含义之一,code128的字符设置参见下面附录。通过三个不同的开始字符来进行标识,START CodeA允许所有的键盘字符+控制字符和特殊字符进行编码,START CodeB包括所有标准字母数字键盘字符+小写字母和特殊字符,START CodeC包括一个100位数字(00-99),可用于编码数字数据的密度压缩。

在Code128条形码内,可以通过特殊的字符代码和SHIFT进行代码集之间的转移,转移到指定的字符集。

FNC代码定义为条码扫描器的指示。 FNC1是保留供将来使用。 FNC2告诉读取器去存储读取的数据和传输它。FNC3是保留读码器初始化和其他读码器功能。 FNC4是保留为未来的应用。

每个字符都有一个值,范围从0到105,这个值被用来计算code128条形码的校验字符。

校验字符通过MOD103算法,下面举例说明:

Code128条形码的高度必须至少是条形码宽度的0.15倍或者6.35mm,以两个数值的较大者为准,Code128条形码的总宽度由下面的公式得出:

L = (11C + 35)X (字母数字);

L = (5.5C + 35)X(数字仅使用codeC)

这里:

L = code128条形码的宽度(不包括静止区)(英寸为单位)

C = 数据字符、代码字符和转移字符的数量(不包括开始、停止、校验字符,他们将被自动添加)

X = X-尺寸(英寸为单位,比如,7mil条形码的X-尺寸为0.007英寸)

下面使用三个例子,分别说明code128条形码长度的计算:

1、下图条形码通过Bartender软件编辑,采用code128A字符集,条形码密度为16.39mil,字符数为7。

98a75990c0679bbe46fb7aef31738e1a.gif

根据公式进行计算L=(11*7+35)*0.01639=1.83568英寸=46.6mm

根据公式计算的code128条形码宽度与软件实际生成的条形码宽度是一致的。

2、下图条形码通过Bartender软件编辑,采用code128C字符集,条形码密度为16.39mil,字符数为10。

98a75990c0679bbe46fb7aef31738e1a.gif

根据公式(全部为codeC时的公式)进行计算L=(5.5*10+35)*0.01639=1.4751英寸=37.5mm

根据公式计算的code128条形码宽度与软件实际生成的条形码宽度是一致的。

采用code128C时也可以采用2位解码的方式,如上图所示的1256742345,可以解码为“12” “56” “74” “23” “45”总共5个字符。

根据公式进行计算L=(11*5+35)*0.01639=1.4751英寸=37.5mm,与使用另外一个公式的结果是一致的。

3、下图条形码通过Bartender软件编辑,前面的小写字母采用code128B字符集,后面的数字采用code128C字符集,中间使用了shift转换字符,条形码密度为16.39mil,字符数为10。

98a75990c0679bbe46fb7aef31738e1a.gif

下面进行字符数统计:“abc”采用code128B字符集,计算为3个字符,“6742345”采用code128C字符集,计算为4个字符,中间转换字符Shift计算为1个字符,总共为8个字符。

根据公式进行计算L=(11*8+35)*0.01639=2.01597英寸=51.2mm

根据公式计算的code128条形码宽度与软件实际生成的条形码宽度是一致的。

附录:Code128条形码字符表

下表显示了三个不同的字符集,每个字符的十进制值是用来计算校验字符。最后一列显示的字符模式的条和空。数字显示模块的数量范围内给定的空间或酒吧。为了得到扩展ASCII十进制,添加32在第一列的十进制值。这里有一个很好的扩展ASCII表。请注意,code128只能编码英文字母。

Code A

Code B

Code C

图案

想要打印的ASCII字符

0

SP

SP

00

2

1

2

2

2

2

SP(ASCII 32)

1

!

!

01

2

2

2

1

2

2

!(ASCII 33)

2

02

2

2

2

2

2

1

“(ASCII 34)

3

#

#

03

1

2

1

2

2

3

#(ASCII 35)

4

$

$

04

1

2

1

3

2

2

$ (ASCII 36)

5

%

%

05

1

3

1

2

2

2

% (ASCII 37)

6

&

&

06

1

2

2

2

1

3

& (ASCII 38)

7

07

1

2

2

3

1

2

‘ (ASCII 39)

8

(

(

08

1

3

2

2

1

2

( (ASCII 40)

9

)

)

09

2

2

1

2

1

3

) (ASCII 41)

10

*

*

10

2

2

1

3

1

2

* (ASCII 42)

11

+

+

11

2

3

1

2

1

2

+ (ASCII 43)

12

,

,

12

1

1

2

2

3

2

, (ASCII 44)

13

13

1

2

2

1

3

2

– (ASCII 45)

14

.

.

14

1

2

2

2

3

1

. (ASCII 46)

15

/

/

15

1

1

3

2

2

2

/ (ASCII 47)

16

0

0

16

1

2

3

1

2

2

0 (ASCII 48)

17

1

1

17

1

2

3

2

2

1

1(ASCII 49)

18

2

2

18

2

2

3

2

1

1

2 (ASCII 50)

19

3

3

19

2

2

1

1

3

2

3 (ASCII 51)

20

4

4

20

2

2

1

2

3

1

4 (ASCII 52)

21

5

5

21

2

1

3

2

1

2

5 (ASCII 53)

22

6

6

22

2

2

3

1

1

2

6 (ASCII 54)

23

7

7

23

3

1

2

1

3

1

7 (ASCII 55)

24

8

8

24

3

1

1

2

2

2

8 (ASCII 56)

25

9

9

25

3

2

1

1

2

2

9 (ASCII 57)

26

:

:

26

3

2

1

2

2

1

: (ASCII 57)

27

;

;

27

3

1

2

2

1

2

; (ASCII 59)

28

<

<

28

3

2

2

1

1

2

< (ASCII 60)

29

=

=

29

3

2

2

2

1

1

= (ASCII 61)

30

>

>

30

2

1

2

1

2

3

> (ASCII 62)

31

?

?

31

2

1

2

3

2

1

? (ASCII 63)

32

@

@

32

2

3

2

1

2

1

@ (ASCII 64)

33

A

A

33

1

1

1

3

2

3

A (ASCII 65)

34

B

B

34

1

3

1

1

2

3

B (ASCII 66)

35

C

C

35

1

3

1

3

2

1

C (ASCII 67)

36

D

D

36

1

1

2

3

1

3

D (ASCII 68)

37

E

E

37

1

3

2

1

1

3

E (ASCII 69)

38

F

F

38

1

3

2

3

1

1

F (ASCII 70)

39

G

G

39

2

1

1

3

1

3

G (ASCII 71)

40

H

H

40

2

3

1

1

1

3

H (ASCII 72)

41

I

I

41

2

3

1

3

1

1

I (ASCII 73)

42

J

J

42

1

1

2

1

3

3

J (ASCII 74)

43

K

K

43

1

1

2

3

3

1

K (ASCII 75)

44

L

L

44

1

3

2

1

3

1

L (ASCII 76)

45

M

M

45

1

1

3

1

2

3

M (ASCII 77)

46

N

N

46

1

1

3

3

2

1

N (ASCII 78)

47

O

O

47

1

3

3

1

2

1

O (ASCII 79)

48

P

P

48

3

1

3

1

2

1

P (ASCII 80)

49

Q

Q

49

2

1

1

3

3

1

Q (ASCII 81)

50

R

R

50

2

3

1

1

3

1

R (ASCII 82)

51

S

S

51

2

1

3

1

1

3

S (ASCII 83)

52

T

T

52

2

1

3

3

1

1

T (ASCII 84)

53

U

U

53

2

1

3

1

3

1

U (ASCII 85)

54

V

V

54

3

1

1

1

2

3

V (ASCII 86)

55

W

W

55

3

1

1

3

2

1

W (ASCII 87)

56

X

X

56

3

3

1

1

2

1

X (ASCII 88)

57

Y

Y

57

3

1

2

1

1

3

Y (ASCII 89)

58

Z

Z

58

3

1

2

3

1

1

Z (ASCII 90)

59

[

[

59

3

3

2

1

1

1

[ (ASCII 91)

60

\

\

60

3

1

4

1

1

1

\(ASCII 92)

61

]

]

61

2

2

1

4

1

1

] (ASCII 93)

62

^

^

62

4

3

1

1

1

1

^ (ASCII 94)

63

_

_

63

1

1

1

2

2

4

_ (ASCII 95)

64

NUL

`

64

1

1

1

4

2

2

` (ASCII 96)

65

SOH

a

65

1

2

1

1

2

4

a (ASCII 97)

66

STX

b

66

1

2

1

4

2

1

b (ASCII 98)

67

ETX

c

67

1

4

1

1

2

2

c (ASCII 99)

68

EOT

d

68

1

4

1

2

2

1

d (ASCII 100)

69

ENQ

e

69

1

1

2

2

1

4

e (ASCII 101)

70

ACK

f

70

1

1

2

4

1

2

f (ASCII 102)

71

BEL

g

71

1

2

2

1

1

4

g (ASCII 103)

72

BS

h

72

1

2

2

4

1

1

h (ASCII 104)

73

HT

i

73

1

4

2

1

1

2

i (ASCII 105)

74

LF

j

74

1

4

2

2

1

1

j (ASCII 106)

75

VT

k

75

2

4

1

2

1

1

k (ASCII 107)

76

FF

l

76

2

2

1

1

1

4

l (ASCII 108)

77

CR

m

77

4

1

3

1

1

1

m (ASCII 109)

78

SO

n

78

2

4

1

1

1

2

n (ASCII 110)

79

SI

o

79

1

3

4

1

1

1

o (ASCII 111)

80

DLE

p

80

1

1

1

2

4

2

p (ASCII 112)

81

DC1

q

81

1

2

1

1

4

2

q (ASCII 113)

82

DC2

r

82

1

2

1

2

4

1

r (ASCII 114)

83

DC3

s

83

1

1

4

2

1

2

s (ASCII 115)

84

DC4

t

84

1

2

4

1

1

2

t (ASCII 116)

85

NAK

u

85

1

2

4

2

1

1

u (ASCII 117)

86

SYN

v

86

4

1

1

2

1

2

v (ASCII 118)

87

ETB

w

87

4

2

1

1

1

2

w (ASCII 119)

88

CAN

x

88

4

2

1

2

1

1

x (ASCII 120)

89

EM

y

89

2

1

2

1

4

1

y (ASCII 121)

90

SUB

z

90

2

1

4

1

2

1

z (ASCII 122)

91

ESC

{

91

4

1

2

1

2

1

{ (ASCII 123)

92

FS

|

92

1

1

1

1

4

3

| (ASCII 124)

93

GS

}

93

1

1

1

3

4

1

} (ASCII 125)

94

RS

~

94

1

3

1

1

4

1

~ (ASCII 126)

95 (Hex 7F)

US

DEL

95

1

1

4

1

1

3

DEL (ASCII 127)

96 (Hex 80)

FNC 3

FNC 3

96

1

1

4

3

1

1

? (ASCII 128)

97 (Hex 81)

FNC 2

FNC 2

97

4

1

1

1

1

3

ü (ASCII 129)

98 (Hex 82)

SHIFT

SHIFT

98

4

1

1

3

1

1

é (ASCII 130)

99 (Hex 83)

CODE C

CODE C

99

1

1

3

1

4

1

a (ASCII 131)

100 (Hex 84)

CODE B

FNC 4

CODE B

1

1

4

1

3

1

? (ASCII 132)

101 (Hex 85)

FNC 4

CODE A

CODE A

3

1

1

1

4

1

à (ASCII 133)

102 (Hex 86)

FNC 1

FNC 1

FNC 1

4

1

1

1

3

1

? (ASCII 134)

开始符号

图案

想要打印的ASCII字符

103 (Hex 87)

START (Code A)

2

1

1

4

1

2

? (ASCII 135)

104 (Hex 88)

START (Code B)

2

1

1

2

1

4

? (ASCII 136)

105 (Hex 89)

START (Code C)

2

1

1

2

3

2

‰ (ASCII 137)

106 (Hex 6A)

STOP (All Codes)

2

3

3

1

1,1

2

? (ASCII 138)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值