RawPrinterHelper无法使用ESC POS命令打印条形码

时间:2015-10-14 17:42:04

标签: c# printing escpos

一个相对简单的任务变成了几个小时的挫折,所以这里是:

我有各种热敏打印机,我们使用Microsoft发布的RawPrinterHelper进行打印。 通常使用String builder构建字符串并调用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);

1 个答案:

答案 0 :(得分: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") + " "));

并检查它们是否符合您要发送的内容。您可能还想比较发送到 在当前代码中工作的内容。