Swift iOS BLE writeValue只发送一次数据

时间:2015-12-21 14:43:05

标签: ios swift bluetooth bluetooth-lowenergy

有一段时间我尝试在iPhone< - >之间创建通信。蓝牙4.0 LE< - > PC。在互联网上搜索我发现很多解决方案都支持Swift中的BLE。我创建了一个小程序来检测BLE设备检测到的特性,并能够将一些数据发送到BLE设备。该BLE设备通过USB(COM端口)连接到PC。我使用RX和TX来读取和发送数据。

问题是什么...... 在检测并连接到BLE设备后,我尝试从iPhone通过BLE设备发送一个字符串,以便在PC上显示它。第一次发送数据的尝试成功,并且来自iPhone的此字符串显示在COM监视器中,但是当我再次尝试发送此字符串时,数据未到达。我注意到,在重复30次后,我想要发送的字符串即将到来。然后我必须重复发送30次,然后String再来。

我发送数据的代码

@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)    
}

也许有人有类似的问题......请帮忙 对不起我的英语不好。

祝你好运 休伯特

1 个答案:

答案 0 :(得分:4)

您对CBCharacteristicWriteWithResponse.WithResponse的使用明确要求确认成功或描述失败的错误。猜测是,它要么等待你处理一个或多个先前的回复,要么(更有可能)它会给你一个你忽略的错误。它每30次尝试再次起作用表明我有些缓冲区已满,可能会重置连接或事务。

不要只是将代码示例复制/粘贴到您的项目中,而无需花时间阅读文档并准确理解该代码的作用。我从来没有对这个API做过任何事情,但是在看了你写电话的文档的10秒钟内就像一个痛苦的拇指一样向我伸出。