Как отправить команду вырезания страницы на принтер Epson

Я пытаюсь разрезать бумагу прагматично, отправив команду вырезания бумаги на принтер (Epson TM U220 с USB-портом). Я использовал принтер с драйвером Generic/Text Only и портом принтера Epson, который я нашел после установки Расширенный драйвер принтера Epson. Код команды принтера (GS V m), где m = 0,1,48 или 49, который я нашел в руководстве по устройству. Я хотел бы знать, как отправить эту команду на принтер с помощью StringWriter. Я использую универсальный/текстовый принтер, потому что он намного быстрее, чем при использовании драйвера Epson.

Я действительно новичок в С# windows и, пожалуйста, любезно предоставите мне несколько строк кода для этого. Я занимаюсь серфингом в Интернете в течение нескольких дней и до сих пор не нашел ответа. Я думаю, мне нужно отправить команду принтера в качестве байта, но я не знаю, как это сделать: (

Ответ 1

Большое спасибо, Ханс. Теперь я могу отправить команду Paper cut, используя класс Microsoft RawPrinterHelper. Я искал это решение в течение шести дней. Вот что я сделал.

string GS = Convert.ToString((char)29);
string ESC = Convert.ToString((char)27);

string COMMAND = "";
COMMAND = ESC + "@";
COMMAND += GS + "V" + (char)1;

PrintDialog pd = new PrintDialog();
pd.PrinterSettings = new PrinterSettings();
if (DialogResult.OK == pd.ShowDialog(this))
{
RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName,  COMMAND);
}

Ответ 2

Для печати с netcat (действительно простой способ распечатать что-либо без установки какого-либо драйвера), чтобы вырезать бумагу:

echo -e "\[email protected]\x1DV1" | nc printer.ip 9100

Такая же строка, как в версии С#, но отображается в hex: \x1B = ESC и \x1D = GS.

Ответ 3

s = Replace(s, "<KESME>", Chr(27) + Chr(105), 1) ' Termal Printer


Chr() +chr()