通过LinePrinter API将条形码打印到Intermec PB20
有谁知道如何从Windows Compact Framework应用程序向Intermec PB20蓝牙打印机打印条形码?我们目前正在使用Intermec LinePrinter API,但无法找到一种打印条形码的方法。
解决方案
回答
上一次我不得不打印条形码(尽管使用打印机或者框架)时,我求助于在需要的条形码中使用True Type字体。 (在我的情况下是EAN-13之类的东西),欧洲条码。
我们可以简单地在其中写数字(和/或者字母,如果支持)的字体,并且可以获得任何扫描仪都可以读取的完美条形码:)
Google是朋友。我不知道有没有免费的。
回答
谢谢回答。有可用的免费字体-但是,PB20是带有一些内置字体的手持打印机。它具有打印条形码的功能,可以直接通过串行端口进行操作。 Intermec提供了一个.Net CF API来使打印变得"轻松",并且使用此API我们一直无法弄清楚如何告诉打印机打印条形码。
回答
抛弃所有API并直接使用串行端口API。
讲打印机的语言,我们可以获得不错的结果。
其他所有方法都会导致挫败感。
不太漂亮,但这就是我的老工厂的工作方式。
每天4k的打印作业,而且从未错过。
回答
免费3之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.
回答
谢谢大家的想法。直接打印到串行端口可能是最灵活的方法。在这种情况下,我们不想复制已经内置在Intermec dll中的所有工作,以处理端口,打印机错误等。我们能够通过向打印机发送适当的代码以将其切换到打印机来使此工作正常进行。另一种模式,然后以这种方式传递直接打印机命令。
如果其他任何人碰巧遇到与Intermec打印机一起使用的类似问题,这就是我们的解决方案。以下代码是一个测试用例,不会捕获打印机错误并重试等。(请参阅Intermec代码示例。)
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
在Intermec的支持站点上有一个技术文档,称为"技术手册",其中描述了直接控制打印机的代码。关于轻松打印的部分介绍了如何打印各种条形码。