如何使用 C# 打开 USB 连接的钱箱

问题描述 投票:0回答:1

我已经使用 WPF 和 .NET Framework v:4.8 开发了一个 POS 应用程序,我的客户想要一个功能,使他能够通过单击按钮 F1 打开现金抽屉(应用程序打印时现金抽屉不会自动打开)一张票)。 现在,他的钱箱通过 USB 电缆(抽屉侧面的 USB 类型 B)连接,并且默认使用 COM3 端口。

我尝试过以下代码:

try
{
    PosExplorer explorer = new PosExplorer();
    DeviceInfo info = explorer.GetDevice("CashDrawer");
    CashDrawer drawer = (CashDrawer)explorer.CreateInstance(info);

    drawer.Open();
    drawer.Claim(1000);
    drawer.DeviceEnabled = true;
    drawer.OpenDrawer();
    drawer.DeviceEnabled = false;
    drawer.Release();
    drawer.Close();
}
catch(Exception ex) { _ = new MyMessageBox($"ERROR trying to open the Cash Drawer!\n\n{ex.Message}"); }

但不幸的是代码不断抛出异常, 现在,我还尝试安装一些我在此处找到的 USB cashDrawer 驱动程序 https://logiccontrols.com/product-drivers/ ,该驱动程序甚至没有安装,并显示“未找到 cashDrawer”并停止安装。

c# usb driver point-of-sale
1个回答
0
投票

要使用 C# 打开 USB 连接的钱箱,通常需要通过 USB 接口向钱箱发送特定的命令或信号。具体细节可能会因现金抽屉的制造商和型号而异。

以下是有关如何完成此任务的一般指南:

  1. 确定现金抽屉规格: 检查现金抽屉随附的文档或访问制造商的网站,查找有关打开抽屉所需的通信协议或命令的信息。
  2. 安装USB驱动: 确保您的钱箱安装了必要的 USB 驱动程序。这可能由制造商提供。
  3. 使用 SerialPort 类(假设串行通信): 如果钱箱通过虚拟COM端口进行通信,则可以使用C#中的SerialPort类来发送命令。

using System.IO.Ports;

class Program
{
    static void Main()
    {
        // Replace "COMx" with the actual COM port assigned to your cash drawer
        string portName = "COM3"; 

        using (SerialPort serialPort = new SerialPort(portName))
        {
            serialPort.Open();

            // Send command to open the cash drawer
            serialPort.Write("your_open_command");

            serialPort.Close();
        }
    }
}

  1. 使用 USB 库(如果可用): 某些现金抽屉可能具有制造商提供的特定库或 SDK。请参阅这些库的文档并在您的 C# 应用程序中使用它们。
  2. 检查供应商特定文档: 如果您的现金抽屉有特定的供应商或型号,请搜索可能可用的任何供应商特定的库或文档。
  3. 测试与调试: 连接现金抽屉,运行 C# 应用程序,然后查看它是否成功打开抽屉。使用调试技术来解决任何问题。 重要的提示: 向硬件设备发送命令时务必小心,并确保您已彻底阅读文档以避免潜在问题。 请记住,这是一般指南,具体步骤可能会根据您的钱箱规格而有所不同。如果可能,请查阅制造商的文档或支持资源,以获取准确的特定型号信息。
© www.soinside.com 2019 - 2024. All rights reserved.