gpt4 book ai didi

Swift:BLE 不更新特性

转载 作者:行者123 更新时间:2023-11-28 07:37:42 25 4
gpt4 key购买 nike

我向 TX 发送了一个 0x11 字节但没有任何反应,函数

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?)

从未被调用。这是我的代码..

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
peripheral.delegate = self
//peripheral.discoverServices(nil)
peripheral.discoverServices([CBUUID(string: "6E400001-B5A3-F393-E0A9-E50E24DCCA9E")])
print("Connected successfully to the device")

//On stop le scan
centralManager?.stopScan()
}
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
print("\n\n\n ✅ READING SERVICES OF PERIPHERAL ❤️ \(peripheral.name!) ❤️")

for service in peripheral.services! {
peripheral.discoverCharacteristics(nil, for: service)
print(service)
}
}

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
print("\n\n 🔵 READING CHARARCTERISTICS OF 🔅 \(service.uuid) 🔅")

let NORDIC_UART_TX_CHARACTERISTIC = CBUUID(string: "6e400002-b5a3-f393-e0a9-e50e24dcca9e")
let NORDIC_UART_RX_CHARACTERISTIC = CBUUID(string: "6e400003-b5a3-f393-e0a9-e50e24dcca9e")

for characteristic in service.characteristics! {
// Tx:
if characteristic.uuid == NORDIC_UART_TX_CHARACTERISTIC {
print("Tx char found: \(characteristic.uuid)")
let command:[UInt8] = [0x11]
let sendData: Data = Data(command)

peripheral.writeValue(sendData, for: characteristic, type:.withResponse)
}

// Rx:
if characteristic.uuid == NORDIC_UART_RX_CHARACTERISTIC {
print("Rx char found: \(characteristic.uuid)")
peripheral.setNotifyValue(true, for: characteristic)
}
}
}

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?){
print("characteristic changed: \(characteristic)")
}

最佳答案

您没有链接任何文档,但我从名称中假设这是一个串行协议(protocol);您在 Tx 特性上写入并在 Rx 上读取。我还假设文档说您应该在写入 0x11 后得到响应。你期望收到什么? (这是一个奇怪的 UART 消息。通常它们是 ASCII 格式并且经常以\n 终止。这方面的文档在哪里?)

也就是说,问题很可能是您在开始观察 Rx 特性之前就在 Tx 特性上书写。这意味着流程是这样的:

  • 发送 0x11 到 Tx。设备接受 0x11。
  • 订阅 Rx。设备接受这一点,并会在 Rx 上通知您下一次更改。
  • 没有其他事情发生。

您需要确保在发送 Tx 之前发现您的所有特征并订阅 Rx。

关于Swift:BLE 不更新特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com