2

我有一个通过 USB 连接到计算机的 DJ 控制器。它由许多按钮、旋转拨盘(看起来像电位器)、交叉渐变器以及用于刮擦的转盘组成。该控制器能够用于流行的 DJ 节目并且工作正常。在 DJ 程序中,我能够将设备上的不同按钮和控件映射到 DJ 程序中的软件功能。映射时,按钮的名称会显示在 DJ 程序中(名称如“FX1” - 不仅仅是映射到键盘按钮)。

我想创建一个能够从 USB DJ 控制器获取输入的应用程序。没有花哨的音频处理或类似的东西,我想做的就是能够:

  1. 获取设备可用的按钮和控件列表
  2. 从这些控件而不是从键盘获取值

因为按钮、滑块等在 DJ 控制器中显示为命名控件,这让我相信这些信息是可访问的,可能与操纵杆的工作方式类似(尽管我实际上没有在 .NET 中使用操纵杆)。

一般而言,尤其是在 C# 中,如何与这样的 USB 设备进行通信?

4

1 回答 1

0

这一切都取决于控制器制造商向您提供的内容,以及设备如何枚举。

假设设备是通用批量设备(需要第三方驱动程序),您可能会在该设备的 VID/PID 上安装自己的 WinUSB 驱动程序。然后您可以通过 WinUSB API 与设备交互。这里的问题是你需要知道设备的协议——如果他们愿意的话,你可以从制造商那里得到这个。这里的另一种选择是在正常操作期间嗅探总线(使用 Ellisys 等硬件分析器)。

如果设备枚举为 HID 设备,则它必须符合某些 HID 标准(例如鼠标、键盘或 MIDI 控制器)。在这种情况下,规范将已经定义并且在制造商之外可用。在这种情况下,您可以使用 hidapi 打开和使用设备,就像您的 DJ 应用程序一样。

于 2013-10-30T15:36:43.810 回答