What type of code should I use in my application?
There are a lot of barcode symbologies out there, and its very confusing to someone just getting involved in barcoding. Luckily, many of the codes are special purpose types and can be eliminated from your possible choices. Special purpose codes include the following types:
UPC/EAN/JAN Codes - These codes are all based on the Uniform Product Code that you see every day on retail products. You've probably noticed that the code seems to consist of two halves separated by a couple of long bars in the center. The first half represents the manufacturer and the second half represents the product that the code is on. UPC is a fixed length code, that is it always has the same number of characters. There is a shortened version called UPC-E which contains fewer characters but actually can be reconstructed back to the full length code by the decoding software. EAN (European Article Numbering) and JAN (Japanese Article Numbering) are variations of the basic UPC design.
Codabar - Codabar was one of the first non-retail barcodes developed. I has come to be used almost exclusively by the photo processing and Health Care industries. Since these industries among the first to adopt barcode technology, they used the Codabar symbology.
2 of 5 Code - This again, was code developed in the early days of barcoding. It has since been replaced with Interleaved 2 of 5 which can encode almost twice as much data in the same space.
MSI/Plessy Code - Again an early symbology that is not widely used today.
Code 93 - This code was developed by Intermec Corporation as a replacement for Code 39. It encodes all 128 characters of the ASCII data set. It also encodes data in a more compact (shorter) symbol than does Code 39. Unfortunately, by the time this symbology came along, Code 39 was widely accepted and users saw little advantage in switching to the new code. A full ASCII version of Code 39 has since been developed.
Commonly used industrial barcodes:
Interleaved 2 of 5 Code - This code is used to encode numeric data only. There are no alphabetic characters or special characters. The code is composed of wide and narrow bars and wide and narrow spaces. There are always two wide elements and three narrow elements comprising each digit. One digit is encoded in the bars and another digit is encoded in the spaces. For this reason there always has to be an even number of digits in an Interleaved 2 of 5 symbol. This problem is usually overcome by adding a leading zero if the desired number of characters is odd. There is another basic problem with Interleaved 2 of 5 code that results from its fairly simple start and stop patterns. (All codes have unique patterns at the beginning and end to indicate which way the code is being read.) That is, partial reads of the code symbol can happen. This is why Interleaved 2 of 5 is usually kept at a fixed length. The decoder is told to only report data on symbols that contain a specified number of characters. Again leading zeros can be used to pad the size of the code. Another way to overcome this problem is to use a check character. All barcode printing programs that we are familiar with support the generation of a check digit and all Custom Sensors Decoders can be programmed by the user to look for a check digit. The main advantage of this code is that the code symbol is more compact than other symbologies.
Code 39 - This code is probably the most popular industrial barcode format in use today. It can be used to encode both upper case alphabetic and numeric characters as well as some special characters. The beginning and end characters are always an asterisk (*). As with interleaved 2 of 5 the code uses narrow and wide bars along with narrow and wide spaces. The difference is that the encoding for a single character is made up of a pattern of bars and spaces, so there is no requirement for an even number of characters. Code 39 can use a check character to make it more secure. Barcode printing software should automatically calculate this character and append it to the code. The decoder will verify that the check character is correct if it is setup to do so. If you are planning to use a check digit for added security, make sure your printing and decoding equipment will both handle this requirement. If you need to use characters other than upper case alpha and the few special characters, consider using the full ASCII version of the code. Again, make sure your printing and decoding hardware can handle this.
Code 128 - Code 128 is a more complex, but more versatile code than any discussed so far. It actually has three different character sets to select from. One set encodes all upper case characters and all ASCII control characters. Another encodes all upper and lower case characters and a third encodes all numeric characters. Also, through the use of special characters, you can switch between character sets within a single code symbol. To accomplish this Code 128 uses four different bar and space widths, not just two as in most codes. This obviously puts more demands on the printing and decoding technologies. An example of Code 128 usage is the package tracking labels currently used by UPS. You will also note that in this application the code is made up of fairly large bars and spaces. This lessens the demand on the printing process and makes the code readable at a further distance.