1

我正在使用爱普生热敏打印机和钱箱。Cash Drawer 与打印机连接。参考http://keyhut.com/popopen.htm,踢出钱箱的代码是27,112,0,50,250。我试图将此代码发送到打印机,但没有任何反应。我将 POS 用于 .NET,打印机已在 SetupPos 中注册。

这是我的代码:

deviceInfo = posExplorer.GetDevice(DeviceType.PosPrinter, strLogicalName);
m_Printer = (PosPrinter)posExplorer.CreateInstance(deviceInfo);
m_Printer.Open();
m_Printer.Claim(1000);
m_Printer.DeviceEnabled = true;
//command = "ESC|p|0|25|251";
command = "\x1B|\x70|\x00|\x19|\xFB";
m_Printer.PrintImmediate(PrinterStation.Receipt, command);
//m_Printer.CutPaper(100);
m_Printer.DeviceEnabled = false;
m_Printer.Release();
m_Printer.Close();

打印文本正常,但发送代码不起作用。我能做些什么?谢谢。

4

2 回答 2

1

POS for .NET(UnifiedPOS) 规范不支持通过 POSPrinter 设备的 PrintNormal()/PrintImmediate() 方法打开 CashDrawer。
由于 POSPrinter 设备关联有独立的 CashDrawer 设备,请将对应的设备作为 CashDrawer open() 并使用 OpenDrawer() 方法打开抽屉。

但是,根据供应商的不同,有可能支持像您这样的使用。
我没有关于 EPSON POSPrinter 是否支持这种用法的信息。
请询问 EPSON 或您的经销商是否可以使用这种方式。

此外:
除了 POS for.NET,还有一种方法可以安装和使用设备驱动程序作为常规 Windows 打印机。
一些供应商为收据打印机提供 Windows 打印机驱动程序,并且还支持剪纸和抽屉打开功能。
在 EPSON 中,它以 Advanced Printer Driver 的名称提供。

提问者似乎已经用这个解决了这个问题。

但是,此设备驱动程序经常与 POS for .NET/OPOS/JavaPOS 专用,打印时需要使用 Windows 标准打印 API。

于 2018-01-24T08:32:15.290 回答
0

从打开抽屉踢码“ESC|p|0|25|251”中发送的第三个代码实际上是一个控制现金抽屉1或2的符号,它使用'0'或'1'。ASCII 表中的 0 或 1 符号映射到十进制 48 或 49。因此您需要使用 Hex x30 或 x31 而不是 x00。只是为了添加更多信息,第四和第五个代码是通过发送十进制(0到255之间的值)* 2ms来打开或关闭信号踢的时间。如果您仍想使用现金抽屉踢码并将设备连接到打印机,我希望这可以解决问题。

于 2021-05-31T01:14:23.700 回答