2D Codes vs Stacked Linear Codes

Here are two barcode symbols that both encode the string “12345678”:

Which of these codes is a 2D code? The one on the right is Datamatrix code, a true two dimensional code. The one on the left is PDF417, a stacked linear code; it looks like a two dimensional barcode, but it isn’t.

2D codes store data in both the X and Y coordinates. Linear codes only contain data in one dimension. This is easy to see in a normal linear code.

It doesn’t matter where the scanner goes across the code, data is only encoded in the widths of the bars and spaces. Datamatrix characters are encoded in a matrix of 5 by 5 cells and have to be read by a camera.

Stacked linear codes are really a bunch of small linear barcodes stacked on top of one another. Each row has a row indicator or number, so a 1D scanner such as a laser is capable of reading these codes by sweeping across the code while the decoder keeps track of the row numbers and puts together the final output. Check the specs of your scanner, not all 1D scanners will read PDF417 symbols.

Other stacked symbologies besides PDF417 are Code 49, Code 16K,  and
GS1 Databar Stacked.

Note the size difference between the PDF417 and the Datamatrix symbol above. Not many new  applications use PDF417 because of the size and density advantage of Datamatrix.

Other 2D codes are Maxi Code, Aztec Code, and the ubiquitous QR Code.


Sherman, Set the Wayback machine to 1967

Sherman– 1967 Please.

This KarTrak railroad label is probably one of the oldest items in our collection.  The labels were hand-made by attaching strips of red, white and blue reflective material to a piece of 14 gauge sheet steel.  They were all 10 digits long.  Four digits identified the railroad and six identified the car. Each tag cost about $15 to make.

Our Kartrak Tag

The Automatic Car Identification (ACI) system was originally developed by GTE in 1961 and implemented by Dave Collins in 1967.  Dave later went on to form Computer Identics Corp. in Westwood and Canton, MA.

Original 1967 Ad for the Rail Scanning System.

The labels were read by moving beam scanners that were activated by a wheel sensor as the car moved by.  The scanner was mounted along the side of the track in a large metal NEMA enclosure with a hooded window.  It used a Xenon bulb and a four-sided spinning mirror along with a camera-like lens to read the tags.  The decoder used some circuitry to decode the red, white and blue channels from the signal that was reflected back from the tag.  If I remember correctly, the last time I saw one of these a PDP-11 series mini-computer ran the software system for the scanner.

The major problem with the system was dirt. When the labels got dirty they did not read well. The railroads would not clean them and this caused the system to be discontinued in 1974.

The last time I can recall these systems being used or seeing a label in public was in the Washington DC Metro system in the mid 1980’s. Computer Identics Corp. was still maintaining them at this time.

Fixing a print issue with Fingerprint programming

A large pharmaceutical company is using an ancient lab system that prints cryo labels for test tubes. They replaced Intermec 3400 printers that were almost 20 years old with new PC43T printers. The PC43T runs IPL (Intermec Print Language) and should have been a plug and play replacement. Unfortunately, some of the barcodes that printed on the 3400 no longer printed on the PC43T. The problem was caused by the different designs of the two printers. The PC43T’s labels are centered in the printer instead of all the way to the left (as you are facing the printer) on the 3400. Without getting into too much detail, their label format had to be modified to use the PC43T, but due to the age of the system this turned out to be impossible. The labels are .5 by 1.25 inches:

These are Code 128 barcodes printed with a 5 mil X (narrow bar) dimension.

We wrote a Fingerprint program that ran in the PC43T that intercepted data coming from the host, reformatted it into Direct Protocol (which has a center justify feature) and printed the label. Problem solved.


My favorite scanner – Part 2

I’ve written about the center decode feature in the Intermec EA30 scan engine (see part 1 below) but there are a few other features I’d like to bring to your attention.

Presentation Mode:  Sometimes scanners are used with desktop holders to let a user pass a barcode underneath it and scan hands free. Think of a library check out, a convenience store cash register, or a club scanning ID cards.

Laser scanners typically pulse their laser on and off when they are in presentation mode (which drives me nuts) in order to detect the presence of a barcode.  2D Camera based scanners have an advantage of being omnidirectional and they will have some illumination on to detect a code.

The EA30 does presentation mode right. The scanner uses ambient light to detect a bar code, so no distracting lights come out of the scanner when it’s idle.

