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



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

我有各种热敏打印机,我们使用微软发布的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);

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

所以不用

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

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

相关内容

  • 没有找到相关文章

最新更新