2011-12-15 1 views
3

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

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

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

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

+0

Настройте принтер как принтер по умолчанию (только текстовый драйвер) и распечатайте, как и любой другой документ. Чтобы открыть ящик, вы должны иметь доступ к COM-порту и знать, какой сигнал его отправить. – David

+0

Спасибо, я напечатал таким образом, но мне нужно открыть ящик. Спасибо, в любом случае. – uoah

ответ

0

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

Этот код предполагает, что вы настроили свой принтер с помощью утилиты 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) 
+0

Большое спасибо, я попробую это как можно скорее (не все дни у меня есть доступ к принтеру и ящику). Я пытался использовать библиотеку PosExplorer, но визуал не распознавался. Я думаю, что утилита SetupPos.exe поставляется с установочным компакт-диском принтера.Спасибо – uoah

+0

Не забудьте добавить ссылку на Microsoft.PointOfService.dll в свой проект. Вот почему VS не узнал об этом. –

+0

Да, я нашел эту ссылку в некоторых примерах, но мой VS не узнал ее. Возможно, мне нужно установить первый SetupPos.exe. Сегодня я попробую. Спасибо :) – uoah

5

Если вы хотите очень легкий раствор без 3-й участник установленного программного обеспечения, таких как 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

Большое спасибо за ваш ответ, теперь я печатаю с помощью microsoft pos для .net, но это хорошая альтернатива. – uoah

+1

Спасибо, это действительно хорошее решение, намного лучше, чем установка драйверов POS.NET – RobJohnson

0

Для тех, кто пытается сделать это с помощью 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

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

 Смежные вопросы

  • Нет связанных вопросов^_^