2016-06-08 10 views
0

Ich möchte große Binär-String zu BLE-Gerät (Peripherie) von meiner iOS-App (zentrales Gerät) senden. Es funktioniert gut mit kleinen String, aber wenn iam versucht, große Zeichenfolge zu senden, wurde es nicht empfangen und die Verbindung wurde automatisch getrennt. Ich habe gelesen, dass wir die großen Daten in mehrere Stücke teilen müssen, um sie zu senden. Aber ich habe keine funktionierende Probe dazu gefunden.Übertragen Sie große Binär-String zu BLE-Gerät von iOS-App mit Corebluetooth

den Code anschauen Bitte senden Sie die Zeichenfolge

let stringToSend = "0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,0001010101010101111111111111000000,[email protected]" 

.

let data : NSData = stringToSend.dataUsingEncoding(NSUTF8StringEncoding)! 

if positionCharacteristic != nil { 

self.polarH7HRMPeripheral.writeValue(data, forCharacteristic: positionCharacteristic, type: .WithoutResponse) 

self.polarH7HRMPeripheral.setNotifyValue(true, forCharacteristic: positionCharacteristic) 


} 

Vielen Dank im Voraus

+0

Die Stücke haben Sie vielleicht schicken einen von den BLE Herstellern Standard definieren. d. h. Senden des ersten String-Chunks mit einem bestimmten vom Hersteller definierten Zeichen, Warten auf eine erfolgreiche Antwort, Senden eines zweiten Chunks usw. –

+0

Vielen Dank für Ihre Antwort. Können Sie Beispielcode posten? – Prasad

+0

wie ich schon sagte, es ist Gerät abhängig und nicht etwas allgemeines. Ich füge einen Pseudo-Code zu einer Antwort hinzu, damit Sie besser verstehen, was ich meinte –

Antwort

0

Einige Geräte Register sind in der Größe begrenzt. Sie können nicht mehr als X Bytes für die Verarbeitung enthalten. Angenommen, das BLE-Gerät erwartet einen langen Befehl im Format einiger kurzer Befehle. Nehmen wir an, dass das Gerät auch kurze Befehle empfangen kann. Wie würde das Gerät den Unterschied zwischen einem Kurzbefehl und einem Teillängenbefehl kennen? Verwenden eines Befehlsformats, das den Befehlstyp angibt. Zum Beispiel: Ein Befehl enthält 1 Header-Byte, 6 Inhalt Bytes, 1 Befehlstyp Byte. Der Teil-Lang-Befehl hat 11111111 als Befehlstyp mit dem letzten Teil als 11111110. Kurzbefehl hat 00000000 als seinen Befehlstyp.

So habe ich ein einfaches Protokoll für Differenzbefehle für ein Gerät "definiert".

Ich würde Sie empfehlen, für dieses Protokoll sehen in dem Entwicklerhandbuch des Geräts