2016-10-21 5 views
0
-(void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 

     NSData *data = characteristic.value; 
     uint8_t *array = (uint8_t*) data.bytes; 

     cadenceValue = [CharacteristicReader readUInt8Value:&array]; 
     self.cadence.text = [NSString stringWithFormat:@"%d", cadenceValue]; 
     }); 
} 

Wie Kadenz von bLE (Bluetooth low energy) Gerät in swift 2 zu bekommen. Ich kann keinen genauen Code dafür finden. Dazu wird die Delegate-Methode didUpdateValueForCharacteristic aufgerufen.Cadence von BLE Geräte

Ich habe einen Code von nRF Toolbox, aber es ist in Ziel c oder swift 3 aber mein Projekt ist in swift 2. Ich versuchte, objective c-Methode mit Bridging-Header aufrufen, aber es wurde immer 0 Trittfrequenz zurückgegeben.

+0

Wie sieht der Swift 3-Beispielcode aus? – davidgyoung

+0

Erste Fehler bei bindMemory und pointee in schnellen 2 // auf didUpdateValueForCharacteristic lassen data = characteristic.value var array = UnsafeMutablePointer (mutierenden: (Daten als NSData) .bytes.bindMemory (an: UInt8. Selbst, Kapazität: Daten! .count)) self.cadenceValue = NORCharacteristicReader.readUInt8Value (ptr: & Array) // Methode. statische func readUInt8Value (ptr APointer: inout UnsafeMutablePointer ) -> UInt8 { lassen val = aPointer.pointee APointer = aPointer.successor() return val } @davidgyoung – Ved

+0

Problem obigen Code zu konvertieren @davidgyoung zugewandt In swift 2 ist Problem mit aPointer.poittee und bindMemory – Ved

Antwort

0

Ich bin nicht sicher, ob die Definition von CharacteristicReader, aber Sie könnten versuchen:

[CharacteristicReader readUInt8Value:&array]; 
cadenceValue = Int(array[0]) 
self.cadence.text = [NSString stringWithFormat:@"%d", cadenceValue]; 

Das setzt voraus, oben, dass das Ergebnis des Aufrufs readUInt8Value in das Array von UInt8 Objekten gesetzt wird, und der Kadenz Wert befindet sich im ersten Byte des Arrays. Sie könnten auch überprüfen, ob der richtige Wert in anderen Bytes ist, indem Sie versuchen cadenceValue = Int(array[1]) oder cadenceValue = Int(array[2]) usw.

Verwandte Themen