Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理多个相同的MIDI USB设备_C#_Midi - Fatal编程技术网

C# 如何处理多个相同的MIDI USB设备

C# 如何处理多个相同的MIDI USB设备,c#,midi,C#,Midi,我的c#应用程序必须使用多个相同的USB MIDI接口,这些接口都来自同一制造商 在设备管理器中,所有设备都显示为相同的驱动程序名/CLSID-只有PNPDeviceID不同。当我列出所有MIDI输入/输出(使用MIDI网络)时,它们显示如下: ACME-MIDI:端口1 1-ACME-MIDI:端口1 2-ACME-MIDI:端口1 不幸的是,对于同一设备,这些名称并不总是相同的。设备1的端口有时显示为“ACME-MIDI:Port 1”,有时显示为“1-ACME:Port 1”(它们会在

我的c#应用程序必须使用多个相同的USB MIDI接口,这些接口都来自同一制造商

在设备管理器中,所有设备都显示为相同的驱动程序名/CLSID-只有PNPDeviceID不同。当我列出所有MIDI输入/输出(使用MIDI网络)时,它们显示如下:

  • ACME-MIDI:端口1
  • 1-ACME-MIDI:端口1
  • 2-ACME-MIDI:端口1
不幸的是,对于同一设备,这些名称并不总是相同的。设备1的端口有时显示为“ACME-MIDI:Port 1”,有时显示为“1-ACME:Port 1”(它们会在重新启动后更改)

我使用了不同的方法试图找到哪个名称属于哪个设备(SetupDi、WMI、Win32_pnpsignedriver,…),但我要么得到设备ID,要么得到它报告的端口名,但我无法使用设备ID或驱动程序键找到报告的MIDI端口名(ACME-MIDI:port n)

有什么建议吗

更新


我仍在寻找一种解决方案,列出给定端口上MIDI USB接口的输入/输出端口(例如,使用Windows API)。这似乎很棘手,这就是为什么我开始悬赏的原因。

不幸的是,当单独使用MIDI API时,无法区分设备。你必须相信他们的名字。幸运的是,虽然设备顺序可以更改,但根据我的经验,这种情况通常不会在重新启动时发生。然而,正如你所看到的,它可以


过去,我在自己的软件中通过提示用户按键或移动设备上的控制旋钮来区分它们来处理此问题。

您必须使用设备连接的USB端口号。(寻找一些值为“Port#0002.Hub#0004”或更好的“PCIROOT(0)#PCI(1D00)#USBROOT(0)#USB(1)#USB(2)”的属性)我在想,也许CL的评论会起作用。你有没有找到解决办法?我在使用相同的扫描仪时也遇到了类似的问题。我最终使用了不同名称的设备,所以我还没有找到任何解决方案。如果你发现了什么,请告诉我这就是我害怕的。在我的例子中,由于MIDI设备正在Windows服务中使用,因此没有任何用户交互的机会。我唯一能确定的是哪个接口连接到哪个USB端口。我希望有任何可能使用USB端口标识符获取名称…@lenniep MIDI不需要USB,但如果您使用的是您知道将是USB的设备,则可能有一个选项。但是我不知道怎么做。我几年前也遇到过同样的问题,但从未找到解决办法。谢谢,我仍然希望找到解决办法。如果我能够确定哪个USB MIDI接口连接到哪个端口以及这个接口提供的“MIDI端口”,那么它应该可以工作。