3

我正在开发一个 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

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

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

等等....

但是如何替换<ESC>字符串生成器参数中的一部分。我知道那个字符 27,但是如何将它与 AppendLine 命令一起使用

提前致谢。

4

3 回答 3

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

例如

于 2011-04-01T14:37:11.430 回答
1

这应该工作

sb.AppendLine(((char)27).ToString());
于 2011-04-01T14:38:56.343 回答
1

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

string ESC = System.Text.ASCIIEncoding.ASCII.GetString(new byte[] { 27 }); 
于 2018-08-16T18:18:22.623 回答