Intereting Posts
Как можно сохранить стиль поведения элемента списка по умолчанию для ExpandableListView при представлении группового представления, содержащего больше, чем просто TextView? Android-эквивалент java.awt.Dimension Сохранение состояния объекта при нажатии пользователем кнопки «Назад» Получение имени пакета приложения foreground в Marshmallow задерживается на 3 секунды Android RestClientException: не найдено подходящего HttpMessageConverter Как запустить / запустить приложение во время загрузки Android Локальный автономный клиент Android.view.InflateException: двоичная строка XML-файла # 7: ошибка раздувания фрагмента класса Преобразование из Editable в int в android Как заменить файл XML в APK? Android: проверьте, существует ли значение в общих настройках Почему мое приложение Android сбой, когда я пытаюсь получить доступ к строковым ресурсам? Как мы можем сделать макет таблицы для прокрутки в обоих направлениях (по горизонтали, по вертикали) Android – Откройте браузер с URL-адресом с заголовками запросов Android multitouch получает неправильные указатели и / или значения XY

Bluetooth BLE Android записывается в периферийное устройство с максимальной пропускной способностью

Наша компания разрабатывает аппаратное подразделение с Bluetooth BLE, и у нас есть сервисное приложение на Nexus 7 (2013), с которого мы хотим отправить файлы прошивки в устройство. Файлы могут быть размером до 500 КБ.

Чип BT – это Texas Instruments CC2540.

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

На домашней странице северных полупроводников я нашел пример того, как они рассчитывают максимальную пропускную способность для Android-устройства: ( https://devzone.nordicsemi.com/index.php/how-do-calcalulate-throughput-for-a-ble -link )

Nexus 4 with nRF51822: 4 * 20 B * 1/0.0075 s = 10.6 kB/s = 84 kbps 

В нем говорится, что блок Android может отправлять 4 пакета по 20 байт за каждый интервал подключения, а Android может обрабатывать интервалы соединения 7,5 мс.

В нашем приложении мы в настоящее время отправляем данные с помощью writeCharateristics и ожидаем обратного вызова onWriteCharateristics перед отправкой следующего фрагмента данных. Тем не менее, скорость отправки очень медленная, так как обратный вызов занимает около 2 секунд для вызова (!!). Это делает скорость передачи данных 10 байт / с, которая находится далеко от 10.6kb / s в приведенном выше примере.

Мы попытались передать 50 килобайт данных между двумя устройствами iOS (с модифицированной версией демонстрации KeyFob для iOS) и получили скорость передачи 3,4 кбит / с. Но это было использование CBPeripheralManager UpdateValue, которое, как я понимаю, является способом отправки уведомления от периферийного к центральному.

То, что я прочитал, сейчас не имеет никакого отношения к тому, чтобы устройство Android работало как периферийное. Означает ли это, что CC2540 не может отправлять уведомления Nexus 7? И единственный способ максимизировать пропускную способность для отправки данных через уведомления?

Является ли это стеком в устройстве TI, что делает его медленным, или есть способ изменить какие-либо параметры, чтобы ускорить передачу данных между Nexus и CC-блоком?

У нас была идея реализовать сервер GATT на устройстве Nexus 7 и сделать подписку CC2540 на уведомления. Это возможно? Это означает, что Nexus сначала должен сканировать CC2540 и подключиться к нему, когда он найдет службу. Когда соединение установлено, CC2540 начинает подписываться на уведомления от Nexus 7. После этого отправляя уведомления от Nexus на CC2540 с более высокой скоростью передачи.

Надеюсь, кто-то еще пытался сделать то же самое, что мы и пытаемся сделать!

    Несколько месяцев назад я работал над проектом с использованием CC2540, к сожалению, проект касался еще одного приложения.

    В любом случае, я помню, что вы можете установить параметры соединения, такие как Connection_Interval или Slave_Latency , чтобы повысить пропускную способность, даже если потребление энергии будет больше, чем раньше. Возможно, вы уже пытались это сделать, но я думаю, что это единственный способ получить хороший результат.