2012-09-07 12 views
5

Estoy desarrollando una aplicación para iOS con un periférico LE Bluetooth. El único paso que parece que no puedo resolver es cómo transmitir realmente los datos de mi aplicación al periférico o viceversa.Transmisión de datos con CoreBluetooth

Lo que he construido hasta ahora es una aplicación de prueba que se puede conectar a mi periférico Bluetooth de muestra y leer todos sus servicios/características/descriptores. Puede alternar notificaciones para una característica dada y escribir en características dadas. Es solo este último paso de "transmitir n bytes al periférico y recibir m bytes desde el periférico" que no puedo entender.

Mirando el Marco de Accesos Externos (lo que usaría si Apple realmente me dara la aprobación MFi para este proyecto), le dan flujos de entrada y salida en una sesión dada para comunicarse con el accesorio, pero tal objeto no existe para CoreBluetooth.

¿Es esto simplemente un descuido por parte de Apple sobre la funcionalidad de CoreBluetooth? ¿O simplemente necesito desarrollar mi propio perfil de servicio Bluetooth para manejar la entrada/salida de datos hacia y desde el periférico?

+0

no necesita aprobación MFi para desarrollar aplicaciones BLE – chwi

Respuesta

2

LE está diseñado fundamentalmente para trabajar con estos perfiles basados ​​en GATT, que son adecuados para monitorear sensores, no para flujos de datos. Si bien LE permite que se abran nuevas secuencias de L2CAP para protocolos personalizados, CoreBluetooth de Apple no proporciona acceso para hacerlo.

+0

No busco transmitir enormes flujos de datos, ni siquiera del orden de 1k a la vez, tal vez cien bytes como máximo. ¿Crees que puedo diseñar un perfil de servicio con suficientes atributos para transmitir los datos que necesito? –

+0

Sí, podría usar un atributo o un conjunto de atributos donde su "flujo de datos" se logra al actualizar el valor del atributo, posiblemente con indicación automática al cambiar. – TJD

+0

Gracias por la información, no pude encontrar mucho en BLE en lo que respecta a las secuencias de datos. –

2

Puede usar el 'Servicio de alerta inmediata' bluetooth.org uuid = 1802 con la característica uuid = 2A06 con propiedad = write_no_response para enviar valores de un byte a su dispositivo periférico desde su iPhone. El dispositivo periférico debe estar programado para actuar sobre los datos que se envían. Por ejemplo, puede usar un botón en una aplicación de iPhone para enviar una dirección hexadecimal que haga que uno o más pines de puerto se enciendan o apaguen en el periférico. Si bien esto no está utilizando el Servicio de Alerta como estaba previsto, proporciona una manera fácil de probar la transferencia de datos a un dispositivo periférico. El mismo proceso podría usarse para enviar bytes de datos secuenciales similares a un flujo de datos en serie. Todavía no he intentado enviar flujos de datos más complejos. El write_no_response no proporciona ningún comentario a la aplicación sobre si los datos fueron recibidos por el periférico.

El IOS TemperatureSensor.xproj es un ejemplo de código para leer datos de temperatura de un periférico. El OSX HealthThermometerClient.xproj tiene el código necesario para decodificar la estructura de datos del termómetro algo complejo. El IOS TI-BLE-Demo.xproj TIBLECBKeyfob.m tiene un código para leer y escribir valores característicos, como la temperatura de lectura o los niveles de batería de un dispositivo periférico.

2

Puede crear un perfil personalizado con características y servicios privados y hacer que funcione como SSP; esa es la forma en que estoy usando mi módulo BLE para obtener datos de algunos sensores en mi aplicación. El módulo que compré (Microchip RN-4020) ya tiene un perfil personalizado hecho específicamente para esto, conocido como MLDP (Microchip Low-Energy Data Profile).

La manera en que obtengo los datos en mi aplicación de iOS es suscribiéndome a la característica privada, por lo que recibo una notificación cuando se actualizan los valores. Hasta ahora, ha funcionado muy bien, y la velocidad de datos puede llegar hasta 20 kbps según Microchip (no he probado sus límites, ya que no necesito mucha velocidad). Aquí hay un enlace a la página del producto de Microchip: http://www.microchip.com/wwwproducts/Devices.aspx?product=RN4020

¡Buena suerte!

Cuestiones relacionadas