Может ли iOS выполнять центральную и периферийную работу в одном приложении одновременно?
Может ли приложение iOS (iPhone или iPad) иметь центральное ядро и периферийные объекты основного ядра Bluetooth (BTLE)?
Могут ли они работать асинхронно, или основной поток приложений должен сделать их доступными (переключение туда и обратно).
Общий концептуальный алгоритм обмена:
отключить периферийный менеджер, включить центральный менеджер и выполнять центральные функции,
а потом,
отключить центральный mgr, включить периферийный mgr и выполнять периферийные функции (то есть отправлять автоматические уведомления, ждать и отвечать на команды удаленных характеристик),
Повторяю...
СПРАВОЧНАЯ ИНФОРМАЦИЯ:
У нас есть локальная система с несколькими устройствами iOS и несколькими устройствами, отличными от iOS, которые должны взаимодействовать через BTLE.
В устройствах, отличных от iOS, используется чип Broadcom BCM20732 Bluetooth LE.
Но аппаратное обеспечение еще не готово, поэтому я использую устройства iOS для эмуляции не-iOS, для чего требуется одновременная центральная и периферийная функциональность, т.е.
1. действовать как центральное место для периодического опроса нескольких других не-iOS-устройств в системе.
2. действовать как периферийное, чтобы отвечать на запросы данных с устройств пользовательского интерфейса iOS.
Ответы
Ответ 1
Я заработал. Я только начал с Apple "BTLE центральный периферийный перевод", а затем сначала делит ошибку -35 db, которую он имеет (поиск "-35", а затем удалить if() {return}), после чего я объединил как central.m и периферийное устройство .m в один файл UIViewController.m, добавили UISwitch, чтобы выбрать один из двух UUID службы, и модифицировали периферийного отправителя, чтобы автоматически увеличивать текстовое поле (после его инициализации до ASCII '0').
У меня было два iPad mini, каждый из которых отправил увеличивающийся номер на другую сторону. Он поднялся до 900 переводов, а затем повесил. Но я видел, что Apple "BTLE c p transfer" всегда висит через несколько минут, требуя перезагрузки iPad для продолжения. Я закончил приложение как на iPad, так и на велосипеде, перезапустил приложение, и они поднялись до 1600 приращений, а затем повесились.
Чтобы решить проблему, я добавлю элемент управления ресурсами, чтобы предотвратить одновременное подключение центральных и периферийных менеджеров в соответствии с рекомендацией Abo.
Ответ 2
Да, они могут, но если ваш телефон теперь находится в периферийном режиме и подключен, вы должны убедиться, что он отключается перед переключением в центральный режим и пытается подключиться к другим устройствам и наоборот.