簡體   English   中英

CoreBluetooth 外設響應寫入請求

[英]CoreBluetooth peripheral response to write request

我在外圍管理器委托中有以下代碼

func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveWrite requests: [CBATTRequest]) {
    print ("received write request")
    
    for request in requests {
        if request.characteristic.uuid.isEqual(self.primaChar.uuid) {
            // extract data from write request
            // TODO: validate data
            let str = String(data: request.value!, encoding: .utf8)!
            print ("received:", str)

            peripheralManager.respond(to: request, withResult: .success)
            
        } else {
            print ("Unknown write request")
        }
    }
}

響應電話后

peripheralManager.respond(to: request, withResult: .success)

在中心側不調用 didWrite

func peripheral(_ peripheral: CBPeripheral, didWriteValueFor descriptor: CBDescriptor, error: Error?) {
    #if DEBUG
    CLog.debug ("Did write value for \(descriptor.characteristic)")
    #endif
}

我需要發起多個寫請求,但需要知道上一個寫是否成功,然后再發送下一個寫請求。

兩個設備都已配對。

為什么中央經理的 didWriteValueFor() 沒有被調用?

使用 didWriteValueForCharscteristic() 解決了@Paulw11 在評論中建議的問題。 謝謝保羅。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM