Может ли iOS выполнять центральную и периферийную работу в одном приложении одновременно? - программирование
Подтвердить что ты не робот

Может ли iOS выполнять центральную и периферийную работу в одном приложении одновременно?

Может ли приложение iOS (iPhone или iPad) иметь центральное ядро ​​и периферийные объекты основного ядра Bluetooth (BTLE)?

Могут ли они работать асинхронно, или основной поток приложений должен сделать их доступными (переключение туда и обратно).

Общий концептуальный алгоритм обмена: отключить периферийный менеджер, включить центральный менеджер и выполнять центральные функции, а потом, отключить центральный mgr, включить периферийный mgr и выполнять периферийные функции (то есть отправлять автоматические уведомления, ждать и отвечать на команды удаленных характеристик), Повторяю...

СПРАВОЧНАЯ ИНФОРМАЦИЯ: У нас есть локальная система с несколькими устройствами iOS и несколькими устройствами, отличными от iOS, которые должны взаимодействовать через BTLE. В устройствах, отличных от iOS, используется чип Broadcom BCM20732 Bluetooth LE. Но аппаратное обеспечение еще не готово, поэтому я использую устройства iOS для эмуляции не-iOS, для чего требуется одновременная центральная и периферийная функциональность, т.е. 1. действовать как центральное место для периодического опроса нескольких других не-iOS-устройств в системе. 2. действовать как периферийное, чтобы отвечать на запросы данных с устройств пользовательского интерфейса iOS.

4b9b3361

Ответ 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

Да, они могут, но если ваш телефон теперь находится в периферийном режиме и подключен, вы должны убедиться, что он отключается перед переключением в центральный режим и пытается подключиться к другим устройствам и наоборот.