将转义字符发送到打印机

时间:2011-04-01 14:33:26

标签: c# .net string printing thermal-printer

我正在开发一个C#应用程序,用于从SATO(CG408 TT)的热转印打印机打印标签

为此我使用SBPL(SATO的编程语言)。看起来如下:

<ESC>A
<ESC>H0050<ESC>V0100<ESC>L0303<ESC>XMSATO
<ESC>H0050<ESC>V0200<ESC>B103100*SATO*
<ESC>H0070<ESC>V0310<ESC>L0101<ESC>XUSATO
<ESC>Q1<ESC>Z

要与打印机通信并向其发送原始数据,我遵循this技术。起初我正在尝试使用StringBuilder类构建转义序列。

StringBuilder sb = new StringBuilder();
              sb.AppendLine();
              sb.AppendLine("<ESC>A");
              sb.AppendLine("H0050<ESC>V0100<ESC>L0303<ESC>XMSATO");

依旧......

但是如何在字符串构建器参数中替换<ESC>部分。我知道字符27,但是如何使用它与AppendLine Command

提前致谢。

3 个答案:

答案 0 :(得分:8)

const char ESC = '\x1B';

现在您可以像任何其他变量一样使用ESC。请注意,您也可以将esc嵌入到字符串中:"\x1B"但我认为这会变得难以处理(特别是对于相邻的数字)。

ESC + "somestring" + ESC等,因为它违背了StringBuilder的目的

你可以

StringBuilder sb = new StringBuilder();
          sb.AppendLine();
          sb.AppendLine("<ESC>A");
          sb.AppendLine("H0050<ESC>V0100<ESC>L0303<ESC>XMSATO");
String output = sb.ToString().Replace("<ESC>", "\x1B")

e.g。

答案 1 :(得分:1)

这应该有效

sb.AppendLine(((char)27).ToString());

答案 2 :(得分:1)

对于OPOS驱动程序,我最终使用

string ESC = System.Text.ASCIIEncoding.ASCII.GetString(new byte[] { 27 });