将转义字符发送到打印机

Mar*_*hal 3 .net c# printing string 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
Run Code Online (Sandbox Code Playgroud)

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

StringBuilder sb = new StringBuilder();
              sb.AppendLine();
              sb.AppendLine("<ESC>A");
              sb.AppendLine("H0050<ESC>V0100<ESC>L0303<ESC>XMSATO");
Run Code Online (Sandbox Code Playgroud)

等等....

但是如何<ESC>在字符串构建器参数中替换part.我知道字符27,但接下来如何使用AppendLine Command

提前致谢.

seh*_*ehe 8

const char ESC = '\x1B';
Run Code Online (Sandbox Code Playgroud)

现在你可以像任何其他变量一样使用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")
Run Code Online (Sandbox Code Playgroud)

例如