德甲

网站消息

您以后地点地位:网站德甲>>网站消息>>办事与撑持

提要

CODE128 包含 CODE128A、CODE128B和CODE128C,从机械译码来讲,译码法式是按照肇端符来判定的,肇端符前面有FNC1的便是EAN-128,不然便是code-128。普通我们用眼睛看的话,现实操纵中有操纵标识符的是EAN128……格局为(01)XXXXXXXXXXXXXX(21)XXXXXXXX……此中(01)、(21)等是操纵标识符。但由于code-128码也能够带括号(普通不会),以是这个不是判定的精确规范,只是绝大大都能够这么分辩。

具体内容

           别的EAN128实在便是CODE128C,只是在数据前拔出一个FNC1,FNC1是一个节制字符,在CODE128C的中的值为102。
EAN128是如许构成的起头位+FUNC+数据位+校验位+竣事符。
对于校验位的计较是如许的,比方数据位为0012 (注重,EAN128必然为偶数位长度)00在CODE128中的VALUE=0,12 VALUE=12,FUNC1 VALUE=102 起头位的VALUE=105。计较公式 105+102 *1 +0*2+12*3=243而后243 mod 103 =37 便是0012的校验位。
         看了下CODE128的道理, 貌似挺庞杂, 还分3个字符集, 比拟上去 决议利用CODESET B.
先简述一下CODE128的道理吧,别离以一个unicode字符作为肇端符(Ì)和停止符(Î),
而后须要按照你的字符串, 计较出以后字符集的校验码:

 

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
Example... To calculate the check digit for the barcode data string 'Code 128'
Value                  Total
                             =====                  =====
Start Code B                   104                    104
Position 1              C       35         1 x 35 =    35
Position 2              o       79         2 x 79 =   158
Position 3              d       68         3 x 68 =   204
Position 4              e       69         4 x 69 =   276
Position 5                       0         5 x  0 =     0
Position 6              1       17         6 x 17 =   102
Position 7              2       18         7 x 18 =   126
Position 8              8       24         8 x 24 =   192
                                                     =====
                                                     1197
                                                     =====
             1197/103 = 11 remainder 64
即按照上表, 把没个字符的value值 乘上 字符在字符串中的地位(从1起头算),把每一个乘积加起来
由于CODESET B 为104(这是划定, 不要问我为甚么),以是, 还要加上 104
最初, 除以103, 所得的余数便是 校验码 的value值, 而后在表中找到对应的字符就能够了.
故意人应当注重到了, value>=95的时辰, 是不字符的(现实上仍是有的,只不过是unicode字符)
好了, 道理就论述到这里, 另有甚么不懂的话, 大师看看代码好了.
代码以下:
Public Function StringToCode128(ByVal input As String) As String
        Try
            Dim endchar As Char
                 Dim total As Int64 = 104
            Dim tmp As Integer
                 For i As Int16 = 1 To input.Length
                tmp = Asc(input.Substring(i - 1, 1))
                     If tmp >= 32 Then
                    total += (tmp - 32) * i
                Else
                    total += (tmp + 64) * i
                End If
            Next
                 Dim endAsc = total Mod 103
                 If endAsc >= 95 Then
                Select Case endAsc
                    Case 95
                        endchar = "Ã"
                    Case 96
                        endchar = "Ä"
                    Case 97
                        endchar = "Å"
                    Case 98
                        endchar = "Æ"
                    Case 99
                        endchar = "Ç"
                    Case 100
                        endchar = "È"
                    Case 101
                        endchar = "É"
                    Case 102
                        endchar = "Ê"
                End Select
            Else
                endAsc += 32
                endchar = Chr(endAsc)
            End If
                 Return "Ì" & input & endchar.ToString() & "Î"
             Catch ex As Exception
            WriteLog(ex.Message, ex.StackTrace)
            Return String.Empty
        Finally
             End Try
    End Function
 
我缩小一下下面用到的特别字符,大师看看清晰:
肇端符(Unicode=00CC):Ì停止符(Unicode=00CE):Îvalue95(Unicode=00C3):Ãvalue96(Unicode=00C4):Ävalue97(Unicode=00C5):Åvalue98(Unicode=00C6):Ævalue99(Unicode=00C7):Çvalue100(Unicode=00C8):Èvalue101(Unicode=00C9):Évalue102(Unicode=00CA):Ê

挪动商务处理计划 赢里手挪动掌上清点 赢里手挪动数据收罗 赢里手ERP挪动助手



版权一切:深圳市玖锐手艺无限公司 2008-2019 All Rights Reserved