Bluetooth SerialDevice.FromIdAsync(字符串id)超时

Bluetooth SerialDevice.FromIdAsync(字符串id)超时,bluetooth,uwp,serial-port,Bluetooth,Uwp,Serial Port,这是我正在编写的UWP应用程序的一个片段 // [...] 使用Windows.Devices.Enumeration; 使用Windows.Devices.SerialCommunication; 使用Windows.Networking.Connectivity; // [...] 专用词典_SerialDevices=新词典; // [...] var serialSelector=SerialDevice.GetDeviceSelector; var serialDevices=wait

这是我正在编写的UWP应用程序的一个片段

// [...] 使用Windows.Devices.Enumeration; 使用Windows.Devices.SerialCommunication; 使用Windows.Networking.Connectivity; // [...] 专用词典_SerialDevices=新词典; // [...] var serialSelector=SerialDevice.GetDeviceSelector; var serialDevices=wait DeviceInformation.FindAllAsyncserialSelector.ToList; var hostNames=NetworkInformation.GetHostNames.SelecthostName=>hostName.DisplayName.ToUpper.ToList;//所以我们可以忽略内置端口 serialDevices中的foreach var deviceInfo { 如果hostNames.FirstOrDefaulthostName=>hostName.StartsWithdeviceInfo.Name.ToUpper==null { 尝试 { var serialDevice=await serialDevice.FromIdAsyncdeviceInfo.Id; 如果serialDevice!=null { _SerialDevices.AdddeviceInfo.Id,serialDevice; } } 捕获异常 { System.Diagnostics.Debug.WriteLineex.ToString; } } } 我已将以下内容添加到项目的Package.appxmanifest文件中

当我到达var serialDevice=await serialDevice.FromIdAsyncdeviceInfo.Id行时;它抛出一个异常:

{System.Exception:信号量超时时间已过期。HRESULT的异常:0x80070079 在System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccessTask任务中 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotificationTask任务中 在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult 在TorinoBluetooth.UwpHidConnector.d_u9.MoveNext}

为什么会失败?UWP有什么东西可以阻止串行连接


注意:我知道串行连接是正常的,因为我可以在设备管理器中查找它,在那里它被列为标准的蓝牙串行连接COM8,然后手动将其他代码连接到COM8

此错误会大大降低串行端口枚举过程的速度,并且在迭代串行设备时可能会发生多次。这是运行代码的机器的串行端口特定问题。要修复相关计算机上的问题,请检查在处理程序中抛出错误的每个deviceInfo.Id。例如,ID为\?\BTHENUM{…}的设备会立即告诉您是蓝牙VSP导致超时。您可以在“设置/打印机和扫描仪”下删除不再使用的蓝牙打印机以将其清除。否则,ID将为您提供线索,以便在设备管理器中查找有问题的串行驱动程序,您可以删除或更新这些驱动程序。

您累了吗?你的设备是什么样的?我来看看样品。该设备是我们正在为当前版本的下一个版本构建的替换集线器,使用USB,我们正在将其替换为蓝牙。它使用BlueGiga WT32i-A蓝牙芯片。此问题可能有点复杂,您可以检查以排除故障。