2

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

我有各种热敏打印机,我们使用 Microsoft 发布的 RawPrinterHelper 进行打印。通常使用字符串生成器构建字符串并调用 SendStringToPrinter,我们有一张打印的纸。

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

ESC POS 命令为:GS kmn d1 d2 … dn m:条码类型 eg 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);
4

1 回答 1

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

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

于 2015-10-14T18:07:16.907 回答