【问题标题】:RawPrinterHelper unable to print Barcode using ESC POS CommandsRawPrinterHelper 无法使用 ESC POS 命令打印条形码
【发布时间】:2016-01-12 22:35:43
【问题描述】:

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

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

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

ESC POS 命令是:GS k m n d1 d2 … dn m:条码类型 e.g. n:条码长度——表示条码数据字节数 d1 条码

我的问题是,如何发送条形码的长度? 我相信这是我的问题所在。

代码sn-p:

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

【问题讨论】:

  • 检查您的编码。它必须是ASCII

标签: c# printing escpos


【解决方案1】:

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

所以不是

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

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

【讨论】:

  • @user3725237 我添加了一个检查正在发送的字节的建议。
猜你喜欢
  • 2020-11-17
  • 2014-08-25
  • 2014-01-17
  • 1970-01-01
  • 2017-05-06
  • 2017-10-21
  • 1970-01-01
  • 2018-03-18
  • 2016-08-25
相关资源
最近更新 更多