【问题标题】:Swift iOS BLE writeValue sends data onceSwift iOS BLE writeValue 发送数据一次
【发布时间】:2015-12-21 14:43:04
【问题描述】:

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

有什么问题... 检测并连接到 BLE 设备后,我尝试通过 BLE 设备从 iPhone 发送一个字符串以在 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)    
}

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

最好的问候 休伯特

【问题讨论】:

    标签: ios swift bluetooth bluetooth-lowenergy


    【解决方案1】:

    您对CBCharacteristicWriteWithResponse.WithResponse 的使用特别要求确认成功或描述失败的错误。猜测一下,它要么在等待您处理一个或多个先前的响应,要么(更有可能)给您一个您忽略的错误。每 30 次尝试它就会再次工作,这表明某些缓冲区已满,并且可能正在重置连接或事务。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多