2016-10-21 9 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]; 
     }); 
} 

SWIFT 2にケイデンスBLE(ブルートゥース低エネルギー)からデバイスを取得する方法。私はこれのための正確なコードを見つけることができません。この場合、didUpdateValueForCharacteristicデリゲートメソッドが呼び出されます。ケイデンス

私はNRFツールボックスのコードを持っているが、それはObjective Cのまたは 3迅速であるが、私のプロジェクトは、迅速に2あります。私はブリッジヘッダーを使用して客観的なcメソッドを呼び出そうとしましたが、それは常に0ケイデンスを返しました。私はCharacteristicReaderの定義わからないんだけど、あなたは試してみてください

+0

Swift 3のサンプルコードはどのように見えますか? – davidgyoung

+0

didUpdateValueForCharacteristic に迅速2 //にbindMemoryと指示先のエラーを取得 (変異データ= characteristic.value するvar配列= UnsafeMutablePointer てみましょう:.bytes.bindMemory(にNSDataのように(データを):UINT8!。自己、容量:データ!カウント)) self.cadenceValue = NORCharacteristicReader.readUInt8Value(ptr:&array) //メソッド。 静的readUInt8Value FUNC(PTR aPointer:UnsafeMutablePointer INOUT) - > UINT8 { せヴァル= aPointer.pointee aPointer = aPointer.successor() リターンヴァル }は – Ved

+0

コード上方変換する問題に直面@davidgyoung @davidgyoung迅速な2で、問題は、ポインター。ポイントとbindMemory – Ved

答えて

0

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

上記はreadUInt8Valueへの呼び出しの結果はUInt8オブジェクトの配列、およびケイデンス値に入れることを前提としています配列の最初のバイトにあります。 cadenceValue = Int(array[1])またはcadenceValue = Int(array[2])などを試して、適切な値が他のバイトにあるかどうかを確認することもできます。