- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 RxAndroidBle 将固件写入蓝牙设备。它的工作方式我必须将数据 block (每 block 580 字节)发送到一个 WRITE_CHARACTERISTIC_UUID 上的蓝牙设备,然后在 LISTEN_CHARACTERISTIC_UUID 上收听结果以检查蓝牙设备是否已成功确认该 block 。
理想情况下,我希望这个写入和通知链是一个操作,所以我正在使用来自类似堆栈溢出问题 (https://stackoverflow.com/a/41140523/734385) 的这段代码:
private byte[] writeData(byte[] _payload) {
return mBleConnection
.flatMap( // when the connection is available...
rxBleConnection -> rxBleConnection.setupNotification(LISTEN_UUID), // ... setup the notification...
(rxBleConnection, apScanDataNotificationObservable) -> Observable.combineLatest( // ... when the notification is setup...
rxBleConnection.createNewLongWriteBuilder().setBytes(_payload).setCharacteristicUuid(WRITE_UUID).setMaxBatchSize(20).build(),
apScanDataNotificationObservable.first(), // ... and observe for the first notification on the AP_SCAN_DATA
(writtenBytes, responseBytes) -> responseBytes // ... when both will appear return just the response bytes...
)
)
.flatMap(observable -> observable) // ... flatMap the result as it is Observable<byte[]>...
.toBlocking()
.first(); // ... and finish after first response is received to cleanup notifications
}
问题是这只在前几次有效,之后写入操作成功但我从未收到通知。这是它停止前最后几个 block 的日志:
02-23 08:46:33.765 2864-5256/com.company.android.ble I/BLE_FW_WRITE: [FW_CHUNK_24] starting
02-23 08:46:33.772 2864-4250/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(182789785)
02-23 08:46:33.772 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(182789785)
02-23 08:46:33.773 2864-5256/com.company.android.ble D/BluetoothGatt: setCharacteristicNotification() - uuid: 69af0004-f994-3a57-749b-0e0aad3fca18 enable: true
02-23 08:46:33.777 2864-5256/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(22527736)
02-23 08:46:33.910 2864-2888/com.company.android.ble D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
02-23 08:46:33.912 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(182789785)
02-23 08:46:33.912 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(22527736)
02-23 08:46:34.055 2864-3032/com.company.android.ble D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
02-23 08:46:34.059 2864-4250/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationCharacteristicLongWrite(71420405)
02-23 08:46:34.063 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(22527736)
02-23 08:46:34.063 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationCharacteristicLongWrite(71420405)
02-23 08:46:34.067 2864-3093/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicWrite characteristic=69af0003-f994-3a57-749b-0e0aad3fca18 status=0
<more onCharacteristicWrites here, but omitted due to max post length>
02-23 08:46:34.204 2864-3032/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicWrite characteristic=69af0003-f994-3a57-749b-0e0aad3fca18 status=0
02-23 08:46:34.207 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationCharacteristicLongWrite(71420405)
02-23 08:46:35.041 2864-3093/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicChanged characteristic=69af0004-f994-3a57-749b-0e0aad3fca18
02-23 08:46:35.044 2864-5256/com.company.android.ble I/BLE_FW_WRITE: [FW_CHUNK_25] starting
02-23 08:46:35.044 2864-4250/com.company.android.ble D/BluetoothGatt: setCharacteristicNotification() - uuid: 69af0004-f994-3a57-749b-0e0aad3fca18 enable: false
02-23 08:46:35.048 2864-4250/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(183984640)
02-23 08:46:35.049 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(183984640)
02-23 08:46:35.053 2864-5256/com.company.android.ble D/BluetoothGatt: setCharacteristicNotification() - uuid: 69af0004-f994-3a57-749b-0e0aad3fca18 enable: true
02-23 08:46:35.060 2864-5256/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(71847163)
02-23 08:46:35.185 2864-3073/com.company.android.ble D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
02-23 08:46:35.188 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(183984640)
02-23 08:46:35.189 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(71847163)
02-23 08:46:35.276 2864-2887/com.company.android.ble D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
02-23 08:46:35.281 2864-4250/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationCharacteristicLongWrite(66222734)
02-23 08:46:35.283 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(71847163)
02-23 08:46:35.283 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationCharacteristicLongWrite(66222734)
02-23 08:46:35.287 2864-3032/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicWrite characteristic=69af0003-f994-3a57-749b-0e0aad3fca18 status=0
<more onCharacteristicWrites here, but omitted due to max post length>
02-23 08:46:35.441 2864-3032/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicWrite characteristic=69af0003-f994-3a57-749b-0e0aad3fca18 status=0
02-23 08:46:35.447 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationCharacteristicLongWrite(66222734)
02-23 08:46:36.298 2864-2975/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicChanged characteristic=69af0004-f994-3a57-749b-0e0aad3fca18
02-23 08:46:36.301 2864-4250/com.company.android.ble I/BLE_FW_WRITE: combine data for FW_CHUNK_25
02-23 08:46:36.303 2864-4250/com.company.android.ble D/BluetoothGatt: setCharacteristicNotification() - uuid: 69af0004-f994-3a57-749b-0e0aad3fca18 enable: false
02-23 08:46:36.303 2864-5256/com.company.android.ble D/SFlashRawWrite: msg length (total): 20, payload length: 3
02-23 08:46:36.303 2864-5256/com.company.android.ble D/SFlashRawWrite: msgId: -128
02-23 08:46:36.304 2864-5256/com.company.android.ble D/SFlashRawWrite: acked msg: 17 result: 1
02-23 08:46:36.304 2864-5256/com.company.android.ble I/BLE_TIMING: chunk 25 took 1260 ms
02-23 08:46:36.304 2864-5256/com.company.android.ble I/BLE_FW_WRITE: [FW_CHUNK_26] starting
02-23 08:46:36.313 2864-4250/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(248228237)
02-23 08:46:36.317 2864-5256/com.company.android.ble D/BluetoothGatt: setCharacteristicNotification() - uuid: 69af0004-f994-3a57-749b-0e0aad3fca18 enable: true
02-23 08:46:36.319 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(248228237)
02-23 08:46:36.321 2864-5256/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(164719036)
02-23 08:46:36.452 2864-2888/com.company.android.ble D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
02-23 08:46:36.455 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(248228237)
02-23 08:46:36.456 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(164719036)
02-23 08:46:36.602 2864-3032/com.company.android.ble D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
02-23 08:46:36.616 2864-4250/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationCharacteristicLongWrite(227542569)
02-23 08:46:36.623 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(164719036)
02-23 08:46:36.624 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationCharacteristicLongWrite(227542569)
02-23 08:46:36.632 2864-2975/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicWrite characteristic=69af0003-f994-3a57-749b-0e0aad3fca18 status=0
<more onCharacteristicWrites here, but omitted due to max post length>
02-23 08:46:36.897 2864-2975/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicWrite characteristic=69af0003-f994-3a57-749b-0e0aad3fca18 status=0
02-23 08:46:36.902 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationCharacteristicLongWrite(227542569)
02-23 08:46:37.563 2864-3093/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicChanged characteristic=69af0004-f994-3a57-749b-0e0aad3fca18
02-23 08:46:37.566 2864-5256/com.company.android.ble I/BLE_FW_WRITE: [FW_CHUNK_27] starting
02-23 08:46:37.567 2864-4250/com.company.android.ble D/BluetoothGatt: setCharacteristicNotification() - uuid: 69af0004-f994-3a57-749b-0e0aad3fca18 enable: false
02-23 08:46:37.569 2864-5256/com.company.android.ble D/BluetoothGatt: setCharacteristicNotification() - uuid: 69af0004-f994-3a57-749b-0e0aad3fca18 enable: true
02-23 08:46:37.572 2864-5256/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(150502697)
02-23 08:46:37.573 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(150502697)
02-23 08:46:37.574 2864-4250/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(128172508)
02-23 08:46:37.711 2864-2888/com.company.android.ble D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
02-23 08:46:37.715 2864-4250/com.company.android.ble D/RxBle#Radio: QUEUED RxBleRadioOperationCharacteristicLongWrite(58981097)
02-23 08:46:37.730 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(150502697)
02-23 08:46:37.730 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(128172508)
02-23 08:46:37.871 2864-3093/com.company.android.ble D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=0
02-23 08:46:37.876 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(128172508)
02-23 08:46:37.879 2864-3150/com.company.android.ble D/RxBle#Radio: STARTED RxBleRadioOperationCharacteristicLongWrite(58981097)
02-23 08:46:37.891 2864-3073/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicWrite characteristic=69af0003-f994-3a57-749b-0e0aad3fca18 status=0
<more onCharacteristicWrites here, but omitted due to max post length>
02-23 08:46:38.126 2864-3073/com.company.android.ble D/RxBle#BluetoothGatt: onCharacteristicWrite characteristic=69af0003-f994-3a57-749b-0e0aad3fca18 status=0
02-23 08:46:38.128 2864-3150/com.company.android.ble D/RxBle#Radio: FINISHED RxBleRadioOperationCharacteristicLongWrite(58981097)
正如你在最后看到的,我没有得到
onCharacteristicChanged characteristic=69af0004-f994-3a57-749b-0e0aad3fca18
最后。
注意:writeData 在 Scheduler.io() 线程中运行,我正在使用库中的最新主提交 ( https://github.com/Polidea/RxAndroidBle/commit/37ecef5c270c792bcb9193f6dd76b8711642e0ff )(因为我需要新的 LongWriteBuilder)
有趣的是,如果我启动一个什么都不做的额外“虚拟”通知可观察对象:
mBleConnection
.flatMap(rxBleConnection -> rxBleConnection.setupNotification(LISTEN_UUID))
.flatMap(notificationObservable -> notificationObservable)
.subscribe(Actions.empty(), Actions.empty())
上面的 observable 有效,我收到了所有通知。
我怀疑我在设置通知时做错了什么,或者我错过了某个地方的延迟。
最佳答案
有两件事:
不能保证收到通知 - 指示是
Android 操作系统似乎无法反复关闭和打开通知 - 从日志来看 BluetoothGattCallback.onCharacteristicChanged()
不被调用。
可能的解决方案是在第一个 writeData(byte[] _payload)
开始之前设置通知并通过 _payload
和 Observable<byte[]>
所以它看起来像writeData(byte[] _payload, Observable<byte[]> listenCharacteristicNotifications)
.然后你可以在 LISTEN_CHARACTERISTIC_UUID
上设置通知一次并用于每次写入。
关于android - 通知有时不会在使用 RxAndroidBle 的通知/写入可观察对象中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42410228/
为了让我的代码几乎完全用 Jquery 编写,我想用 Jquery 重写 AJAX 调用。 这是从网页到 Tomcat servlet 的调用。 我目前情况的类似代码: var http = new
我想使用 JNI 从 Java 调用 C 函数。在 C 函数中,我想创建一个 JVM 并调用一些 Java 对象。当我尝试创建 JVM 时,JNI_CreateJavaVM 返回 -1。 所以,我想知
环顾四周,我发现从 HTML 调用 Javascript 函数的最佳方法是将函数本身放在 HTML 中,而不是外部 Javascript 文件。所以我一直在网上四处寻找,找到了一些简短的教程,我可以根
我有这个组件: import {Component} from 'angular2/core'; import {UserServices} from '../services/UserService
我正在尝试用 C 实现一个简单的 OpenSSL 客户端/服务器模型,并且对 BIO_* 调用的使用感到好奇,与原始 SSL_* 调用相比,它允许一些不错的功能。 我对此比较陌生,所以我可能会完全错误
我正在处理有关异步调用的难题: 一个 JQuery 函数在用户点击时执行,然后调用一个 php 文件来检查用户输入是否与数据库中已有的信息重叠。如果是这样,则应提示用户确认是否要继续或取消,如果他单击
我有以下类(class)。 public Task { public static Task getInstance(String taskName) { return new
嘿,我正在构建一个小游戏,我正在通过制作一个数字 vector 来创建关卡,该数字 vector 通过枚举与 1-4 种颜色相关联。问题是循环(在 Simon::loadChallenge 中)我将颜
我有一个java spring boot api(数据接收器),客户端调用它来保存一些数据。一旦我完成了数据的持久化,我想进行另一个 api 调用(应该处理持久化的数据 - 数据聚合器),它应该自行异
首先,这涉及桌面应用程序而不是 ASP .Net 应用程序。 我已经为我的项目添加了一个 Web 引用,并构建了各种数据对象,例如 PayerInfo、Address 和 CreditCard。但问题
我如何告诉 FAKE 编译 .fs文件使用 fsc ? 解释如何传递参数的奖励积分,如 -a和 -target:dll . 编辑:我应该澄清一下,我正在尝试在没有 MSBuild/xbuild/.sl
我使用下划线模板配置了一个简单的主干模型和 View 。两个单独的 API 使用完全相同的配置。 API 1 按预期工作。 要重现该问题,请注释掉 API 1 的 URL,并取消注释 API 2 的
我不确定什么是更好的做法或更现实的做法。我希望从头开始创建目录系统,但不确定最佳方法是什么。 我想我在需要显示信息时使用对象,例如 info.php?id=100。有这样的代码用于显示 Game.cl
from datetime import timedelta class A: def __abs__(self): return -self class B1(A):
我在操作此生命游戏示例代码中的数组时遇到问题。 情况: “生命游戏”是约翰·康威发明的一种细胞自动化技术。它由一个细胞网格组成,这些细胞可以根据数学规则生存/死亡/繁殖。该网格中的活细胞和死细胞通过
如果我像这样调用 read() 来读取文件: unsigned char buf[512]; memset(buf, 0, sizeof(unsigned char) * 512); int fd;
我用 C 编写了一个简单的服务器,并希望调用它的功能与调用其他 C 守护程序的功能相同(例如使用 ./ftpd start 调用它并使用 ./ftpd stop 关闭该实例)。显然我遇到的问题是我不知
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
我希望能够从 cmd 在我的 Windows 10 计算机上调用 python3。 我已重新安装 Python3.7 以确保选择“添加到路径”选项,但仍无法调用 python3 并使 CMD 启动 P
我是一名优秀的程序员,十分优秀!