Barcode Technology Online | Home | Order | Demo | Programming | Library | Support | Contact
Barcode Components
 Search for
 CODE 93 CODE 128 UCC/EAN-128 EAN 13 UPC-A UPC-E EAN 8 ISBN BOOKLAND CODE 11 INDUSTRIAL 2 OF 5 ISBN BOOKLAND INTERLEAVED 2 OF 5 MSI CODABAR POSTNET PDF417 DATAMATRIX ASCII TABLE
 Barcode Introduction

## CODE 39 SYMBOLOGY

### Code 39 Introduction

Code 39 is an alphanumeric bar code. It is a discrete, variable-length symbology.It is still widely used-especially in inventory and industrial applications. It is the standard bar code used by the United States Department of Defense, and is also used by the Health Industry Bar Code Council (HIBCC). It is designed to encode 26 uppercase letters, 10 digits and 8 special characters(-, ., *, \$, /, +, %, SPACE). It can be extended to code all 128 ASCII characters by using a two character coding scheme. Each data character encoded in a Code 39 symbol is made up of 5 bars and 4 spaces for a total of 9 elements. Each bar or space is either "wide" or "narrow" and 3 out of the 9 elements are always wide. That's what gave the code its other name - Code 3 of 9.

### Code 39 Check Digits Calculation

Code 39 does not normally include a check character, however there is an established check character for applications that need it. The value of each data character is summed up and divided by 43. The remainder is the value of the character to use as the check character. you can find the value of each character in the following table.

To calculate the optional checksum digit example :"EASESOFT1234".

 String E A S E S O F T 1 2 3 4 Value 14 10 28 14 28 24 15 29 1 2 3 4

1. Sum the value of each of the values of each of the characters ,The sum is 14+10+28+14+28+24+15+29+1+2+3+4=172.
2. Divide 172 by 43,the remainder is 0,so the checksum digit is 0.

### Code 39 Encoding Table

Code 39 starts with '*' and stops with '*'. The table below shows the Code 39 character set.The barcode pattern means the first character is Bar,the second is Space,the Third is Bar, The "w" indicates a wide element and the "n" indicated a narrow element. Please note that every character starts and ends with a bar .We set the wide-to-narrow ratio as 3, the intercharacter gap width as 1 space.

 VALUE CHAR PATTERN VALUE CHAR PATTERN 0 0 NNNWWNWNN 22 M WNWNNNNWN 1 1 WNNWNNNNW 23 N NNNNWNNWW 2 2 NNWWNNNNW 24 O WNNNWNNWN 3 3 WNWWNNNNN 25 P NNWNWNNWN 4 4 NNNWWNNNW 26 Q NNNNNNWWW 5 5 WNNWWNNNN 27 R WNNNNNWWN 6 6 NNWWWNNNN 28 S NNWNNNWWN 7 7 NNNWNNWNW 29 T NNNNWNWWN 8 8 WNNWNNWNN 30 U WWNNNNNNW 9 9 NNWWNNWNN 31 V NWWNNNNNW 10 A NNWWNNWNN 32 W WWWNNNNNN 11 B NNWNNWNNW 33 X NWNNWNNNW 12 C WNWNNWNNN 34 Y WWNNWNNNN 13 D NNNNWWNNW 35 Z NWWNWNNNN 14 E WNNNWWNNN 36 - NWNNNNWNW 15 F NNWNWWNNN 37 . WWNNNNWNN 16 G NNNNNWWNW 38 SPACE NWWNNNWNN 17 H WNNNNWWNN 39 \$ NWNWNWNNN 18 I NNWNNWWNN 40 / NWNWNNNWN 19 J NNNNWWWNN 41 + NWNNNWNWN 20 K WNNNNNNWW 42 % NNNWNWNWN 21 L NNWNNNNWW n/a * NWNNWNWNN

### The Extended Code 39 Encoding Table

