Code: Select all
bthserv
Hier ist mein Code: < /p>
Code: Select all
int retryCount = 5;
DeviceInformation deviceInfo = null;
// Sometimes Windows loses track of the services! We may need to refresh them - can sometimes take a few retries.
while (deviceInfo == null && retryCount-- > 0)
{
// after switching devices this call usually returns an empty set even though I have successfully paired the second device with the same service.
var allDeviceInfos = await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(MyServiceId));
deviceInfo = allDeviceInfos.FirstOrDefault(d => d.Name == device.DeviceInformation.Name);
if (deviceInfo == null)
{
_logger.LogDebug("Device not found! Retrying...");
await RefreshServices();
Thread.Sleep(1000);
}
}
< /code>
....
private async Task RefreshServices()
{
_logger.LogDebug("Refreshing the device's service list.");
var devices = await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector());
var myDevices = new List();
foreach (var device in devices.Where(d => d.Name.StartsWith("MyDeviceName_")))
{
var bleDevice = await BluetoothLEDevice.FromIdAsync(device.Id);
// after switching devices, the application hangs on the following line and never returns a value.
var services = await bleDevice.GetGattServicesAsync();
_logger.LogDebug($"Service list from {wristOx.Name}: Status: {services.Status}, count: {services.Services?.Count}");
}
}
Ich habe auch mit getgattservicesaSync (bluetoothMode.uncached) < /code> versucht, aber das gleiche Ergebnis. < /li>
Ich habe versucht, meinen Computer neu zu starten, aber das scheint GetGattservicesAsync () aus seiner Stahlsporung nicht zu nehmen! Dies ist wirklich seltsam - einen Prozess zu töten "repariert" ihn, aber das Neustarten des Computers nicht! 0 Geräte, der nachfolgende Aufruf von DeviceInformation. > Bearbeiten
Wie angefordert habe ich versucht, die Bluetooth -Protokolle mit WPR und dem von Junjie Zhu - MSFT bereitgestellten Link zu erhalten, und ich nehme mir jetzt Zeit, um zu gehen Durch das Diagramm "generische Ereignisse", die die einzige mit Informationen darin ist. Ich bin mir jedoch nicht sicher, wie ich den Hang mit den Ereignissen in diesem Diagramm übereinstimmen kann, und es gibt viel zu viele Informationen, um ihn hier einzufügen. < /P>
e.g. Ich habe diesen Abschnitt "Bluetooth" gefunden, aber die richtigen Ereignisse zum Betrachten und Interpretieren der Ergebnisse ist der schwierige Teil. "https://i.sstatic.net/yyhmh90w.png"/>
Interessanterweise stürzt WPA jedes Mal, wenn ich versuche, die RadiodiagnostictLVverbose Ereignisse zu sehen ... es ist es zu sehen ... es ist Ein ArgumentoutoFrangeException
Ein weiterer Bearbeiten
Wie angefordert sind die Protokolle von WPR. (Jeweils 21 MB)
Ausfall - Dies zeigt, wann es fehlschlägt - d. H. Ich erhalte 0 Geräte von DeviceInformation. /Code> hängt für immer. GetDeviceselectorFromuUid (myServiceid)) . However, GetGattServicesAsync() returned a list of services for the device, and after two times through this loop, DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(MyServiceId)) then finally returns my device and I can connect dazu. . < /li>
Ich habe es jetzt auf drei verschiedenen Computern ausprobiert, und einer von ihnen hat dieses Problem nicht! Mein Entwicklungs -PC ist Windows 11 23H2 und dieses Problem ist zu sehen. Es gibt auch ein MS -Oberflächen -Go -2 -Tablet mit Windows 10 22H2, der es auch zu haben scheint. Aber ich habe eine andere MS -Oberfläche Go 2 mit Windows 10 21H2, wo ich ohne Probleme zwischen den Armband>