Я разработал код C# для связи с термометром Onset InTemp через Bluetooth Low Energy (BLE). Работает нормально долгое время. Я могу получить маяки (которые содержат данные термометра), а также подключиться, получить услуги и характеристики на случай, если мне понадобится получить пропущенные данные или установить параметры термометра. Однако примерно через 8 часов (может быть и 24 часа) непрерывного получения маяков и подключения, получения исторических данных и т. д. мое приложение зависает на этой строке:
Код: Выделить всё
var gatt = await device.GetGattServicesAsync();
Код: Выделить всё
device = await BluetoothLEDevice.FromBluetoothAddressAsync(args.BluetoothAddress);
Драйвер Bluetooth ожидал события HCI определенного размера, но не получил его. .
Именно по этой причине я заявил, что это может быть вопрос для доски SuperUser. Независимо от того, насколько плохо я запрограммировал свой код
Я нашел несколько ссылок на эту проблему, но ничего определенного.
Я Я также работаю над написанием полной программы меньшего размера, чтобы показать проблему. До сих пор я не могу добиться сбоя примера программы, из чего я делаю вывод, что либо (1) я не позволил ей работать достаточно долго, либо (2) я не полностью дублирую то, что происходит, с моей полной программой. Возможно, я не оказываю такого большого давления на драйверы BLE или не слушаю маяки и не пытаюсь подключиться с теми же соотношениями или с той же синхронизацией.
Я должен сказать, что Я вижу много нареканий по поводу реализации в Windows уровня хоста BLE и драйверов BLE. К сожалению, я застрял на Windows. Nordic также предположил, что все, о чем я сообщаю, является «известной проблемой», и использование их ключа Nordic решит проблему. См., например: https://devzone.nordicsemi.com/f/nordic ... hermometer.
Это может быть ну, это правда, но это потребует много работы, поскольку у них есть библиотеки на C++ и Node.JS, но нет на C#.
Любая помощь очень важна. ценю.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/638 ... round-such
Мобильная версия