Центральный диспетчер iPhone coreBluetooth отправляет данные на периферийные устройства

Я хочу отправить данные с iPhone на устройство Bluetooth, которое будет обнаружено и подключено. Я ссылаюсь на это руководство по подключению.

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

Я использую iPhone5, так как он имеет Bluetooth 4.0


person TechFanatic    schedule 26.09.2013    source источник


Ответы (3)


В Core Bluetooth вам нужно использовать характеристики для связи. Нет стандартного API на основе потока, как в External Accessory Framework, и я не знаю каких-либо библиотек с открытым исходным кодом, которые реализуют что-то подобное.

Основные операции

Периферийный -> Центральный:

  1. Central подписывается на характеристику (либо с уведомлениями, либо с указаниями)
  2. Периферийное устройство получает подписанный обратный вызов, поэтому знает, что центральное устройство слушает
  3. Характеристики периферийных обновлений
  4. Central получает обновленное уведомление о характеристиках

Центральный -> Периферийный:

  1. Центральный пишет характеристику
  2. Периферийное устройство получает обновление запроса на запись

Фактическая скорость, которую вы можете достичь, зависит от различных факторов. При индикации данные никогда не теряются (как TCP), а вот уведомления не имеют таких гарантий (как UDP).

Подробнее

Я предлагаю вам ознакомиться с официальным руководством по программированию Core Bluetooth и сосредоточиться на

разделы. Но лучше было бы изучить весь гайд как есть. В качестве рабочего примера ознакомьтесь с примером BTLE Transfer от Apple. .

person allprog    schedule 26.09.2013
comment
Я проверил BTLE Transfer, но нет образца для отправки данных с центрального устройства на периферийное. - person TechFanatic; 26.09.2013
comment
Центральный отправляет данные, записывая характеристики на периферийный. - person allprog; 26.09.2013
comment
@TechFanatic Обновил ответ, чтобы описать базовую схему работы в обоих направлениях. - person allprog; 26.09.2013
comment
Я поднимаю большие проблемы здесь. Я не могу заставить работать чтение данных на периферийной стороне. Я могу отправлять данные из P-›C, но не наоборот. - person Julian F. Weinert; 17.11.2013
comment
@Julian Вам нужно написать характеристики, которые вы обнаружили. Что не работает? - person allprog; 18.11.2013
comment
См. мой вопрос здесь: stackoverflow.com/questions/ 20034433/ - person Julian F. Weinert; 18.11.2013

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

для этого вы используете этот метод:

[peripheral writeValue:dataPacket forCharacteristic:writeChar type:CBCharacteristicWithResponse]
person Gili Ariel    schedule 26.10.2015
comment
В классе CBPeripheralManager такого API нет - person thatzprem; 29.10.2015
comment
Гилли вызывает writeValue не для CBPeripheralManager, а для CBPeripheral, у которого есть этот API. - person Tulsi Leathers; 15.01.2016
comment
что такое writeChar? - person Taimur Ajmal; 12.12.2019

Это довольно убедительное видео, чтобы посмотреть и узнать, что именно происходит в рамках iOS Bluetooth. Четко объяснено, какие операции могут выполнять центральные и периферийные системы.

https://developer.apple.com/videos/play/wwdc2012-705/

person thatzprem    schedule 29.10.2015