2015-12-21 141 views
1

我花了一段時間嘗試在iPhone < - > Bluetooth 4.0 LE < - > PC之間建立通信。在互聯網上搜索我發現了許多解決方案來支持Swift中的BLE。我創建了一個小程序,用於檢測BLE設備是否檢測到這些特徵並能夠將某些數據發送到BLE設備。此BLE設備通過USB(COM端口)連接到PC。我使用RX和TX來讀取和發送數據。Swift iOS BLE writeValue發送一次數據

什麼問題... 檢測並連接到BLE設備後,我嘗試從iPhone槽BLE設備發送一個字符串,以將其顯示在PC上。發送數據的第一次嘗試成功,並且這個字符串從iPhone顯示在COM監視器中,但是當我再次嘗試發送此String時數據未到達。我注意到,同樣重複30次之後,我想發送的字符串即將到來。然後,我必須重複發送30次,然後再次發送字符串。

我的代碼發送數據

@IBAction func sendButtonAction(sender: AnyObject) 
{ 
    let textToSend: String = "Some text" 
    let data = textToSend.dataUsingEncoding(NSUTF8StringEncoding) 

    let txcharact: CBCharacteristic = TXCharacteristic! 

    self.discoveredPeripheral?.writeValue(data!, forCharacteristic: txcharact, type: CBCharacteristicWriteType.WithResponse)  
} 

也許有人有類似的問題...請幫助 對不起,我的英語水平。

問候 休伯特

回答

4

您使用的CBCharacteristicWriteWithResponse.WithResponse特別要求無論成功的確認或描述故障的錯誤。有人猜測,無論是等待你處理一個或多個先前的反應,或者(更可能)它給你一個你忽略的錯誤。它每30次嘗試一次就會發生作用,這表明某些緩衝區已滿並可能重置連接或事務。

不要只是將代碼示例複製/粘貼到您的項目中,而無需花時間閱讀文檔並準確理解代碼的功能。我從來沒有用這個API做過任何事情,但是在看了你的寫作電話的文檔之後的10秒鐘內,我就像一個大拇指一樣伸出手來。