Ich mache eine lange schreiben zu einem BLE für ein OTA-Update, aber ich muss auf die Schreibantwort des BLE-Geräts für das Senden von mehr Daten warten, aber ich weiß nicht, wie zu fangen die Vorrichtung zum schreiben einer Antwort, ich bin mit einem Samsung galaxy tab s2 mit android 7 und Kotlin für meinen CoderxAndroidBle bekommen lange Antwort schreiben
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() })
jedes Mal, wenn ich die Eigenschaft, schreiben die Abonnements reagieren mich sofort mit den geschriebenen Daten, ich brauche capture die Antwort des Merkmals, um mehr Daten zu senden
nicht wirklich eine Antwort auf Ihre Frage, aber Sie sollten wirklich nicht lange schreiben, wenn Sie schnell viele Daten schreiben müssen. Verwenden Sie stattdessen Schreiben ohne Antwort, da der Durchsatz so viel höher ist. – Emil
Leonardo - 1. '.setMaxBatchSize()' ist zum Einstellen der maximalen Anzahl von Bytes, die in einem Paket gesendet werden können und 'totalPackages' scheinen die Anzahl der zu sendenden Pakete zu sein. 2. Was genau sind die' totalPackages'? 3. Denken Sie bei der "Geräteschreibantwort" an eine Benachrichtigung aus einem bestimmten Merkmal oder nur an die Bestätigung des Peripheriegeräts, dass es ein einzelnes Paket erhalten hat? @Emil - Ist es möglich, dich in irgendeiner Weise zu kontaktieren? –
Sicher .. War es etwas Besonderes, über das du reden wolltest? Ich denke, am einfachsten ist es, einfach einen Stack-Overflow-Chat zu starten. – Emil