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

C# RawPrinterHelper无法使用ESC POS命令打印条形码,c#,printing,escpos,C#,Printing,Escpos,一项相对简单的任务正在转化为数小时的挫折感,因此: 我有各种热敏打印机,我们使用微软发布的RawPrinterHelper打印到。 通常使用字符串生成器构建字符串并调用SendStringToPrinter,我们就有了一张打印好的纸 我正试图通过支持的ESC/POS命令打印一个简单的条形码。我们将其用于其他功能(剪切、更改字体大小),所有这些功能都有效,条形码拒绝打印 ESC POS命令为:GS k m n d1 d2…dn m:条形码类型,例如。 n:条形码长度-表示条形码数据字节数 d1条形

一项相对简单的任务正在转化为数小时的挫折感,因此:

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

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

所以不是

print.Append(barcode.Length);
使用

我假定长度不超过255

编辑以添加:您可以使用以下内容检查发送的字节

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

并检查它们是否符合您打算发送的内容。您可能还希望将发送的内容与在当前代码中工作的内容进行比较。

@user3725237我添加了一个检查发送字节的建议。请检查编码。它必须是ascii码
var bb = Encoding.UTF8.GetBytes(printJob);
bb.ToList().ForEach(x => Console.Write(x.ToString("X2") + " "));