"The Barcode Barbarians"
Team Members: Erik Day, John Holdeman and Travis Dorschel
The original
question that we were asked:
How would the string CSE370 be represented at the physical level in the following media? Pick one:
The
exact question that we will answer in our report:
How would the string CSE370 be represented at the physical level in Barcode 16K format?
The background
and assumptions that are behind our answer:
Clarifying a vague question:
There is not one specific representation of the string “CSE370” in barcode. There are many different barcode formats that differ in the way they represent data or characters. They also differ as to what kinds of data and characters they are able to represent. In order to provide a specific answer to the original question we had to choose a specific barcode format by which to represent the string “CSE370”.
Different barcode formats:
When we began looking for an appropriate barcode format we found that some barcodes encode only numerical information and other barcodes can encode alphanumeric characters. For example, a barcode commonly used in the United States is the UPC (Universal Product Code) barcode. The UPC is also the "original" barcode. The UPC was designed for the grocery industry. Because of the large number of items normally "checked-out" at the grocery store, a method was needed to speed up and eliminate "human" cashier errors. In 1973, the UPC barcode was born (http://www.av1611.org/666/barcode.html). The UPC format can only encode numerical characters, which would not suit our purposes for encoding the string "CSE370" in barcode format. There are several other similar looking barcode formats that have the added ability to encode letters and other ASCII symbols. Code 3 of 9 and Code 128 are two widely used formats that would fall into this category.
The format we chose, Code 16K:
While Code 3 of 9 and Code 128 are capable of representing the string “CSE370” we chose to use Code 16K which is a bit more interesting. Code 16K is a format that uses multiple rows and is based on UPC and Code 128 elements. It can encode 77 ASCII characters or 154 digits on an area of 2.4cm2. The Code 16K format can encode alphanumeric characters, which makes it a perfect choice for our assignment.
How Code 16K works:
Code 16K uses between 2 and 16 rows to represent its data. Each row has its own unique start and stop characters, which are used for identification. This allows the barcode reader can scan them in any order and then arrange them properly once they are all read. The start and stop characters for row identification can be viewed on the table shown below. The chart shows the row number on the left and then how its start and stop characters pairings would be represented with bars, on the right. The series of positive and negative numbers 1 - 4 represent the width of the bars and spaces. Bar widths are denoted as positive numbers and space widths are denoted by negative numbers.
ROW |
START |
STOP |
1 |
3 -2 1 -1 1 |
-3 2 -1 1 |
2 |
2 -2 2 -1 1 |
-2 2 -2 1 |
3 |
2 -1 2 -2 1 |
-2 1 -2 2 |
4 |
1 -4 1 -1 1 |
-1 4 -1 1 |
5 |
1 -1 3 -2 1 |
-1 1 -3 2 |
6 |
1 -2 3 -1 1 |
-1 2 -3 1 |
7 |
1 -1 1 -4 1 |
-1 1 -1 4 |
8 |
3 -1 1 -2 1 |
-3 1 -1 2 |
9 |
3 -2 1 -1 1 |
-1 1 -3 2 |
10 |
2 -2 2 -1 1 |
-1 2 -3 1 |
11 |
2 -1 2 -2 1 |
-1 1 -1 4 |
12 |
1 -4 1 -1 1 |
-3 1 -1 2 |
13 |
1 -1 3 -2 1 |
-3 2 -1 1 |
14 |
1 -2 3 -1 1 |
-2 2 -2 1 |
15 |
1 -1 1 -4 1 |
-2 1 -2 2 |
16 |
3 -1 1 -2 1 |
-1 4 -1 1 |
Each row also contains 5 ASCII characters. If necessary, pad characters are added to get the required total of 5. The table showing the representation of all characters is pretty large and uninteresting and is therefore not included in this report. Every character has 3 bars and three spaces and is of the form SBSBSB. This is the same form as Code 128. Each character is associated with an unique numeric value that is used in calculating the checksum.
The reliability of the data is guaranteed by means of 2 checksums located at the end of the last row. Calculation takes place according to Modulo 107 (http://www.automation-associates.com/barcodefacts3.htm).
Below is the general format of a 16k barcode.
The answer itself:
"CSE370" in Barcode 16K format
Character |
Value |
Space/Bar |
C |
35 |
-1 3 -1 3 -2 1 |
S |
51 |
-2 1 -3 1 -1 3 |
E |
37 |
-1 3 -2 1 -1 3 |
3 |
19 |
-2 2 -1 1 -3 2 |
7 |
23 |
-3 1 -2 1 -3 1 |
0 |
16 |
-1 2 -3 1 -2 2 |
Conclusions or comments:
Code 16K is quite a bit more complicated than single-row alphanumeric barcode formats like Code 3 of 9 and Code 128. These other formats could almost be read by eye with reference to a character table whereas it is much more difficult to read Code 16k. Due to the multi-row format, Code 16k must have additional overhead such as row identification, start, and stop, as well as padding characters to make all the rows the same width. All barcode readers have the ability to read 16k since is uses the same character symbologies as Code, 128 which is widely used. The reader’s decoder only needs to be slightly expanded to process the extra features. Another advantage is that Code 128 is easy to print on standard labels and printers.
There are also other barcode formats that look much different then 16k or 128. Some are made up of dots or squares and resemble more of a matrix then a series of bars. These are good for representing very detailed information in a compact area. The trade off is that they would of course require more sophisticated readers and printers.
In and interesting note: It is not a coincidence that 16k = 128 squared. This is an appropriate name since it is a multi-row version of Code 128.
References:
References used to obtain the answer. These could be books, papers, web links, etc. Provide standard bibliographical information (author, title, date, etc. Exact format is less important than completeness and clarity). Among the references, highlight no more than three as your principle sources:
Terry Watkins, “What about barcodes and 666: The Mark of the Beast”, 1999
http://www.av1611.org/666/barcode.html
Barcode Solutions Co UK Ltd, “Barcodes Facts 3”, 1999
http://www.automation-associates.com/barcodefacts3.htm