2012-09-07 27 views
5

Sto sviluppando un'applicazione iOS con una periferica Bluetooth LE associata. L'unico passaggio che non riesco a risolvere è come trasmettere effettivamente i dati dalla mia app alla periferica o viceversa.Trasmissione dati con CoreBluetooth

Quello che ho costruito finora è un'app di test che può connettersi alla mia periferica Bluetooth di esempio e leggere tutti i suoi servizi/caratteristiche/descrittori. Può alternare le notifiche per una determinata caratteristica e scrivere su determinate caratteristiche. È solo quest'ultima fase di "trasmettere n byte alla periferica e ricevere m byte dalla periferica" ​​che non riesco a capire.

Guardando il framework degli accessori esterni (cosa che userei se Apple mi dava effettivamente l'approvazione MFi per questo progetto), ti danno flussi di input e output su una data sessione per comunicare con l'accessorio, ma non esiste un tale oggetto per CoreBluetooth.

Si tratta semplicemente di una svista da parte di Apple sulla funzionalità di CoreBluetooth? O devo semplicemente sviluppare il mio profilo di servizio Bluetooth per gestire l'afflusso/deflusso di dati da e verso la periferica?

+0

non è necessario l'approvazione MFi per sviluppare applicazioni BLE – chwi

risposta

2

LE è fondamentalmente progettato per funzionare con questi profili basati su GATT, che sono adatti per il monitoraggio di sensori, non per flussi di dati. Mentre LE consente di aprire ulteriori flussi L2CAP per protocolli personalizzati, il CoreBluetooth di Apple non fornisce l'accesso per farlo.

+0

Non sto cercando di trasmettere enormi flussi di dati, nemmeno nell'ordine di 1k alla volta, forse un centinaio di byte al massimo. Pensi di poter escogitare un profilo di servizio con attributi sufficienti per trasmettere i dati di cui ho bisogno? –

+0

Sì, è possibile utilizzare un attributo o un insieme di attributi in cui il "flusso di dati" viene eseguito aggiornando il valore dell'attributo, possibilmente con un'indicazione automatica sulla modifica. – TJD

+0

Grazie per le informazioni, non sono riuscito a trovare molto su BLE per quanto riguarda i flussi di dati. –

2

È possibile utilizzare il servizio di avviso immediato "bluetooth.org uuid = 1802 con uuid = 2A06 caratteristico con proprietà = write_no_response per inviare valori di un byte al dispositivo periferico dal proprio iPhone. Il dispositivo periferico deve essere programmato per agire sui dati inviati. Ad esempio, è possibile utilizzare un pulsante su un'app per iPhone per inviare un indirizzo esadecimale che provoca l'accensione o lo spegnimento di uno o più spinotti sulla periferica. Sebbene questo non stia utilizzando il servizio di alert come previsto, fornisce un modo semplice per testare il trasferimento dei dati su un dispositivo periferico. Lo stesso processo potrebbe essere utilizzato per inviare byte di dati sequenziali simili a un flusso di dati seriale. Non ho ancora provato a inviare flussi di dati più complessi. Write_no_response non fornisce alcun feedback all'app sul fatto che i dati siano stati ricevuti dalla periferica.

IOS TemperatureSensor.xproj è un esempio di codice per la lettura di dati di temperatura da una periferica. OSX HealthThermometerClient.xproj ha il codice necessario per decodificare la struttura di dati del termometro un po 'complessa. IOS TI-BLE-Demo.xproj TIBLECBKeyfob.m ha il codice per leggere e scrivere valori caratteristici, come la temperatura di lettura oi livelli di batteria da un dispositivo periferico.

2

È possibile creare un profilo personalizzato con servizi e caratteristiche privati ​​e farlo funzionare come SSP; questo è il modo in cui sto usando il mio modulo BLE per ottenere dati da alcuni sensori alla mia app. Il modulo che ho acquistato (Microchip's RN-4020) ha già un profilo personalizzato creato appositamente per questo noto come MLDP (Microchip Low-energy Data Profile).

Il modo in cui ottengo i dati nella mia app iOS è sottoscrivendo la caratteristica privata, quindi viene notificato quando i valori vengono aggiornati. Fino ad ora ha funzionato benissimo e la velocità dei dati può arrivare fino a 20 kbps secondo Microchip (non ho testato i suoi limiti, dato che non ho bisogno di molta velocità). Ecco un collegamento alla pagina del prodotto Microchip: http://www.microchip.com/wwwproducts/Devices.aspx?product=RN4020

Buona fortuna!

Problemi correlati