The EA30 scanner can be set up to scan more than one barcode at a time.  Take a look at EasySet under Symbologies, and you’ll see the Multicode set up:

You can specify the number and type of codes to scan and because of the way the software scans the image, it’s works as quickly as if you were scanning a single code. Other scanners can read multiple barcodes, but you have to move the scanner around to pick up all of the codes. The EA30 works better than this; the software scans the image so you don’t have to move the scanner. Try it out.

The last feature I’ll mention is the ability to scan both UPC-A symbols and UPC symbols with supplemental codes with one configuration:

Reading both UPC and with one set up is difficult because the large portion of the UPC with supplemental code is a valid UPC-A symbol. The scanner must reliably detect the presence of the supplemental and read it. If you want to test this, use these setting from EasySet:

Consecutive validations = 2
Center decode = on
Supplemental = Transmit if found
Add on security = 100
Imager decode mode = 2D
Initial 1D search = Full

You’ll find these settings in the Symbology section, the Imager Settings, and the Operating Section.




Running Windows Mobile Device Center under Windows 10

In my previous post I said that Microsoft broke Windows Mobile Device Center is Windows 10. This is true, but there is somewhat of a workaround.

First off, if you use WMDC regularly and you’re using Windows 10, make your life easier and run Win 7 in a virtual machine and use it there.

I saw this tip on getting WMDC running on Win 10 at a Microsoft tech support site.

Click on Start, then type “Services” and launch the services application. Scroll down to the “Window Mobile-2003 based device connectivity” service:

Double click on this and click on the “Log On“ tab at the top of the screen.

Click on the “Local System account” button and turn on the “Allow service to interact with desktop” check box. Apply these setting and go back to the “General” tab and make sure the service is running, then exit the application.

Now click on Start, type in “Mobile Device Manager”, right click on the app and pin it to your task bar. Click on the round green icon in the task bar and WMDC should start.

Put your reader into a dock that’s connected to your PC with a USB cable; you should hear the connection sound. If you hear a loud beep and get a synchronization error, WMDC has crashed. Remove the reader from the dock and restart WMDC. If it doesn’t start, check the log on options in the services app again.

If you do hear the connection sound but WMDC shows “Not Connected”, double click on My PC and you should see your reader in the Devices and drives section:

If you double click on the device you’ll see its file system and you’ll be able to copy files to and from it with Windows File Manager.

It’s not perfect solution, but if you have some quick copying to do, it may help.

How to copy files to a CN70 or CK70 computer

This post covers copying files to the Intermec/Honeywell CN and CK series computer with Windows Embedded Handheld 6.5, it doesn’t cover the new Android computers.

Connecting a dock to your computer with a USB cable and using Windows Mobile Device Center is very  easy, but Microsoft broke this in Windows 10. WMDC works fine under Windows 7 and is your best choice if you are running this OS. There are some tips on the internet about running WMDC in compatibility mode under Win 10, but they didn’t work for me.

Another easy option is to put your files on a USB stick and then plug the stick into the USB A connector on the side of a single docking station for your CN/CK computer.  Once inserted click on Start, File Explorer, My Device and you should see the USB key in the pull down menu show up as “Hard Disk”:

You can copy files to the computer over your wireless network too. There’s an FTP server program available on these devices, but it’s a hidden file. Click on Start, File Explorer, then scroll down to the Windows folder. Click on the Menu button on the bottom of the screen and click on “Show All Files”. Now scroll down this folder listing and look for the file “ftpdce”.  Press the stylus on this filename and hold it for a couple of seconds until the menu pops up and select “copy”.  Scroll back to the top of the Windows folder and click on the Start Up folder. Press the stylus on some white space and hold if for a couple of seconds. When the menu pops up select “Past Shortcut”. Now the FTP server will start when window boots.

Press the power key and choose the Reboot option.

I use FileZilla as an FTP client, but feel free to try your own; I had no luck using FTP within a browser. Find the IP address of your your computer by clicking on Start then ISpyWiFi. Keythis IP number into FileZilla and log in with the user name “intermec” and a password of “cr52401” and you should see this screen:

Other options are Intermec’s Smart Systems (free, big install) or Soti’s Mobi Control (licensed, reliable, if you have a lot of devices).

