如何在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();
}