Getting It in "Writing"
We have looked at two different techniques for reading bar codes into a DataFlex application, the Videx Timewand and various wedge readers. In this article we'll look at another important part of bar coding, producing the bar code. After reviewing several options for producing bar codes, I will review a group of software packages that can be used with DataFlex to product "on-demand" bar codes on either dot matrix or laser printers.
On-Demand or Pre-Defined?
Bar code production requirements can be divided into two groups, those applications where the bar code can be fixed well ahead of time, and those applications where it isn't possible to anticipate what information must be recorded in the bar code. The first group can use pre-defined bar codes that are either printed right on the product or on pre-printed labels. The second group requires "on-demand" printing, the capability to produce bar codes with information only available when they are printed.
Printing Technologies
There are several alternatives getting a readable bar code. Each has its advantages and needs to be evaluated depending on your application.
By far the least changeable, and most economical and with the highest density, is offset printing. In other words, incorporating bar codes as part of the packaging. Obviously this is extremely common in consumer goods which include the UPC on the package. This can be done blatantly, as in most packages, or very subtly, as in a bottle of Sebastiani Eye of the Swan wine I saw that included its bar code as part of the design (the bar code formed the base of a group of rushes or wheat that made up part of the label).
One of the greatest advantages of offset printing of barcodes is they can be precisely controlled relative to other printing technologies. For instance, it is possible to hold resolutions of 1000 dots per inch, or more, during offset printing. Why else would printing companies invest in phototypesetters with 2700 dot per inch resolution? The disadvantage of offset printing is you can't change the code as often as with other techniques. But if you are putting a single code on a lot of packages, offset printing is the choice.
An alternative to offset printing when you need the high density of offset quality printing, but with variable labels, is to go with pre-printed labels. Several vendors will provide you with labels, either totally "stock" (no customization), or semi-custom (with your particular format and additional information). The advantage of this method is you can achieve significant density improvements, and sometimes lower your costs, at the risk of needing more or less of a particular label than you have ordered.
Still there are a lot of applications where pre-printed bar code labels are appropriate. I recently went to the public library where they are converting to bar coding for their books and patrons. Rather than try to immediately convert all their books to bar coding, they were phasing bar coding in. Each station where they were checking books out had a roll of pre-printed, high-density bar code labels. When you check out a book not already bar coded, they added a label with a unique number and told the computer what number they assigned. It was an interesting way to undertake a very large task without a mammoth single effort.
Finally, if your demands are completely unpredictable, then you need what's called on-demand printing. There are many applications that either require, or can make use of the convenience of, on-demand printing of bar codes. On-demand printing of bar codes means, simply, that the user can generate the needed bar codes whenever they need them, thus the term on-demand. There are three interesting ways (for microcomputer users) to produce on-demand bar-codes: Dot-matrix, Laser printers, and specialized Thermal printers.
Dot matrix printing offers the least expensive entry into bar code printing. Anyone with a $200 dot matrix printer and, potentially $10 worth of software, can be in the bar code producing business. Interestingly, a lot of bar codes are produced on dot matrix printers. Not the inexpensive ones, but on Printronix "line-printers"--and at relatively high speed.
The primary disadvantage of dot matrix production of bar codes is the limited resolution of that style printer limits the ultimate density of the barcodes produced. Thus you can't get extremely high resolution bar codes out of most dot matrix printers. Another potential problem with dot matrix printers is they aren't compatible with some infrared scanners because there isn't enough carbon in normal dot matrix printer ink. You can get special ribbons, but in general you are better off not mixing dot matrix bar codes and infrared readers.
An interesting cousin of dot matrix bar code printing is the use of ink-jet printers. In those cases, the speed of application to apply bar codes, along with the flexibility of application surfaces and lack of contact, more than make up for the limited resolution. In fact, spraying very low density bar codes onto cardboard cartons is very common in distribution applications. And, of course, if you look at most first class letters they have ink jet applied bar codes on the bottom the postal service adds for their sorting machines.
A recent introduction into on demand production of bar codes is the use of low cost laser printers to produce on-demand labels. Producing several labels per minute at reasonably high resolution (300 dot per inch), laser printers appear to be destined to become the on-demand printer of the masses.
The primary disadvantage to laser printing of on demand labels is you have to produce a full page, several labels, at once. In addition, some software packages produce bar codes using the printer's graphics mode which limits the output speed (due to the amount of information that must be transferred) and limits the amount of the page that can contain bar codes (many laser printers cannot print a full page of graphics at their highest resolution).
However, laser printers produce bar codes of more than sufficient resolution to support all but the most esoteric high resolution formats. Plus their output is compatible with most infrared bar code readers since their toner has a high carbon content. Finally, you can get laser printers with built-in, or downloadable, fonts that produce bar codes at the rated speed of the laser printer.
Finally there are a number of specialized thermal printers designed specifically for on-demand bar code label printing. They are fast, quiet, and produce high quality bar code labels. Primary disadvantages of thermal bar code labels is they deteriorate in higher temperatures (and in some cases when exposed to sunlight). Plus, because of the materials used, they are incompatible with infrared readers unless care is take to select specially designed thermal label stock.
DataFlex Can Produce Bar Codes
Since many DataFlex users need the ability to produce on-demand bar codes from within their DataFlex applications, I looked at several software packages that make that possible, given a very few modifications to your DataFlex application.
Theoretically, it should be possible to use the recently added graphics capabilities to add bar code production to DataFlex applications. However, you would have to read, and understand the various specifications for each bar code topology you want to produce and then write the necessary coding to produce reasonably accurate spacing for both white spaces and the bars themselves. Finally, you would need to hope DataFlex supports the graphics mode of the printer you intended to use--remembering not all supported printers produce the same output.
A far easier solution is one of at least two memory resident (TSR--terminate and stay resident) programs that will crawl into the memory of your IBM PC or compatible and generate bar codes for you. Their authors already have solved the necessary problems of driving your printer--if it is and EPSON/IBM compatible dot matrix, or it is a HP Laserjet compatible laser printer.
Most of the programs I looked at work by looking at the characters you send to a printer for a specific escape sequence that is unlikely to occur in normal printed applications. When they see that escape sequence, they interpret everything until a corresponding ending sequence as information you want printed in bar code format.
The advantage of this approach is you will need to make few, if any, changes to your applications software in order to support bar code production. They use very little memory, as little as 7K, so they rarely pose a memory problem. Probably their biggest disadvantage is the care necessary to mix text and bar codes on the same line. It's possible, but requires at least an understanding of how they produce the bar code using the graphics mode of the printer, and how that graphics mode affects operation of the printer.
Of course, if you were to utilize the power of a graphically oriented computer like a Apple Mactinosh, you could utilize bar coding as if it were another font, just as Times Roman or Helvetica. And, just as important, there are ways to transfer DataFlex information into a format compatible with most Macintosh computers.
On the purely software side, there are two programs that allow a DataFlex developer to print on-demand bar codes without any significant modification to their DataFlex application. What do I mean by significant? It's simply all that is necessary to PrintBar codes is the addition of a few "flag" characters that signal the underlying software to actually do the printing as bar codes and not normal "human readable" text.
PrintBar II
The first program I saw advertised in ID Systems News in an ad that actually listed DataFlex as one of its supported languages. In many aspects, it is very much similar as the other program, BARRES, which I looked at.
However, the two programs differ in their configuration philosophy. PrintBar II consists of two programs, a memory resident printer driver and a separate stand alone configuration program that modifies both the memory and disk copies of the memory resident part.
The memory resident part, PBF.COM, is advertised to require 10K of RAM memory. When I measured its actual memory usage, it took 8896 bytes of RAM. PBF is also intelligent enough to know when it has been loaded and doesn't load a second copy. PrintBar II supports Epson/IBM, Hewlett Packard Laserjet, and Epson LQ printers using different versions.
Configuration options, selected using the PBC.COM program, include bar code topology, printer type, escape character sequence, mode (mixed characters & bar code or bar code only on a line), print pitch & line spacing,density and scaling, and number of print passes. Selecting mixed mode requires manual multi-line barcode generation, while bar code only mode allows automatic multi-line barcode production. A list of bar codes producible by PrintBar II is included in figure 1.
The manual for PrintBar II is a 69 page perfect bound book that is typeset and neatly laid out. Beyond basic program operation, the manual includes sections on bar code specifications, lists of associations, publications, and vendors, and two pages of troubleshooting information.
BarRes
The second program is by the producer of my favorite wedge reader, Worthington Data Solutions. It is one of a large family of bar code producing programs that they produce that support Epson and compatible printers (the manual lists 31 printers), HP Laserjet, and HP Laserjet II (and extremely compatible) printers.
Like PrintBar II, BarRes is a memory resident program. It is advertised to require 7K RAM and was measured to require 7056 bytes. However, unlike PrintBar II, BarRes doesn't check to see whether it has been loaded, thus it is possible to have several copies loaded in RAM at once. Interestingly, even with two copies loaded, BarRes works the same. However, with some care, like only loading BarRes during execution of your AUTOEXEC.BAT, you can avoid using additional memory.
BarRes also differs from PrintBar II in its configuration philosophy. BarRes uses the first five data characters (actually digits) that are used to control bar code topology, number of print passes, bar code height, printer type, and density. For the HP series printers, only three codes are used. That will pose a slight additional overhead if software is to be written for both printers configurably.
BarRes specifies bar code height in tenths of an inch, more closely matching the actual printer capabilities. However, BarRes will automatically advance the printer to the next integral print line at 6 lpi if a multiple line bar code is printed one-up at the left margin. Otherwise, the user is responsible to adjusting to even print lines, which can be accomplished using a formfeed or keeping track of how many 216ths of an inch are used.
The manual is a 35 page type set stapled book that is a bit more dense than PrintBar II in its layout. It contains the usual installation and operation instructions. It does include a good discussion of how to print multiple bar codes per line and how to mix text and bar codes on the same line. There are also sections on bar code specifications and two pages of troubleshooting.
BarRes also includes a set of licensed memory resident programs, called TSRs, management programs. They include MARK, FMARK, and RELEASE, used to remove TSR programs, WATCH and MAPMEN, used to show what TSRs are in memory, and RAMFREE and EATMEM, which show available RAM and allocate a chunk for testing.
For Laser Printers Owners Only
If you are fortunate enough to have a laser printer you have a better solution than those of us limited to dot matrix printers. Dot matrix printers suffer from the disadvantages of not always being compatible with infrared readers, having limited resolution, requiring almost new ribbons, and, because the bar codes are produced in graphics mode, a significant decrease in performance.
But most of those limitations are removed with laser printers. They are high resolution, fast, and, because the toner is high carbon content, compatible with almost every bar code reader.
Of course the two memory resident programs I have just discussed support HP LaserJet compatible printers utilizing their graphics mode, there is a better way for Laserjets. That way is to utilize downloadable fonts. They are more precise, and significantly faster. Plus they potentially have no memory overhead.
FontTools
The first package I looked at was FontTools by Worthington Data Solutions. It is actually the top of the line combination of three separately available packages. Those three packages are FastFont, BarFont, and BigFont.
FastFont is a font downloading program for PC compatibles that eases the downloading of the various font options and speeds the actual downloading process.
BarFont is a collection of 46 HP compatible fonts for either landscape or portrait printing of Interleaved 2 of 5, Codabar, Code 39 and UPC bar codes. Also included is a memory resident program that operates much the same way as BarRes, but includes more control of positioning text and bar codes using the LaserJet.
Finally, BigFont is a similar collection of HP compatible fonts that let you produce letters in six different sizes ranging from standard printer size all the way to 2 inches high! Again, it uses a memory resident program to control the big character font selection and production. BigFont and BarFont are compatible with each other, allowing the production of labels that contain both big text for ease of reading and bar codes for data collection.
Bear Rock also has a set of HP Laserjet compatible downloadable fonts that I have not had an opportunity to look at. If they are as well constructed as their Macintosh Postscript counterparts, they should be precise and well supported.
Macintosh Options
As more and more PC network environments expand, there are appearing an increasing number of Apple Macintosh computers either directly connected to the network or at the very least available in the same workplace. The Macintosh's primary advantage is its ease of use and outstanding graphics support. In fact many PC only environments have a Macintosh or two solely to produce "typeset" results. The Macintosh has truly brought desktop publishing to all of corporate America.
I looked at two Macintosh based products, one limited strictly to the Mac, the other usable in either the Mac or PC environments.
The first was a bar code labeling program produced by Videx, makers of the Videx Timewand I have previously written about. A low cost program, it is designed to simply produce bar coded labels (actually any kind of labels) from data file inputs. Included in that program are a set of bit image code 39 fonts that produce usable results. While the program is extremely easy to use, I did notice a number of limitations, such as font sizing limited to 30 points (slightly less than 1/2" tall), that will restrict its usefulness in some applications. In addition, the bit mapped fonts limit the resolution available, even if a laser printer is used.
The second product isn't a program, although a program is included. It's a set of bar code fonts in both bit image format for Imagewriters and in Postscript format for Laserwriters. Thatproduct is called PrintBar Mac.
The instructions for the Postscript fonts intrigued me because they included two caveats. The first is not to use them with phototypesetters such as those made by Linotronic. The second was not to scale the fonts. One of the real advantages of Postscript fonts is you can scale them to just about any size and get great results. When asked, the people at Bear Rock explained the Postscript fonts had been designed to produce extremely precise bar codes. That included accounting for any "gain", the spreading of the toner during fusing, resulting from the Laserwriter. That's why the fonts can't be scaled or used with a Linotronic, which doesn't have any gain. Bear Rock is working on a second set of Postscript fonts for the Linotronic, including a 1" UPC format used for packaging.
I ended up using the Postscript fonts in a very unusual way. I already had a DataFlex application that produced bin labels for use out in our warehouse by outputting Postscript commands. It ran on a PC tied to a Novell 2.12 network. It isn't until Novell 2.15 that support for Macs is included and even then printing to Appletalk printers isn't correctly supported.
The solution? We used the font downloading program supplied with the Postscript fonts to "permanently" download them to the Laserwriter. We then switched to the other interface and used the existing PC application to produce bin labels that now utilized the downloaded bar code fonts. The result was bar coded bin labels in anticipation of bar code integration in the warehouse.
Get Out There and Print in Black and White
As you can see there are a number of easily integrated options for printing bar codes from within your DataFlex applications. You can use memory resident programs compatible with either low cost dot matrix printers or higher resolution laser printers. Or, for those fortunate to have a laser printer, you can utilize downloadable fonts that speed your printing and give you more precise control. Finally, if your environment includes Apple Macintosh's (or even IBM PC's connected to Postscript printers), you can utilize high resolution bar code fonts just as easily as Helvetica.
Figure 1
Memory Resident Printing Capabilities
Topology PrintBar II BarRes
Code 39 X X
Interleaved 2 of 5 X X
UPC-E X X
UPC-A X X
EAN-8 X X
EAN-13 X X
Full Ascii Code 39 X X
Where To Buy It
BarRes memory resident graphics solution $179.00
GraphRes memory resident graphics solution
with large character generation capabilities $239.00
FontTools HP downloadable barcode and large
character downloadable fonts with memory
resident support programs $239.00
BarStar code 39 stand alone program $ 49.00
Utility 1 bar code/import stand alone program $129.00
Utility 2 bar code/import with large character
generation stand alone program $279.00
Utility 2+ bar code/import with large character
generation, symbol editor, and lable base $479.00
AIAG AIAG label generator stand alone program $299.00
Worthington Data Solutions
417-A Ingalls St
Santa Cruz, CA 95060
(800) 345-4220
(408) 458-9938
PrintBar II memory resident graphics solution $295.00
PrintBar Softfonts HP Laserjet downloadable
bar code fonts $225.00
PrintBar Mac Laserwriter Postscript downloadable
and Imagewriter bit map bar code fonts $225.00
Bear Rock Software Co
6069 Enterprise Dr
Placerville, CA 95667
(916) 622-4640
Bar Code Labeler Label printing program for Mac
including code 39 bit map fonts $ 89.00
Videx Inc.
1105 N.E. Circle Blvd
Corvallis, OR 97330-4285
(503) 758-0521
(sidebar to main article)
Updating Past Articles
It's hard to believe, but by the time this article is published, it will have been a year since the first article in this series was printed. Obviously there have been a few changes since then.
Helmers Publishing has produced two new titles that should prove useful to DataFlex developers investigating bar coding. The first, The Bar Code Book, is subtitled "Reading, Printing and Specification of Bar Code Symbols". While it follows much the same format and content as Helmers' other two books, Reading Between the Lines and Black and White Solution, the subtitle indicates where this book differs. It contains the most technical definitions of the bar code formats and printing errors/error rate derivations (there's real math in this book).
The second book is ID Systems 1989 Buyer's Guide. This book, actually a thick magazine, is a comprehensive listing of sources for not only bar coding equipment, but also other forms of alternate data entry such a voice recognition, touch screens, etc. I thoroughly recommend this book as the starting point for any serious search for bar code equipment.
The Bar Code Book Softcover $24.95
Hardcover $35.00
ID Systems 1989 Buyer's Guide $39.95
Helmers Publishing
174 Concord St
Peterborough, NH 03458
(603) 924-9631
FAX (603) 924-7408
Videx, the pocket Timewand people, have recently announce a companion product, the Timewand II. This product is really the big brother to the original Timewand and will find applications in many new areas the original Timewand couldn't. It is housed in a metal case and features a 2 line 32 character LCD display with a 19 button display (the original Timewand has one button and no display). It also has a built-in RS-232 serial port, eliminating the need for the charger to download information. It comes in 32K, 64K and 128K memory configurations, with 320K optionally possible, significanly larger than the original Timewand's 32K maximum. The Timewand II also features a visible light range scanner, allowing it to read more bar code printing technologies than the orignial Timewand's infrared scanner. The Timewand II's scanner is also shielded inside the metal case and can be ordered with an optional sapphire read head that should be virtually indestructible.
Currently, the unit is minimally programmable, allowing you to control the order of bar code scanning, much like the original Timewand's hierarchy ordering, but based on any character or characters in the scanned codes, not just the first character. Timewand II can also cross reference a scanned bar code into other information to be displayed or downloaded, thus UPC codes can be translated into product descriptions. This cross referencing can also be used to signal the user with an audio alarm. Future programming options to be released by Videx include expanded "pre-programmed" programming and ultimately a set of 'C' programming tools that will give the sophisticated developer complete access to the Timewand II's full capabilities.
Timewand II 32K $698.00
Timewand II 64K $789.00
Timewand II 128K $975.00
Recharger $ 18.00
IBM PC Communications Software $380.00
Videx Inc.
1105 N.E. Circle Blvd
Corvallis, OR 97330-4285
(503) 758-0521
FAX (503) 752-5285