我正在做一個長期寫入BLE進行OTA更新,但我需要等待BLE設備的寫入響應發送更多數據,但我不知道如何捕獲設備寫響應,我使用的是三星Galaxy Tab S2與Android 7,和科特林我的代碼rxAndroidBle得到很長的寫回應
override fun otaDataWrite(data:ByteArray) {
manager.connection?.flatMap { rxBleConnection: RxBleConnection? -> rxBleConnection?.createNewLongWriteBuilder()
?.setCharacteristicUuid(OTACharacteristics.OTA_DATA.uuid)
?.setBytes(data)
?.setMaxBatchSize(totalPackages)
?.build()
}?.subscribe({ t: ByteArray? ->
Log.i("arrive", "data ${converter.bytesToHex(t)}")
manageOtaWrite()
}, { t: Throwable? -> t?.printStackTrace() })
每次我寫的特徵時間的訂閱與寫入的數據立即迴應我,我需要捕獲該特性的響應,用於發送更多數據
不是一個真正的回答你的問題,但如果你需要快速寫入大量數據,你應該真的不使用長寫。取而代之的是使用無響應的寫入方式,因爲吞吐量非常高。 – Emil
Leonardo - 1.'.setMaxBatchSize()'用於設置可以在一個包中發送的最大字節數,'totalPackages'似乎是要發送的包的數量2.'totalPackages'究竟是什麼? 3.通過'設備寫入響應',您可以考慮來自特定特性的通知,或僅從外設得到的確認是否已收到單個包? @Emil - 是否有可能以任何方式與您聯繫? –
當然..是不是特別想談論的東西?我認爲最簡單的就是啓動堆棧溢出聊天。 – Emil