2015-10-14 120 views
1

一个相对简单的任务变成无奈小时所以这里有云:RawPrinterHelper无法打印条码使用ESC POS命令

我有不同的热敏打印机,我们打印到使用RawPrinterHelper微软发布。 通常使用字符串构建器构建字符串并调用SendStringToPrinter,并且我们有一张打印的纸。

我试图通过支持的ESC/POS命令打印一个简单的条形码。我们将这些用于其他功能(切割,更改字体大小),这些功能都可以工作,条形码拒绝打印。

ESC POS命令是:GS k m n d1 d2 ... dn m:条形码类型例如: n:条码长度 - 表示条码数据字节数 d1条码

我的问题是,如何发送条码的长度? 我相信这是我的问题所在。

的代码片段:

StringBuilder print = new StringBuilder(); 
barcode = "1234567890"; 
char commandGS = '\x1D'; 
char linefeed = '\x0A'; 
char esc = '\x1B'; 
char commandFontSize = '\x21'; 
char commandk = '\x6B'; 
char code128 = '\x69'; 
print.Append(commandGS); 
print.Append(commandk); 
print.Append(code128); 
print.Append(barcode.Length); 
print.Append(barcode); 
string printJob = print.ToString(); 
RawPrinterHelper.SendStringToPrinter(printerName, printJob); 
+0

检查您的编码。它必须是ascii –

回答

0

你可能需要一个字节来表示条码的长度,而不是条码的长度的文本表示。

所以不是

print.Append(barcode.Length); 

使用

print.Append((char)barcode.Length); 

我假定长度不超过255

编辑补充:您可以检查您要发送的字节数有点像

var bb = Encoding.UTF8.GetBytes(printJob); 
bb.ToList().ForEach(x => Console.Write(x.ToString("X2") + " ")); 

并检查它们是否符合您打算发送的内容。您可能还想比较一下在当前代码中的工作情况。

+0

谢谢,我试过了,但它没有奏效。 – user3725237

+0

@ user3725237我添加了一个建议来检查正在发送的字节。 –