Отправить escape-символ на принтер - PullRequest
3 голосов
/ 01 апреля 2011

Я разрабатываю приложение 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

Для связи с принтером и отправки на него необработанных данных я придерживаюсь этой методики.Сначала я пытаюсь построить escape-последовательности, используя класс StringBuilder.

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

и так далее ...

Но как мне заменить <ESC> часть в аргументе строителя строк.Я знаю этот символ 27, но как его использовать с командой AppendLine

Заранее спасибо.

Ответы [ 3 ]

8 голосов
/ 01 апреля 2011
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")

например

1 голос
/ 16 августа 2018

Для драйверов OPOS я использовал

string ESC = System.Text.ASCIIEncoding.ASCII.GetString(new byte[] { 27 }); 
1 голос
/ 01 апреля 2011

Это должно работать

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