Как открыть денежный ящик RJ11 в С#

У меня есть денежный ящик (модель = PSHOP CD4141) и POS-компьютер (Posbank Apexa G). Я могу открыть денежный ящик через XPrinter Q900 после или до печати чека (есть опция в настройках принтера). Но мне нужно открыть ящик без принтера. На ПК POS есть порты 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();
        }
    }
}

Но это не работает. Кто-нибудь может подсказать, как открыть денежный ящик без принтера?


person kyavuz    schedule 10.08.2020    source источник
comment
Согласно страницам 5–6 руководства, кажется что разъем RJ11 - это COM4 для VFD, а CashDrawer - это разъем RJ45 для выборочной замены на COM5. И похоже, что для использования CashDrawer необходимо выбрать заводские опции. Нельзя ли выбрать после отправки?   -  person kunif    schedule 10.08.2020


Ответы (1)


Я нашел ответ. Как сказал @kunif, Apexa G связывается с денежным ящиком через порт COM5. Все, что мне нужно, это простая команда Write(). Следующий код работает:

string port = "COM5";    
using (SerialPort serialPort = new SerialPort(port))
{
     serialPort.Close();
     serialPort.Open();
     serialPort.Write("\x001B@\x001Bp\0.}");
     serialPort.Close();
}
person kyavuz    schedule 11.08.2020