使用控制代码

时间:2018-01-24 04:39:16

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

我正在使用Epson Thermal打印机和Cash Drawer。现金抽屉与打印机连接。参考http://keyhut.com/popopen.htm,踢现金抽屉的代码是27,112,0,50,250。我试图将此代码发送到打印机,但没有任何反应。我使用POS for .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();

打印文本没问题,但发送代码无效。我能做什么?感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

但是,此设备驱动程序通常专门用于.NET / OSOS / JavaPOS,并且在打印时,必须使用Windows标准打印API。

答案 1 :(得分:0)

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