It is possible, using Code 39's "Full ASCII Mode" to encode all 128 ASCII characters. This is accomplished by using the \$, /, %, and + symbols as "shift" characters. Those characters combined with the single character that follows indicate which Full ASCII character is to be used.

 Value ASCII Code 39 Value ASCII Code 39 Value ASCII Code 39 Value ASCII Code 39 0 NUL %U 32 SP Space 64 @ %V 96 ` %W 1 SOH(Start of Heading) \$A 33 ! /A 65 A A 97 a +A 2 STX(Start of Text) \$B 34 " /B 66 B B 98 b +B 3 ETX(End of Text) \$C 35 # /C 67 C C 99 c +C 4 EOT(End of Transmission) \$D 36 \$ /D 68 D D 100 d +D 5 ENQ (Enquiry) \$E 37 % /E 69 E E 101 e +E 6 ACK (Acknowledge) \$F 38 & /F 70 F F 102 f +F 7 BEL(Bell-Audible of Attention Signal) \$G 39 ' /G 71 G G 103 g +G 8 BS(Backspace) \$H 40 ( /H 72 H H 104 H H 9 HT(Horizontal Tabulation) \$I 41 ) /I 73 I I 105 i +I 10 LF(Line Feed) \$J 42 * /J 74 J J 106 j +J 11 VT(Vertical Tabulation) \$K 43 + /K 75 K K 107 k +K 12 FF(Form Feed) \$L 44 , /L 76 L L 108 l +L 13 CR (Carriage Return) \$M 45 - - 77 M M 109 m +M 14 SO (Shift Out) \$N 46 . . 78 N N 110 n +N 15 SI(Shift In) \$O 47 / /O 79 O O 111 o +O 16 DLE (Data Link Escape) \$P 48 0 0 80 P P 112 p +P 17 DC1(Device Control 1-XON) \$Q 49 1 1 81 Q Q 113 q +Q 18 DC2 (Device Control 2) \$R 50 2 2 82 R R 114 r +R 19 DC3(Device Control 3-XOFF) \$S 51 3 3 83 S S 115 s +S 20 DC4 (Device Control 4) \$T 52 4 4 84 T T 116 t +T 21 NAK(Negative Acknowledge) \$U 53 5 5 85 U U 117 u +U 22 SYN(Synchronous Idle) \$V 54 6 6 86 V V 118 v +V 23 ETB (End of Transmission Block) \$W 55 7 7 87 W W 119 w +W 24 CAN (Cancel) \$X 56 8 8 88 X X 120 x +X 25 EM (End of Medium) \$Y 57 9 9 89 Y Y 121 y +Y 26 SUB (Substitute) \$Z 58 : /Z 90 Z Z 122 z +Z 27 ESC(Escape) %A 59 ; %F 91 [ %K 123 { %P 28 FS(File separator) %B 60 << %G 92 \ %L 124 | %Q 29 GS(Group Separator) %C 61 = %H 93 ] %M 125 } %R 30 RS(Record Separator) %D 62 > %I 94 ^ %N 126 ~ %S 31 YS(Unit Separator) %E 63 ? %J 95 _ %O 127 DEL %T

## CODE 93 SYMBOLOGY

### CODE 93 INTRODUCTION

Code 93 is an alphanumeric, continuous, variable-length symbology,it can encode the full ASCII character set. Code93 is used primarily by Canadian postal office to encode supplementary delivery information. Every symbol includes two check characters.Code 93 is similar to Code 39. It encodes 47 characters.Every code 93 symbol must include two check characters.

### CODE 93 ENCODING TABLE

 VALUE CHARACTER VALUE CHARACTER 0 0 24 O 1 1 25 P 2 2 26 Q 3 3 27 R 4 4 28 S 5 5 29 T 6 6 30 U 7 7 31 V 8 8 32 W 9 9 33 X 10 A 34 Y 11 B 35 Z 12 C 36 - 13 D 37 . 14 E 38 SPACE 15 F 39 \$ 16 G 40 / 17 H 41 + 18 I 42 % 19 J 43 \$ Replace 20 K 44 % Replace 21 L 45 / Replace 22 M 46 + Replace 23 N - * Start/Stop

Code 93 can encode 128 Full ASCII character, if the character is not included in the above table, then you need to encode it using the \$, /, %, and + symbols as "shift" characters in the Extended Encoding Table.It is the same with the Code 39 Extended Encoding Table. Note that the characters \$ ,% , / , and + in Code 93 Extended Encoding Table should use the replace one in above table.

### Code 93 Check Digits Calculation

Code 93 always includes two check characters which are referred to as "C" and "K".

1. Take the value (0 through 47) of each character in the barcode (see the table to the left). The start and stop characters are not included in the checksum calculation.
2. Assign the weight for each character. The right-most character has a weight value of 1, the second to last 2 and so on. After 20, the sequence goes back to 1.
3. Multiply the character value with weight. Sum all the results.
4. Divide the result by 47 and get the remainder. Reverse look up the remainder to get the character. This is check character "C".
5. Append the "C" character at the end of the data, and repeat the step1 through step 4. This time the weight ranges from 1 to 15. The result is the character "K".

Example: "EaseSoft", the "C" checksum would be calculated as follows:

 STRING E +Replace A +Replace S +Replace E S +Replace O +Replace F +Replace T VALUE 14 46 10 46 28 46 14 28 46 24 46 15 46 29 WEIGHT 14 13 12 11 10 9 8 7 6 5 4 3 2 1 WEIGHTED SUM 196 598 120 506 280 414 112 196 276 120 184 45 92 29

Thus the sum of the individual weighted sums is 3168. Modulo 47 gives a value of 67 with remainder 19. The value 19is associated with the J, so the "C" check character is 'J'..

The "K" checksum character is calculated in basically the same way except that the weighting goes from 1 to 15. Also, the right-most character is now the "C" checksum character which was calculated in the step above.

 STRING E +Replace A +Replace S +Replace E S +Replace O +Replace F +Replace T J VALUE 14 46 10 46 28 46 14 28 46 24 46 15 46 29 19 WEIGHT 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 WEIGHTED SUM 210 644 130 552 308 460 126 224 322 144 230 60 138 58 19

Thus the sum of the individual weighted sums is 3625. Modulo 47 gives us a value of 77 with a remainder of 6. The value 6 is associated with the ASCII character "6", so the "K" check character would be encoded using the "6" symbol encodation from the table above.

### STRUCTURE OF A CODE 93 BARCODE

A Code 93 barcode has the following structure:

1. Start and Stop with asterisk (*) character.
2. Any number of characters encoded from the table above.
3. The "C" and "K" checksum digits calculated as described above.