swift - .writeValue 不会让我将十六进制字符串写入特征以启用通知

标签 swift xcode bluetooth-lowenergy

我的 ble 外设要求我将十六进制值 0x0001 写入 CCCD 描述符以启用通知。当我尝试使用 .notify 属性将值写入特征时,出现以下错误:

Cannot invoke 'writeValue' with an argument list of type '(Data:String, for: CBCharacteristic)'

如何将值写入我的特征以便接收通知?

我尝试删除 .writeValue 行并仅保留 .setNotifyValue 行,但是当我从设备发送数据时,我没有收到通知。当我收到通知时,我是否必须读取该值?通知是否应该将值写入我的输出?

  if characteristic.properties.contains(.notify) {
    print("\(characteristic.uuid): properties contains .notify")
    NUB5.writeValue(Data: "0x0001", for: characteristic)
    NUB5.setNotifyValue(true, for: characteristic)
  }

//BL652需要将0x0001的值写入TX CCCD来通知我们有数据。

最佳答案

  1. setNotifyValue(true, for:characteristic) 应该足够了。 您是否实现了 peripheral(_:didUpdateValueFor:error:) 方法?你能显示一下代码吗?

  2. writeValue 接受 Data 输入,但您尝试传递 String。您需要对其进行编码,例如:

let encodedString = "Lorem ipsum".data(using: .utf8)

let number = 1
let encodedNumber = withUnsafeBytes(of: number) { Data($0) }

关于swift - .writeValue 不会让我将十六进制字符串写入特征以启用通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54543048/

相关文章:

ios - 当应用程序在后台运行时使用非核心蓝牙框架访问蓝牙 LE 设备

ios - 在通知内容扩展中以编程方式调用 VC 时无法插入 COPY_SEND

ios - 体系结构 x86_64 的 undefined symbol : Microsoft Azure and Xcode 8

ios - 删除核心数据中的记录后无法删除索引处的表行

Xcode : Adding a project as a build dependency

ios - Xamarin,更新 Xcode 后未找到有效的配置文件

ios - swift中CBUUID和NSUUID的区别

android - StickNFind 蓝牙 GATT 配置文件

ios - Objective-c 枚举在 Swift 中获取错误 "... is not convertible to ' NativeObject'"

ios - 如何删除viewController中编码的 View 按钮?