Good luck, email any questions to info@accuratedata.com.

How to identify a bar code symbology Part 2: Industrial 1D codes

There are over a hundred of types of 1D barcodes, but only a few are commonly used today. These are Code 128, Code 39,  and Interleaved 2 of 5, with Code 128 being the most common and Interleaved 2 of 5 (I 2 of 5) the least.

Less common 1D codes still used today are Codabar, Code 93, Code 11,  Two of Five, and MSI code.

2D barcodes are becoming more popular; I’ll write about them at a later date. 1D codes only contain data in one dimension, in the widths of the bars and spaces.

The first step to identifying a code is to note how many different bar and space widths the code uses:

Code 39 and I 2 of 5 only have two different widths of bars and spaces. If it has more than two, it’s usually Code 128, which uses four different widths. UPC uses four bar widths too, but you can usually recognize UPC from the guard bar patterns.

If the code only has two widths the next thing to look at is the start/stop patterns. The first (and last) five bars in a Code 39 symbol are narrow, narrow, wide, wide, narrow. I 2 of 5 starts with two narrow bars and ends with a wide and narrow bar. I 2 of 5 is numeric only, so if the code has two bar widths and alpha characters, it’s probably Code 39.

Note that the start or stop pattern in I 2 of 5 is not unique and can easily be found in the symbol itself, making this code vulnerable to short scans. The red line below represents a laser beam from a scanner going across an I 2 of 5 symbol:The laser exits on a wide and narrow bar pattern that could be interpreted as a stop code, resulting in a short scan. You’ll often see I 2 of 5 printed with bars above or below the code, called bearer bars,  to prevent short scans.

Most scanners can be set to read I 2 of 5 as fixed length codes,  preventing the short scan issue. Here’s a tip: To find out how many characters are in an I 2 of 5 symbol, count the number of bars, subtract 4 (for start/stop) and divide by 2.5. For example, the symbol with the red line through it about has 24 bars, so 24 – 4 = 20, divided by 2.5 gives you 8.

Another method of eliminating short scans is to enable a check digit in I 2 of 5. Always enable a check digit if you are going to read variable length I 2 of 5 symbols.

I’ll cover Code 39 and Code 128 in more detail later.


How to identify a barcode symbology Part 1: UPC codes

UPC is an abbreviation for Universal Product Code. It uses four different bar and space widths and encodes each number using two bars and two spaces.

We all can identify UPC-A (at least in the states) with its telltale guard bars, the 12 numeric characters printed in groups of 1, 5, 5, and 1. These numbers are the system digit, manufacturer’s code, item ID, and check digit respectively. The guard bars are the two lines that are longer than the rest at the beginning, middle, and end of the symbol.

UPCA symbol
UPCA symbol

The guard bars can be considered as start and stop code and don’t encode any data. There was some talk about UPC being the “Mark of the Beast” mentioned in the book of Revelations because the number six, when printed on the right side of the symbol is two narrow bars, so the conspiracy theorists thought UPC secretly contained “666”. I occasionally got questioned about this at trade shows.

There are a number of variations of UPC. There’s UPC-E, or zero suppressed code that is usually used on small items:

There’s UPC with a 2 or 5 digit supplemental codes used on magazines and periodicals; the supplemental number indicating the issue:

In Europe, it’s EAN, or the European Article Numbering code:

The first three digits in an EAN code indicate the country code and unlike UPC, the manufacturer number and item number are variable length. Notice that there are 13 numbers in an EAN code even though there are the same number of bars as spaces as a UPC-A code. UPC numbers have left and right parity; so a digit printed on the left side has a different pattern when it is printed on the right side. The extra number is encoded by varying the parity pattern on the left part of the EAN symbol.

There is also EAN-8 and EAN with supplemental codes that are similar to UPC-E and UPC with supplemental codes.

One special version of EAN worth mentioning is Bookland code. The country code of 978 has been assigned to a fictitious country, “Bookland” and is used to mark books. Bookland code uses the remaining EAN 10 digits to encode the ISBN number and uses a 5 digit supplemental to encode the suggested price:

The first digit in the supplemental code indicates the currency type. Check this out next time you buy a book. There are other versions of UPC, but they are pretty obscure.  RSS (Reduced Space Symbology) is also being used in retail applications.

