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

本文关键字:POS 命令 打印 条形码 ESC RawPrinterHelper | 更新日期: 2023-09-27 18:17:38

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

我有各种热敏打印机,我们使用微软发布的RawPrinterHelper进行打印。通常使用String构造器构建字符串并调用sendstringtopprinter,我们就得到了一张打印出来的纸。

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

ESC POS命令为:GS k m n d1 d2…dnM:条形码类型。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);

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

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

所以不用

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") + " "));

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