@Sash0k_k

Передача файлов по bluetooth с android на устройство с hc-05?

Здравствуйте, в процессе тестирования получил проблему.
Может быть кто-то сможет навести на мысль, что происходит.

Есть собственное устройство с bluetooth-модулем hc-05, на которое заливаем файлы с андроид-смартфонов.

Загрузка файла реализована его разбивкой на куски в N байт и последовательной передачей их на устройство, с подтверждением принятия каждого блока и таймаутом максимального ожидания.
Приложение для смартфона основано на стандартном примере работы с bluetooth.

Взяли N = 4096 (файлы передаются блоками по 4 килобайта).
На части устройств всё работает нормально, но вот столкнулись с тем, что на Samsung GT-5830i LaFleur алгоритм не работает.
Смотрим терминалом: первый пакет практически никогда не передаётся полностью, очень редко затык происходит на втором пакете. Смартфон отправляет кусок данных, и дальше просто ничего не делает (таймаут ожидания на устройстве не успевает истечь).

При уменьшении буфера до 1024 байт смартфон начинает работать стабильно, но увеличивается время передачи файлов.

Вопрос: что это и как с этим бороться помимо уменьшения размера блока?
  • Вопрос задан
  • 4457 просмотров
Пригласить эксперта
Ответы на вопрос 1
SFx
@SFx
Тоже скоро грозит мне похожая задача, но не с файлами.
Думаю вам стоит немного модифицировать свой протокол. Внести в блок данных заголовок, размер пакета, и контрольную сумму. Так же можно добавить логику, которая увеличивает и уменьшает размер блока передачи в зависимости от потерь, подобно тому, как делается в TCP. Если ресурсы еще останутся, можно реализовать помехоустойчивое кодирование ReedSolomon или аналогичное.
Причина ваших проблем, возможно, кроется в точках доступа wifi, помехах в эфире, особенностью BT-антенны в конкретном телефоне (конструктивно неудачна расположена)
В моей практике было несколько устройств BT, которые работали всегда хорошо, но однажды я взял Samsung GT-6312, и с ним постоянна пропадала связь, поэтому я думаю вам стоит расширить парк телефонов для теста, благо с Android их можно купить уже по цене меньше 100$.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы