打开现金抽屉

时间:2014-04-29 12:06:44

标签: c# wpf point-of-sale pos-for-.net

我需要在我的WPF应用程序中打开Cash Drawer,这是我第一次处理Cash Drawer,经过一些搜索后我知道我会使用Microsoft Point of Services。所以我已经安装了POSforDotNet V1.14并启动了新项目并添加了参考,我找到了这个例子:

CashDrawer myCashDrawer;
PosExplorer explorer;

public MainWindow()
{
    InitializeComponent();
    this.Loaded += MainWindow_Loaded;
}

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    explorer = new PosExplorer();
    DeviceInfo ObjDevicesInfo = explorer.GetDevice("CashDrawer");
    myCashDrawer = explorer.CreateInstance(ObjDevicesInfo);

}

private void Button_Click(object sender, RoutedEventArgs e)
{
    myCashDrawer.Open();
    myCashDrawer.Claim(1000);
    myCashDrawer.DeviceEnabled = true;
    myCashDrawer.OpenDrawer();
    myCashDrawer.DeviceEnabled = false;
    myCashDrawer.Release();
    myCashDrawer.Close();
}

您可以下载我的测试应用程序HERE

我已经尝试过但不起作用:(

  

在myCashDrawer =中给了我错误   explorer.CreateInstance(ObjDevicesInfo);线

请帮助我,因为我遇到了Microsoft服务点,我对此并不完全了解。

3 个答案:

答案 0 :(得分:3)

您需要强制转换为CashDrawer。我现在更新了你的代码,确保你不会收到错误。

myCashDrawer = (CashDrawer)explorer.CreateInstance(ObjDevicesInfo);

答案 1 :(得分:2)

除了(CashDrawer)演员之外,我建议使用

DeviceInfo ObjDevicesInfo = explorer.GetDevice("CashDrawer", "LOGICAL DEVICE NAME for your cash drawer");

如果您安装了多个参数,并且只使用一个参数,则会抛出错误(并且MSPOS v1.14安装了一个虚假的现金抽屉用于测试,因此您至少得到了自己的身体那个)。

答案 2 :(得分:0)

            System.IO.Ports.SerialPort port = null;
            port = new System.IO.Ports.SerialPort(Program.CashDrawerPort);
            port.PortName = Program.CashDrawerPort;
            port.BaudRate = 9600;
            port.Parity = System.IO.Ports.Parity.None;
            port.DataBits = 8;
            port.StopBits = System.IO.Ports.StopBits.One;
            port.RtsEnable = true;
            try
            {
                port.Open();
                if (port.IsOpen)
                {
                    port.Write("B");
                }
                else
                {
                }
                port.Close();
            }
            catch (Exception exceptionMessage)
            {
            }