Swift iOS BLE writeValue发送一次数据

问题描述:

我花了一段时间尝试在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)  
} 

也许有人有类似的问题...请帮助 对不起,我的英语水平。

问候 休伯特

您使用的CBCharacteristicWriteWithResponse.WithResponse特别要求无论成功的确认或描述故障的错误。有人猜测,无论是等待你处理一个或多个先前的反应,或者(更可能)它给你一个你忽略的错误。它每30次尝试一次就会发生作用,这表明某些缓冲区已满并可能重置连接或事务。

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