有一段时间我尝试在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)
}
也许有人有类似的问题......请帮忙 对不起我的英语不好。
祝你好运 休伯特
答案 0 :(得分:4)
您对CBCharacteristicWriteWithResponse.WithResponse
的使用明确要求确认成功或描述失败的错误。猜测是,它要么等待你处理一个或多个先前的回复,要么(更有可能)它会给你一个你忽略的错误。它每30次尝试再次起作用表明我有些缓冲区已满,可能会重置连接或事务。
不要只是将代码示例复制/粘贴到您的项目中,而无需花时间阅读文档并准确理解该代码的作用。我从来没有对这个API做过任何事情,但是在看了你写电话的文档的10秒钟内就像一个痛苦的拇指一样向我伸出。