2013-02-12 117 views
3

在我的應用程序中,我發現我的外圍設備具有給定的服務。然後在繼續之前檢查所需的所有特徵。iOS藍牙:寫入特徵時出現未知錯誤

當我寫一個值到我的特點,回調didWriteValueForCharacteristic:觸發:

- (void) peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{ 

    NSLog(@"Did write characteristic value : %@ with ID %@", characteristic.value, characteristic.UUID); 
    NSLog(@"With error: %@", [error localizedDescription]); 
} 

,併產生這樣的輸出:

Did write characteristic value : <005c> with ID Unknown (<00005004 1212efde 1523785f eabcd123>) 
With error: Unknown error. 

的值是正確的,也是一樣的128位UUID特點,但在我的外圍設備中,我從來沒有真正獲得寫入的價值。

任何可能出錯的建議?

+0

你有沒有在*控制檯*的消息,如:* CoreBluetooth [警告] *。有時真正的錯誤在那裏給出。我仍然不知道爲什麼以及如何捕捉它們...... – Larme 2013-02-12 15:10:01

+0

當時不是。回答了我自己的問題 – chwi 2013-02-13 07:23:11

回答

4

我最初發送WriteWithoutResponse,改變這個WriteWithResponse給了我一個CoreBluetooth[WARNING] error 13正如@Larme在評論中提到的。這個值corresponded to無效的屬性值長度,這意味着我發送了錯誤的數字格式,即我發送了一個16位的值,而外設期望8位。

更改外設以接受16位數據解決了這個問題。

+0

您是如何發現錯誤13意味着「屬性值長度無效」的?我一直在到處搜索這些錯誤代碼的列表,但沒有運氣。 (我得到未知的錯誤10.) – 2013-05-21 14:41:22

+0

@JoeStrout http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CoreBluetooth_Constants/Reference/reference.html你的錯誤是'CBATterrorAttributeNotFound' – chwi 2013-05-21 18:38:28

+0

但什麼是解決方案嗎? – Mrug 2015-03-17 11:06:57