Периферийное устройство настроено для рекламы с одной услугой, к которой добавлены две характеристики. Одна характеристика имеет свойство уведомлять и разрешение читается. Другая характеристика имеет свойство write и разрешение для записи. Вторая упомянутая характеристика используется для связи от центральной к периферии, и именно там проблема.Данные из центра принимаются только каждые 10 секунд, почему?
Кажется, что есть 10-секундный цикл. Не более чем один из ожидаемых пакетов может приниматься более одного раза в промежутке времени в 10 секунд. Также, если центральный отправляет данные через 10 секунд после отправки данных до того, как периферийное устройство получит ожидаемый пакет мгновенно, менее секунды.
Вы можете видеть, что я имею в виду с выходом отладчика.
Отредактировано 15 февраля 2017 * Чтобы прояснить этот вопрос немного лучше я буду давать больше информации о выходе из отладчика. То, что вы видите здесь, является центральным отлаживанием. Формулировка «writeValue» указывает, что данные были отправлены, и формулировка «didWriteValueFor» указывает на подтверждение того, что данные достигли периферии успешно. Это подтверждение вызывается в методе делегата:
func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?)
*
Это как если бы сообщение в описанном направлении блокируется в течение 10 секунд после последнего приема данных, а затем снова открыт. Можно ли предотвратить эту блокировку? Периферийные (-и) потребности (ы) должны быть проинформированы мгновенно и не только каждые 10 секунд. Я уверен, что настраиваю что-то неправильно или забыл что-то важное.
Помощь очень ценится.
Непонятно, если вы подключены к периферийному устройству или просто полагаетесь на рекламные мероприятия. Рекламные мероприятия - это низкий рабочий цикл, а 10,25 секунды - максимальное время цикла. Большинство периферийных устройств рекламируют по ставкам, приближающимся к этому максимуму для экономии энергии. – CuriousRabbit
Они подключены.Я не упоминал, что периферийные и центральные связаны, потому что мне неизвестно, что центральный может передавать данные на периферию, если он не подключен. Благодарим вас за информацию о 10-секундном низком цикле рекламы. – BCI
Какой интервал подключения вашего устройства? Это позволит определить, как часто вы можете общаться с устройством. (Я не знаю, как это получить через CoreBluetooth, вы, как правило, получаете его, зная, как вы настроили прошивку на периферии. Это может быть доступно через IOBluetooth, но я никогда не пробовал это на iOS.) –