Android Bluetooth Serial RFCOMM низкая скорость передачи/медленная передача

Я работаю над проектом Android Bluetooth для отправки и получения данных с изготовленного на заказ оборудования. В качестве основы я использовал Образец Bluetooth-чата в SDK.

Я понял, что невозможно изменить скорость передачи данных на клиенте (телефон Android), а скорость передачи данных будет зависеть от оборудования. Я пробовал устанавливать разные скорости передачи данных на оборудовании, но ни одна из них не соответствовала нашим ожиданиям;

Самое быстрое, что я могу получить, это 91 Кбит/с (когда скорость передачи данных установлена ​​на 2,7 Мбит/с ~ 910 Кбит/с). Используя минимальную скорость передачи данных (115 Кбит/с), я получаю 43 Кбит/с. Пробовал с разных телефонов, тоже самое. Мне нужно передавать 170 КБ данных в секунду на оборудование.


Спецификации
Протокол. Синхронизированные или сгенерированные данные отправляются на оборудование с помощью пакетов размером не более 520 байт. Аппаратное обеспечение отправляет команду проверки после того, как каждый пакет получен и утвержден, а затем телефон отправляет следующий пакет данных.
Клиент: Android 2.3.3, Samsung galaxy w i8150, Bluetooth v3.0, RFCOMM
Оборудование: Custom, Bluetooth v2.1 BlueGiga WT11i


Я в полном замешательстве. Может ли это быть проблемой, вызванной устройством Android или Bluetooth на телефоне? Интересно, какая максимальная скорость передачи? Есть ли способ ускорить передачу (например, увеличить максимальный размер пакета или отправить все пакеты, не дожидаясь команд проверки оборудования).


Изменить
После изменения размера пакета на 4160 байт пропускная способность увеличилась до 254 Кбит/с. Я пытаюсь выяснить оптимальный размер пакета для достижения 1,5 Мбит/с. Я ценю любые предложения


person Saro Taşciyan    schedule 25.01.2013    source источник
comment
Вы могли бы хотя бы объяснить, почему вы мгновенно проголосовали против. Спасибо   -  person Saro Taşciyan    schedule 25.01.2013
comment
Вы можете изучить использование сокетов L2CAP напрямую вместо RFCOMM.   -  person TJD    schedule 25.01.2013
comment
Преступник всегда возвращается на место преступления.   -  person BedirYilmaz    schedule 26.01.2013


Ответы (1)


Во-первых, изменение скорости передачи в протоколе Bluetooth RFCOMM / Serial Port не должно иметь значения, поскольку это не настоящий последовательный порт, а просто эмуляция. (Конкретные производители могли бы сделать с ним что-то особенное, но Bluetooth в целом или Android не использует параметр для управления битрейтом в эфире)

Факторами, влияющими на скорость передачи данных по SPP, будут размер пакетов, практическая максимальная скорость передачи данных, которую вы можете получить по Bluetooth, и способ быстро получатель читает / и как часто отправитель отправляет. Что касается размера пакета, вы можете посмотреть внутреннюю документацию или попробовать разные размеры, чтобы достичь оптимального числа для вашего приложения. Также я бы предложил отправлять несколько пакетов (или все), пока поток не сможет непрерывно отправлять данные, аналогично непрерывному чтению.

Главной проблемой здесь для вас, по-видимому, является практическая пропускная способность, которую вы можете достичь через Bluetooth. Если вы используете версии без EDR, как вы упомянули в своем вопросе, теоретическая скорость на очень низком уровне составляет 720 Кбит/с , а также добавляются дополнительные протоколы и приложения. поскольку накладные расходы протокола RFCOMM вы можете получить максимум около 450-500 Кбит/с.

Если у вас есть доступ к обоим устройствам с поддержкой +EDR, т. е. Bluetooth версии 2.0 или выше + EDR, вы можете ожидать, что пропускная способность приложения составит от 1,2 до 1,5 Мбит/с (теоретически более скорость передачи в эфире 2,0 или 3,0 Мбит/с)

person Dennis Mathews    schedule 26.01.2013
comment
Спасибо за информацию. У меня все еще есть проблема с низкой пропускной способностью, но изменение размера пакета немного сработало. Лучшее, что я мог получить, это 300 кбит/с. Аппаратное обеспечение использует Bluetooth v2.1 + EDR, и я предполагаю, что телефон (v3.0) не может быть узким местом здесь. Мне еще очень далеко до желаемой скорости передачи данных. Я начинаю думать, что отправка всех пакетов и одновременное чтение для проверки (как вы предлагаете) будет полезно - person Saro Taşciyan; 29.01.2013
comment
Я думаю, что это все, мне нужно будет изменить структуру моего протокола, а также пакет. Я попробую это с другим оборудованием, отправив все данные один раз и ожидая команду проверки как последнюю. - person Saro Taşciyan; 01.02.2013