Android Bluetooth Serial / RFCOMM / SPP, Как изменить скорость передачи данных? - PullRequest
7 голосов
/ 07 апреля 2011

Это очень неприятно, так как я пытался в течение нескольких недель и даже не догадывался в интернете.

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

большинство этих аппаратных средств устарели, и изменение скорости их SPP в бодах не вариант.

Я использую Android-чат в качестве основы для чтения / записи, я только изменил UUID, чтобы разрешить подключение к устройствам, которые у меня есть

Мне удалось прочитать из программы чтения тегов с плохой скоростью 19 200, красиво и отформатировано

Однако теперь я застрял с весами, скорость передачи которых составляет 9600 бод, и в моем приложении отображаются забавные символы, даже близко не подходящие к формату, который должен исходить от весов

Этот проект ранее выполнялся на старой Windows Mobile, и скорость передачи данных можно было изменить в их API

Есть ли способ сделать это в Android или я лаю не на том дереве?

Ответы [ 2 ]

9 голосов
/ 27 мая 2014

Редактировать: Исправлены некоторые ошибки.

В интернете нет хорошей информации об этом - и много это неверно - никому не доверяй!

В частности, эти две вещи не true:

  • RFCOMM и SPP (профиль последовательного порта) являются двумя именами для одной и той же вещи.(Однако они очень тесно связаны.)
  • Нет необходимости устанавливать скорость передачи для соединения RFCOMM / SPP.

Вот что я нашел:

Последовательные соединения Bluetooth выполняются, как описано в SPP, используя RFCOMM .RFCOMM - это соединение, которое работает через L2CAP и позволяет отправлять последовательные данные и параметры управления в кадрах.Он основан на древнем стандарте под названием TS 07.10 .SPP - это профиль Bluetooth.

Это кадрирование также позволяет отправлять внеполосные данные для таких вещей, как управление последовательными сигналами (DTR, CTS и т. Д.) И для установки скорости передачи .

Из спецификации SPP:

DevA может информировать DevB о настройках порта RS232 с помощью команды согласования удаленного порта непосредственно перед установкой DLC.Это необходимо сделать, если API для уровня адаптации RFCOMM предоставляет эти настройки (например, скорость передачи, четность).

К сожалению, Android вообще не предоставляет эту функциональность.Я полагаю, что возможно отправить команду согласования удаленного порта самостоятельно, но я уверен, что для этого потребуется переопределить RFCOMM, который требует доступа к L2CAP , которого у нас нет.

Подробная команда согласования удаленного порта здесь стр. 31. Примечание «Для всех параметров назначены значения по умолчанию, , если согласование не выполняется, выбирается значение по умолчанию

Поэтому невозможно установить скорость передачи данных на Android.Он будет использовать скорость передачи по умолчанию, которую использует ваш адаптер Bluetooth (вероятно, 9600).

Также обратите внимание, что Windows поддерживает поддержку установки скорости передачи адаптеров Bluetooth.

2 голосов
/ 07 апреля 2011

Предположительно какой-нибудь конвертер Bluetooth в последовательный порт подключен к устаревшим устройствам?Если это так, вы сможете запрограммировать его один раз, чтобы всегда использовать определенную скорость передачи данных.Тогда клиенту Bluetooth не нужно будет устанавливать скорость передачи данных ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...