使用Epson T20(热敏打印机)打印和打开抽屉

时间:2011-12-15 18:46:26

标签: c# thermal-printer pos-for-.net

我经常搜索,我在这里找到了Posexplorer的例子,但我的打印机是usb,我读过PosExplorer用于并行。我不知道如何使用打印机进行打印以及如何将代码发送到打印机以打开抽屉。

我正在使用以下代码将转义序列发送到打印机:

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 个答案:

答案 0 :(得分:5)

如果您正在寻找一个非常轻量级的解决方案而没有安装第三方的软件,例如Microsoft POS for .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

...(查看更多代码,包括http://keyhut.com/popopen.htm处的自动切割器或第二个抽屉)

答案 1 :(得分:0)

我知道此代码适用于普通打印。我没有测试现金抽屉部分,但我相信这是正确的命令,你只需要知道正确的参数。

此代码假定您已使用Epson提供的实用程序SetupPos.exe设置了打印机。我不记得我在哪里得到它,但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)

答案 2 :(得分: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

奇怪的是,它不会在第一次发送时打开,而是在每次发送之后打开。