Android Bluetooth Serial / RFCOMM / SPP, ¿Cómo cambiar el BAUD RATE?

Esto es muy frustrante, como he estado tratando durante semanas y ni siquiera una pista en Internet.

Estoy trabajando en un proyecto que lee / escribe los datos en serie del bluetooth en el hardware agrícola diferente.

La mayoría de estos equipos son viejos y cambiar la velocidad en baudios de su SPP no es una opción.

Estoy utilizando el chat bluetooth android como base para leer / escribir, sólo he cambiado el UUID para permitir la conexión a los dispositivos que tengo

He logrado leer de un lector de etiquetas a una tasa mala de 19.200 maravillosamente, y formateado muy bien

Sin embargo, estoy atascado ahora con las escalas que tiene una velocidad de transmisión de 9.600 y muestra personajes divertidos en mi aplicación, ni siquiera cerca del formato que debe provenir de las escalas

Este proyecto se realizó previamente en un viejo Windows Mobile y las tasas de transmisión podrían ser cambiadas en su API

¿Hay una manera de hacer esto en Android o estoy ladrando el árbol equivocado?

¿Se supone que algún convertidor Bluetooth a serie está conectado a los dispositivos heredados? Si es así deberías poder programarlo una vez para usar siempre una tasa de bits particular. Entonces no sería necesario que el cliente Bluetooth estableciera la velocidad de bits …

Edit: Corregido algunos errores.

No hay una buena información en Internet sobre esto – y mucho de lo que está mal – no confiar en nadie!

En particular, estas dos cosas no son ciertas:

  • RFCOMM y SPP (Serial Port Profile) son dos nombres para la misma cosa. (Sin embargo, están estrechamente relacionados.)
  • No es necesario establecer la velocidad en baudios de una conexión RFCOMM / SPP.

Esto es lo que he encontrado:

Las conexiones serie Bluetooth se realizan como se describe en el SPP usando RFCOMM . RFCOMM es una conexión que funciona sobre L2CAP y permite el envío de datos en serie y parámetros de control en marcos. Se basa en gran medida en un antiguo estándar llamado TS 07.10 . SPP es el perfil bluetooth.

Este encuadre también le permite enviar datos fuera de banda para cosas como el control de señales serie (DTR, CTS, etc) y para establecer la velocidad en baudios .

De la especificación SPP:

DevA puede informar a DevB de la configuración de puertos RS232 con el comando de negociación de puerto remoto, directamente antes del establecimiento de DLC. Hay un requisito para hacerlo si la API a la capa de adaptación RFCOMM expone esas configuraciones (por ejemplo, velocidad en baudios, paridad).

Lamentablemente Android no expone esta funcionalidad en absoluto. Supongo que puede ser posible enviar el comando Remote Port Negotiation nosotros mismos, pero estoy bastante seguro de que requeriría reimplementar RFCOMM que requiere el acceso a L2CAP que no tenemos.

El comando Remote Port Negotiation se detalla en la página 31. Nota "Hay valores predeterminados asignados a todos los parámetros, si no se realiza ninguna negociación, se elige el valor predeterminado ".

Por lo tanto, es imposible establecer la velocidad en baudios como se desee en Android. Utilizará la velocidad de transmisión predeterminada que usa su adaptador bluetooth (probablemente 9600).

También tenga en cuenta que Windows admite el establecimiento de la velocidad en baudios de los adaptadores bluetooth.

  • Conexión Bluetooth RFCOMM / SDP a un adaptador RS232 en android
  • ¿Podría crear más de un canal RFCOMM por hora?
  • Conector de Bluetooth
  • Recibir audio vía Bluetooth en Android
  • Aplicación de congelación de socket Android Bluetooth
  • Bluetooth Android RFCOMM / SPP sugerencias de manejo de errores
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.