【问题标题】:Open Cash Drawer打开钱箱
【发布时间】:2014-04-29 12:06:43
【问题描述】:

我需要在我的 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 Point of Services 卡住了,我并不完全理解它。

【问题讨论】:

  • 你能定义“不工作”吗?
  • @PatrickHofman,感谢您的宝贵时间,它在 myCashDrawer = explorer.CreateInstance(ObjDevicesInfo);线。您可以下载测试应用程序
  • 您还需要发布您在原始问题中收到的错误。我似乎记得当我使用 POS for .NET 时,有一个单独的应用程序需要用于在 Windows 级别声明设备。你可以试着研究一下。
  • 在@alan 上专门为“发布错误”投票。
  • 您是否设置了名为 CashDrawer 的 OPOS 提款机?您可以在 HKEY_LOCAL_MACHINE\SOFTWARE\OLEforRetail\ServiceOPOS\CashDrawer 下的注册表中检查应该有一个名为 CashDrawer 的子键。还有提款机是如何连接电脑的,直接连接还是通过打印机?

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


【解决方案1】:

您需要将类型转换为CashDrawer。我现在更新了你的代码,确保你不会出错。

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

【讨论】:

    【解决方案2】:

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

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

    如果您安装了多个参数并且只使用一个参数,则会引发错误(并且 MSPOS v1.14 安装了一个虚假的现金抽屉进行测试,因此您至少拥有您的实体和那个) .

    【讨论】:

      【解决方案3】:
                  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)
                  {
                  }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      • 2022-12-04
      • 2018-11-06
      • 2018-11-09
      • 2015-10-16
      • 2016-11-22
      • 2019-02-18
      相关资源
      最近更新 更多