Распечатайте и откройте ящик с Epson T20 (термопринтер) - PullRequest
3 голосов
/ 15 декабря 2011

Я много искал и нашел здесь примеры с Posexplorer, но мой принтер - usb, и я прочитал, что PosExplorer для параллельной работы. Я не знаю, как печатать на принтере и как отправить код на принтер, чтобы открыть ящик.

Я использую для отправки escape-последовательности на принтер следующий код:

string ESC = Convert.ToString((char)27);
string logo=Convert.ToString(ESC+"|tL");
_oposPrinter.PrintNormal(PrinterStation.Receipt, logo);
_oposPrinter.PrintNormal(PrinterStation.Receipt, "Print example\n");
_oposPrinter.PrintNormal(PrinterStation.Receipt, Convert.ToString((char)27 + "|#fP"));

При отладке и доходит до строк:

_oposPrinter.PrintNormal(PrinterStation.Receipt, logo);

или

_oposPrinter.PrintNormal(PrinterStation.Receipt, Convert.ToString((char)27 + "|#fP"));

Принтер ничего не печатает.

Ответы [ 3 ]

5 голосов
/ 24 апреля 2012

Если вы ищете очень легкое решение без стороннего установленного программного обеспечения, такого как Microsoft POS для .NET.

Вам необходимо включить функцию RawPrinterHelper (можно загрузить с https://support.microsoft.com/en-us/help/322091/how-to-send-raw-data-to-a-printer-by-using-visual-c-.net)

Затем отправьте специальный код денежного ящика, чтобы открыть его на принтере, к которому он подключен.

Например, на Epson TM88 эта функция откроет его.

SendStringToPrinter(printerName, System.Text.ASCIIEncoding.ASCII.GetString(new byte[] { 27, 112, 48, 55, 121 }));

Для других принтеров могут потребоваться другие кодовые последовательности.

Citizen
27,112,0,50,250
Epson 
27,112,48,55,121
27,112,0,25,250
27,112,48,25,250
IBM
7

... (см. Больше кода, включая авторез или 2-й выдвижной ящик на http://keyhut.com/popopen.htm)

0 голосов
/ 08 мая 2013

Для тех, кто пытается сделать это с VB.NET и POS.NET, отправьте это на принтер:

m_printer = the instance you created for the PosExplorer
m_printer.PrintNormal(PrinterStation.Receipt, System.Text.ASCIIEncoding.ASCII.GetString(New Byte() {27, 112, 48, 55, 121}))

Это сработало для моего Epson TM-T20

Странно то, что он открывается не при первом отправлении, а после каждого.

0 голосов
/ 16 декабря 2011

Я знаю, что этот код работает для обычной печати.Я не проверял часть кассового ящика, но я считаю, что это правильная команда, вам просто нужно знать правильные параметры для ее добавления.

Этот код предполагает, что вы настроили свой принтер с помощью утилиты SetupPos.exe предоставлено Epson.Я не помню, где я его взял, но EpsonExpert.com может быть хорошим местом для поиска.Затем просто убедитесь, что вы передаете правильный LDN (вы устанавливаете его в программном обеспечении setuppos).

    PosExplorer explorer = null;
    DeviceInfo _device;
    PosPrinter _oposPrinter;
string LDN;

    explorer = new PosExplorer();
    _device = explorer.GetDevice(DeviceType.PosPrinter, LDN);
    _oposPrinter = (PosPrinter)explorer.CreateInstance(_device);
    _oposPrinter.Open();
    _oposPrinter.Claim(10000);
    _oposPrinter.DeviceEnabled = true;
 // normal print
    _oposPrinter.PrintNormal(PrinterStation.Receipt, yourprintdata); 
// pulse the cash drawer pin  pulseLength-> 1 = 100ms, 2 = 200ms, pin-> 0 = pin2, 1 = pin5
    _oposPrinter.PrintNormal(PrinterStation.Receipt, (char)16 + (char)20 + (char)1 + (char)pin + (char)pulseLength); 

// cut the paper
    _oposPrinter.PrintNormal(PrinterStation.Receipt, (char)29 + (char)86 + (char)66)

// print stored bitmap
    _oposPrinter.PrintNormal(PrinterStation.Receipt, (char)29 + (char)47 + (char)0)
...