问题标签 [react-native-ble-plx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何使用 react-native-ble-plx 发现服务 UUID 和 Characterstic UUID?
问题:
我正在尝试连接到我的蓝牙设备,但是在连接并发现所有服务和特性后,由于返回的信息不足,我无法前进。我没有收到任何服务 UUID,也没有收到任何特征 UUID。
我需要做什么才能访问 UUID,然后才能读取特征?
我试过的:
通话后我的设备device.discoverAllServicesAndCharacteristics();
返回:
{ _40: 0, _65: 0, _55: null, _72: null }
当我登录时,device
我得到:
在这一点上,我不知道该怎么做,因为我没有收到任何有价值的信息来进一步从特征中获取信息。
根据文档,我需要 UUID 从我的设备中读取。
注意:当我在 android 上使用 Ble Scanner 应用程序时,我能够使用它们的 UUID 接收所有服务和特征。
代码片段:
xcode - 在 iOS 上使用 react-native 和 react-native-ble-plx 时如何解决此错误?
我正在尝试使用react-native和react-native-ble-plx开发一个 iOS(和 Android)应用程序。它在 Android 上完美运行,但我在 iOS 上经常遇到同样的错误。我什至从头开始了一个全新的 react-native 项目,以努力将其缩小到最低公分母,每次我在添加和链接 react-native-ble-plx 包后尝试运行它时都会出现这个问题.
- 我试过清除缓存并重新启动
- 我试过回滚到以前的版本
- 我已经尝试将 3rd 方包嵌入到嵌入式二进制文件中,但我不确定要添加什么(我没有看到 .framework 文件)
任何帮助将不胜感激,我已经投入了大约 40 个小时试图解决这个问题,我很难过。
我是 iOS 开发的新手,所以我不确定哪些信息会有所帮助,但这里有几件事的版本:
- 操作系统:maxOS High Sierra 版本 10.13.6
- Xcode:版本 9.4.1 (9F2000)
- 斯威夫特:版本 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
- 反应:版本 16.4.1
- 反应原生:版本 0.56.0
- react-native-ble-plx:版本 0.9.1
- npm:版本:6.2.0
- 纱线:版本 1.7.0
- 迦太基:版本 0.30.1
reactjs - React Native - 全局事件监听器
我在Pairing
屏幕上注册了一个监听器,只要连接的蓝牙设备断开连接,它就会调用一个方法
我希望这个事件贯穿我的应用程序,我怎样才能创建一个全局事件侦听器,而不必在每个屏幕上复制粘贴此代码?
ps 如果有帮助,我正在使用 react-native-ble-manager 和 redux+sagas
android - Rxjs 计时器在 react-native/android 上过早完成
好的,为了问我的问题,这里有一点背景:
我有一个 react-native 项目,它使用react-native-ble-plx库来访问设备的蓝牙。该库有一个startDeviceScan
接受回调的方法,因此我想使用rxjs
它来扫描设备一段时间,然后将它们全部收集到一个数组中,并将结果作为承诺返回。我通过组合bufferTime
和take
管道运算符来做到这一点,尽管我也设法做到了takeUntil(timer())
。这是扫描代码(注意:我也在使用打字稿):
问题是,当在我的设备(Android 8.0)上执行它时,bufferTime
(甚至timer
)太早发出〜2900ms,无论timeout
. 这是一个问题,因为我不想过早完成扫描;现在我可以通过在超时时间中添加 3 秒来“处理”这个问题,但我宁愿找出根本问题,也不愿依赖这种类型的拼凑。
为了弄清楚这一点,我决定尝试一个极简主义的例子:
...而且这个例子也过早地完成了大约 2900 毫秒。
bufferTime
( 和)有什么理由timer
会像那样提前发射吗?请注意,我没有对 rxjs 调度程序等进行任何更改,因为我并不真正了解它们是如何工作的。也许有什么要弄清楚的?
任何帮助将不胜感激。
android - 使用 react-native-ble-plx 避免重复的 BLE 设备
我正在使用 react-native-ble-plx 在我的应用程序中实现蓝牙
蓝牙扫描工作正常,但它在 android 中包含重复项,而在 iOS 中工作正常,因为 allowDuplicates 在 iOS 中默认为 false。
在android中,默认值为true。请提供使用 react-native-ble-plx 的 allowDuplicates 属性过滤掉重复项的解决方案
文档中 startDeviceScan 的语法:-
https://github.com/Polidea/react-native-ble-plx/wiki/Bluetooth-Scanning
我的代码:-
请告知是否仍然存在任何语法错误
android - React Native BLE 错误:设备已断开连接
尝试使用以下方法从手机写入设备。我们要传输三个数据包。第一个数据包传输,然后我们的手机因错误而断开连接Response Characteristic Error: Error: Device disconnected
。
谁能阐明如何解决此响应特征错误?我们正在使用 react-native-ble-plx 库。
typescript - 订阅具有 2 个参数的事件发射器?
我的上下文是 React Native / RxJS / TypeScript
我正在尝试订阅具有 2 个参数的事件发射器。
函数原型是这样的:
... }
当我尝试像下面这样订阅时,代码将无法编译:
错误是:'(error: BleError | null, characteristic: Characteristic | null) => void' 类型的参数不可分配给'(value: any) => void' 类型的参数。
但是,似乎我只能从事件中获得一个论点。
我做了一些研究,发现了这个。这是关于将 2 个参数投影到一个数组中。
我不知道这是否仍然有效,并且似乎无法绕过它来做同样的事情。
react-native - 我应该将 onBackPressureBuffer(n) 放在 RxJava 订阅链的哪个位置?
我正在尝试修复现有的 React Native 库react-native-ble-plx在现有的 Java 代码中添加 onBackPressureBuffer() 。
我知道这很难看,但我现在没有时间提交 PR,并且有一个未决的问题可以解决这个问题。我这样做是因为事件发射器工作在 200Hz。我需要一种安全的方式来缓冲本机端的项目,同时它们在 JavaScript 端以自己的速度被消耗。
所以代码变成了下面这样:
我的问题是,即使添加了那个,我也遇到了 MissingBackPressure 异常。
我已经尝试过 onBackPressureDrop() 并且我的行为完全相同。所以我认为我做错了,但现在不知道为什么。
任何帮助表示赞赏。
javascript - android中使用react-native-ble-plx API的BLE外围连接问题
我正在创建一个应用程序,我需要扫描所有 BLE 信标并连接到特定的信标,然后在该外围设备上执行其他操作。我能够扫描 android 设备上的外围设备,但我无法连接到它们中的任何一个。在下面的代码中,使用了 react-native-ble-plx API。
如果我从 connectToDevice() 函数中删除 autoConnect 选项,我会收到一个错误,即 ERROR: Device MAC_ADDRESS is disconnected。