views:

1027

answers:

5

Does anyone know how to print a barcode to the Intermec PB20 bluetooth printer from a Windows Compact Framework application> We are currently using the Intermec LinePrinter API but have been unable to find a way to print a barcode.

A: 

Last time I had to print Barcode (despite the printer or framework) I resorted to use a True Type font with the Barcode I needed. (In my case was EAN-13 something), an european barcode.

There are fonts where you simply write numbers (and/or letters when supported) and you get a perfect barcode any scanner can read :)

Google is your friend. I don't know if there are free ones.

Martín Marconcini
A: 

Thank you for your answer. There are free fonts available -- However, the PB20 is a handheld printer with a few built-in fonts. It has the capability to print barcodes and can be manipulated directly via the serial port. Intermec provides a .Net CF API to make printing "easy", and it is using this API that we have been unable to figure out how to tell the printer to print a barcode.

Steve
A: 

Ditch all API's and use a serial port API directly.

Talk the printers language and you can get decent results. Every other approach leads to frustration. Not so pretty, but that is the way my old factory worked. 4k print jobs per day, and none ever missed.

Tim Williscroft
A: 

Free 3 of 9

This is 3 of 9 (sometimes called "code 39"), a widely used barcode standard that includes capital letters, numbers, and several symbols. This is not the barcode for UPC's (universal price codes) found on products at the store. However, most kinds of barcode scanners will recognize 3 of 9 just fine.

Frank Krueger
+1  A: 

Thank you all for your thoughts. Printing directly to the serial port is likely the most flexible method. In this case we didn't want to replicate all of the work that was already built into the Intermec dll for handling the port, printer errors, etc. We were able to get this working by sending the printer the appropriate codes to switch it into a different mode and then pass direct printer commands that way.

Here was our solution in case anyone else happens to encounter a similar issue working with Intermec Printers. The following code is a test case that doesn't catch printer errors and retry, etc. (See Intermec code examples.)

Intermec.Print.LinePrinter lp;

int escapeCharacter = int.Parse("1b", NumberStyles.HexNumber);
char[] toEzPrintMode = new char[] { Convert.ToChar(num2), 'E', 'Z' };

lp = new Intermec.Print.LinePrinter("Printer_Config.XML", "PrinterPB20_40COL");
lp.Open();

lp.Write(charArray2); //switch to ez print mode

string testBarcode = "{PRINT:@75,10:PD417,YDIM 6,XDIM 2,COLUMNS 2, SECURITY 3|ABCDEFGHIJKL|}";
lp.Write(testBarcode);

lp.Write("{LP}"); //switch from ez print mode back to line printer mode

lp.NewLine();
lp.Write("Test"); //verify line printer mode is working

There is a technical document on Intermec's support site called the "Technical Manual" that describes the code for directly controlling the printer. The section about Easy Print describes how to print a variety of barcodes.

Steve