如何在c#中打开RJ11钱箱
How to open RJ11 cash drawer in c#
我有一个现金抽屉(型号 = PSHOP CD4141)和 POS PC (Posbank Apexa G)。我可以在打印收据之前或之前通过 XPrinter Q900 打开现金抽屉(打印机设置中有一个选项)。但是我需要在没有打印机的情况下打开抽屉。 POS PC 上有 RJ11 端口。我试过这段代码:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.PointOfService;
namespace POS
{
public class CashDrawerClass
{
CashDrawer myCashDrawer;
PosExplorer explorer;
public CashDrawerClass()
{
explorer = new PosExplorer(this);
DeviceInfo ObjDevicesInfo = explorer.GetDevice("CashDrawer");
myCashDrawer = explorer.CreateInstance(ObjDevicesInfo);
}
public void OpenCashDrawer()
{
myCashDrawer.Open();
myCashDrawer.Claim(1000);
myCashDrawer.DeviceEnabled = true;
myCashDrawer.OpenDrawer();
myCashDrawer.DeviceEnabled = false;
myCashDrawer.Release();
myCashDrawer.Close();
}
}
}
但是没用。谁能建议我如何在没有打印机的情况下打开现金抽屉?
我找到了答案。正如@kunif 所说,Apexa G 在 COM5 端口上与现金抽屉通信。我只需要简单的 Write() 命令。以下代码有效:
string port = "COM5";
using (SerialPort serialPort = new SerialPort(port))
{
serialPort.Close();
serialPort.Open();
serialPort.Write("\x001B@\x001Bp[=10=].}");
serialPort.Close();
}
我有一个现金抽屉(型号 = PSHOP CD4141)和 POS PC (Posbank Apexa G)。我可以在打印收据之前或之前通过 XPrinter Q900 打开现金抽屉(打印机设置中有一个选项)。但是我需要在没有打印机的情况下打开抽屉。 POS PC 上有 RJ11 端口。我试过这段代码:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.PointOfService;
namespace POS
{
public class CashDrawerClass
{
CashDrawer myCashDrawer;
PosExplorer explorer;
public CashDrawerClass()
{
explorer = new PosExplorer(this);
DeviceInfo ObjDevicesInfo = explorer.GetDevice("CashDrawer");
myCashDrawer = explorer.CreateInstance(ObjDevicesInfo);
}
public void OpenCashDrawer()
{
myCashDrawer.Open();
myCashDrawer.Claim(1000);
myCashDrawer.DeviceEnabled = true;
myCashDrawer.OpenDrawer();
myCashDrawer.DeviceEnabled = false;
myCashDrawer.Release();
myCashDrawer.Close();
}
}
}
但是没用。谁能建议我如何在没有打印机的情况下打开现金抽屉?
我找到了答案。正如@kunif 所说,Apexa G 在 COM5 端口上与现金抽屉通信。我只需要简单的 Write() 命令。以下代码有效:
string port = "COM5";
using (SerialPort serialPort = new SerialPort(port))
{
serialPort.Close();
serialPort.Open();
serialPort.Write("\x001B@\x001Bp[=10=].}");
serialPort.Close();
}