Время установки соединения CoreBluetooth сильно различается

Время, необходимое для подключения моего приложения к устройству Bluetooth 4.0, похоже, сильно различается. То же приложение, то же устройство. Иногда коннектится сразу - вроде меньше секунды. Иногда это занимает около 10-12 секунд. И время от времени он вообще не подключается - мне нужно перезапустить сканирование и т. Д. Мне было интересно, видел ли кто-нибудь еще эту проблему. Что может быть причиной этого?


person mezulu    schedule 12.10.2012    source источник
comment
Непредсказуемый характер беспроводной связи малого радиуса действия? LE намного лучше в этом отношении, чем стандартный Bluetooth, но я также видел на нем переменное время соединения и просто списал это на проблемы со связью.   -  person Brad Larson    schedule 13.10.2012
comment
Мезулу, как вы думаете, вы могли бы как-то поднять этот вопрос? Чтобы на нее посмотрели новые люди? Поскольку это, возможно, продвинулось с октября. Это спасло бы меня от повторного вопроса (который, я думаю, не одобряется).   -  person Nick T    schedule 30.12.2012


Ответы (2)


Для этого может быть ряд причин. Вот несколько из верхней части моей головы.

  1. Аппарат не очень часто рекламируют. О/С в основном сканирует устройство, которое посылает рекламный сигнал. Это то, что устройства делают как можно реже для экономии заряда батареи. На некоторых устройствах есть кнопка, которая заставляет их рекламировать их чаще, когда вы настраиваете соединение. У других может быть настройка, позволяющая изменить рекламную ставку. (Какое устройство вы используете?)

  2. Устройство может быть подключено к чему-то еще.

  3. Батарея может быть разряжена.

  4. Возможны радиопомехи от другого источника. Wi-Fi часто является проблемой. И устройства Bluetooth 4.0, и устройства WiFi используют скачкообразную перестройку частоты. Попробуйте отключить или перезапустить сеть Wi-Fi. Попробуйте отключить Wi-Fi на телефоне и посмотрите, поможет ли это.

  5. Конечно, хотя нам и не хочется это признавать, всегда есть скрытая возможность того, что мы закодировали что-то неправильно в нашем приложении! Тот факт, что мы получили одно соединение, не является гарантией того, что приложение идеально.

person Mike    schedule 26.10.2012

Я также нахожу ту же проблему. У меня реклама устройства BLE каждые 2 секунды.

[self.CM scanForPeripheralsWithServices:nil options:0]

возвращается через 0,2 с до ~ 30 с. (СМ — мой центральный менеджер)

Мой следующий шаг — собрать время в CSV-файле и построить график частотного распределения различных значений времени подключения и времени подключения в зависимости от времени, чтобы посмотреть, смогу ли я различить закономерность.

Существует полезное демонстрационное приложение TI. Но, к сожалению, они сделали его универсальным и не реализовали раскадровку для iPad (она есть и пуста), а установка версии только для iPhone вызывает ошибку, когда я пытаюсь запустить в режиме отладки. И у меня нет под рукой другого устройства Apple с BLE.

Вызов

[self.CM stopScan]; 

до того, как scanWithPeripherals, кажется, уменьшает количество очень долгих ожиданий.

Я попробовал параметр CBCentralManagerScanOptionAllowDuplicatesKey, как показано в этом ответе Stackoverflow, но если что-то казалось для увеличения времени обнаружения.

Я думаю, что раздобуду некоторые инструменты для прослушивания пакетов Bluetooth, чтобы помочь увидеть, что на самом деле находится в воздухе.

person Nick T    schedule 30.12.2012
comment
Демонстрация TI работает после некоторых настроек, чтобы поместить ее в приложение только для iPhone, мне пришлось отключить iPad, выйти из Xcode, удалить производные данные, перезапустить Xcode. - person Nick T; 30.12.2012
comment
Вы нашли много? У нас есть искусственный тайм-аут в 10 секунд для шага соединения. около 12% наших пользователей по какой-то причине соблюдают этот тайм-аут на iOS 12. Мы используем дублирующие ключи, и обычно устройство сканируется за ‹ 0,5 секунды, но для подключения требуется больше 10 секунд. Мы вызываем stopScan перед вызовом функции подключения. - person VaporwareWolf; 26.11.2018