如何与DJ控制器(USB硬件)通信

时间:2013-10-29 18:04:29

标签: c# usb hardware joystick

我有一个DJ控制器,通过USB连接到电脑。它包括许多按钮,旋转拨盘(看起来像电位计),交叉推杆,当然还有一个用于刮擦的转盘。 该控制器可用于流行的DJ节目,并且工作正常。 在DJ程序中,我能够将设备上的不同按钮和控件映射到DJ程序中的软件功能。映射时,按钮的名称显示在DJ程序中(名称如“FX1” - 不仅仅映射到键盘按钮)。

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

  1. 获取设备提供的按钮和控件列表
  2. 从这些控件而不是键盘中获取值
  3. 因为按钮,滑块等在DJ控制器中显示为命名控件,这使我相信这些信息是可访问的,可能与操纵杆的工作方式类似(尽管我实际上并没有使用操纵杆。) NET)。

    一般来说,如何与这种USB设备进行通信,特别是在C#中?

1 个答案:

答案 0 :(得分:0)

这完全取决于控制器的制造商为您提供的内容以及设备的枚举方式。

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

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