For more on UPC  check out ADAMS1 and the GS1 organization.



Thermal barcode printer resolution

Thermal and thermal transfer printers use a printhead made up of individual dots that heat up to melt ribbon onto a label (thermal transfer) or darken some heat sensitive media (direct thermal). In either case you’ll need to determine the best printhead resolution for your application.

Printhead resolutions are specified in dots per inch, (dpi) and are nominally 200, 300, 400, or 600 dpi. The individual dot size for these are 5 mil (.005 inch), 3.3 mil, 2.5 mil, and 1.6 mil. Of course, a printer can’t print anything smaller than its dot size. Printheads are usually 4 inches wide, but you can also get them in 2, 6, and 8 inch widths.

Which resolution should you use? That depends on what you are printing.

If you’re printing shipping labels for UPS or Fed Ex and all you need is a legible address and bar codes that the shipping companies can scan, 200 dpi is the choice. Replacement printheads are cheaper and print speeds are higher at 200 dpi.

A few years ago the only way to print more data into a bar code in a small space was to print narrower bars. Not many applications used narrow bars (called the X dimension of a code) smaller than 5 mils. Today you would use a 2D code like Datamatrix to fit more data in a small space, making printhead resolution less important when printing small labels.

The real reason to use a higher resolution printhead is when you need to print a logo or small text; marketing people are very fussy about logos and the look of their finished goods labels. Here’s the same logo printed at 200 and 400 dpi. You’ll see that the 200 dpi suffers from jagged edges when printing curves or angled lines.

The effect of resolution is a lot more apparent when printing small images and text. Labels in the medical industry often require small images and warnings or instructions in multiple languages. It’s common to prepare these in Photoshop and save them as a bit map image to avoid the complexity of printing multiple languages on the thermal printer. Here are two examples, again at 200 and 400 dpi:

This image is blown up slightly, but the 200 dpi printing is unacceptable, the 400 is legible.



Why you should only use printers with displays

The Honeywell PM and PC series of printers are available with color displays. You can also order these without displays to save some money and use the LEDs/icons instead.

We don’t sell these printers without displays. The display gives you immediate access to the configuration menus, wizards, and error messages that make support work far easier.  Here’s a display and icon printer that have run out of labels:

Notice that there is a Wizard button under the message on the display unit. Pressing this will show a user how to install labels in a series of step by step pictures.

Printers are normally assigned a static IP address, or a reserved IP address via DHCP. But, when you first connect a printer to the network, how do you know the IP address that it has been assigned? This is easy with a display, it can be shown on screen. With an icon printer you have to first set up the media type, then calibrate the printer, wait two minutes and press and hold the feed key for three seconds. Test labels will print that show the current IP address of the printer, as long as the labels are the correct size and the IP doesn’t print off the side of the label or on the gap in between labels. Or you can make a static ARP entry using the printer’s MAC address on your PC, browse to the printer and set up a static IP, but that’s beyond most users.

There are some features that are only available with printers with displays. One of my favorites is the print quality wizard. The two things that determine the print quality of thermal printers are speed and heat. In general, slower printing yields better quality, and the heat applied by the printhead needs to be matched to the speed and materials used. There are three types of ribbons (wax, wax/resin, resin) and many types of label materials. Getting the right settings can be challenging.
The print quality wizard first asks you for the print speed (go slow!) and then prints five different labels using different media sensitivity settings. It then asks you to pick the best of the five and then prints three more labels at different darkness setting and again asks you to pick the best one. This is usually sufficient to dial in the settings properly, but you can manually change the print contrast for additional control, if needed.

These printer are also programmable, and having a display makes software a whole lot more user friendly.

If you are worried about user’s getting into the menu system and messing up your settings you can control access to the menu system through the menu system or the printer’s; web interface:

PC series printer web interface

You can disable access to the menu system, or enable it with a required PIN number to log in.

The difference in price between a PC43 with a display and one without is less than $69, well worth it. The same advice applies to the PM43 series.

One more tip on buying a PC43 printer: if you want a LAN connection for your printer, order it separately and install it yourself. If you order a PC43 with Ethernet already installed it is $131.20 (at our discounted price) more expensive, and the adapter ordered separately is $104. Installation of the adapter is very easy. All you need is a small Philips screwdriver and it won’t take more than a couple of minutes to install.