В настоящее время я работаю над приложением, которое получает данные с устройства BLE - аналогично сердечному монитору. Приложение считывает данные с устройства, а затем, когда получает определенный объем данных, создает файл .csv и загружает его на сервер. Все работает нормально, кроме случаев, когда устройство выходит за пределы диапазона. Приложение просто перестает получать данные и не распознает потерю связи. Я не получаю сообщения об ошибке. Приложение просто останавливается в середине цикла «получение данных» и продолжает ждать данные, которые никогда не поступают. Когда устройство снова в зоне действия, ничего не происходит.
Я хочу показать предупреждение о том, что устройство BLE находится вне диапазона. Когда устройство снова окажется в зоне действия, приложение должно автоматически повторно подключиться к нему, а затем продолжить считывание данных с устройства. Как я могу это реализовать? Я попытался получить состояние CM - используя функцию ниже - но это не сработало.
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
printf("Status of CoreBluetooth central manager changed %d (%s)\r\n",central.state,[self centralManagerStateToString:central.state]);
}
Я даже пытался добавить предложение if внутри цикла, чтобы проверить состояние устройства, но это тоже не сработало.
Я использую микросхему CC2540 Texas Instruments.
didDisconnectPeriphal
метод делегата? - person Paulw11   schedule 24.03.2015