我正在开发一个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
提前致谢。
答案 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 });