Windows WinRT/C++;并发MIDI和BLE通信问题

Windows WinRT/C++;并发MIDI和BLE通信问题,windows,bluetooth,windows-runtime,bluetooth-lowenergy,midi,Windows,Bluetooth,Windows Runtime,Bluetooth Lowenergy,Midi,我的团队在使用WinRT/C++API for Windows连接到MIDI端口并通过同一设备上的专有服务接收BLE通知时一直在努力解决一个非常奇怪的问题 > WINRT/C++库本身非常好,提供了简单而现代的C++接口来访问托管Windows运行时类。 我已经将一个问题推到Github,在那里我们用一个简单的例子复制了这个问题 回购协议的自述详细讨论了这个问题,但为了完整起见,我将在这里发布相关内容 示例程序大致执行以下步骤: 使用浏览器检查可用的MIDI设备 使用DeviceWatch

我的团队在使用WinRT/C++API for Windows连接到MIDI端口并通过同一设备上的专有服务接收BLE通知时一直在努力解决一个非常奇怪的问题

<> > WINRT/C++库本身非常好,提供了简单而现代的C++接口来访问托管Windows运行时类。 我已经将一个问题推到Github,在那里我们用一个简单的例子复制了这个问题

回购协议的自述详细讨论了这个问题,但为了完整起见,我将在这里发布相关内容

示例程序大致执行以下步骤:

  • 使用浏览器检查可用的MIDI设备

  • 使用DeviceWatcher的另一个实例检查可用的蓝牙LE设备

  • 匹配在其ContainerId属性上发现的MIDI和BluetoothLE设备(有关详细信息,请参阅)。这是JUCE在其库中所采用的方法,并按预期工作

  • 打开MIDI端口并将处理程序附加到事件()

  • 这会导致系统创建与蓝牙LE设备的连接。程序检测到这个状态变化,创建一个BluetoothLEDevice,我们执行GATT服务发现,并为我们感兴趣的来自()的通知的特征向事件附加一个处理程序

然后,该程序统计每个端口上接收到多少MIDI消息,以及从相应设备接收到多少BLE通知

我们注意到的行为是,来自最近连接的设备的数据流很好,而其他设备的吞吐量受到严重限制。在这个问题上,我们处于相当停滞的状态,不确定问题可能在哪里


我们在这里陷于停顿。如果所有设备都表现出这种行为,我会更愿意接受,但事实并非如此。是否有任何理由认为从同一外设创建MIDINPORT和BluetoothLED设备都会导致此问题?

可编程无线电只能在任何给定时间接收或发送。因此,在任何给定时间仅与一个设备通信。当您有许多设备时,它使用调度器为每个设备分配无线电时间。这样,第二个连接可以“中断”来自另一个设备的连接事件,从而降低该设备的吞吐量。请参见

可调谐收音机只能在任何给定时间接收或发送。因此,在任何给定时间仅与一个设备通信。当您有许多设备时,它使用调度器为每个设备分配无线电时间。这样,第二个连接可以“中断”来自另一个设备的连接事件,从而降低该设备的吞吐量。您好,谢谢您的回复。虽然这是一个很好的预感,但我不太愿意接受这是根本原因。我们正在开发跨平台的软件,MacOS版本没有表现出这种行为(即使在相同的硬件上)。Windows运行时中一定有我们误解的东西,或者根本上有缺陷。然后使用BLE嗅探器查看空气中到底发生了什么。顺便问一下,你们的通话间隔是多久?嗨,谢谢你的回复。虽然这是一个很好的预感,但我不太愿意接受这是根本原因。我们正在开发跨平台的软件,MacOS版本没有表现出这种行为(即使在相同的硬件上)。Windows运行时中一定有我们误解的东西,或者根本上有缺陷。然后使用BLE嗅探器查看空气中到底发生了什么。顺便问一下,你们的连接间隔是多少?