3

我搜索了很多,我在这里找到了 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"));

打印机不打印任何东西。

4

3 回答 3

6

如果您正在寻找一个非常轻量级的解决方案,而无需安装第三方软件,例如 Microsoft POS for .NET。

您需要包含函数RawPrinterHelper(可以从https://support.microsoft.com/en-us/help/322091/how-to-send-raw-data-to-a-printer-by-using-下载视觉-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查看更多代码,包括自动切割器或第二个抽屉)

于 2012-04-24T17:56:59.853 回答
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)
于 2011-12-15T20:14:49.117 回答
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

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

于 2013-05-08T02:51:50.097 回答