问题标签 [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.
react-native - 如何持续监控蓝牙特性?
我有一个 React Native 应用程序。我试图从外围设备获取葡萄糖测量值。
外围设备上有一个Data Transfer
选项,它将通过蓝牙从外围设备传输数据。
我可以从外围设备上检索和解码数据,但我无法持续监控葡萄糖特性。即,如果我向外围设备添加新数据并Data Transfer
第二次选择选项,我不会获得最新数据。
关于我应该做些什么来实现这一目标的任何想法?
我正在使用react-native-ble-plx
图书馆
javascript - setTimeout 函数触发两次回调
我有一个写入函数,它基本上将数据添加到队列并每 500 毫秒发送一次数据,我使用了几个 setTimeouts 来写入数据,如下所示。并且分析日志我怀疑 setTimeout 已被调用两次,我想知道这是否可能?什么是可能的解决方法?
日志
现在,如果您检查 IOS 中的日志,我发现发送数据在 (1597680808276 - 1597680808275) 1 ms 间隔内被调用两次,并且是从 setTimeout 函数调用的。js中的setTimeout有问题吗?或者可能是 react-native 问题或 safari 问题?我该如何解决这个问题。几年前,我在 nodejs 中看到了类似的问题。
注意:我使用 react-native-ble-manager 发送/接收数据。
typescript - 连接蓝牙模块后丢失数据
客观的
我试图在连接后从蓝牙设备返回数据,因为要使用读写功能,需要一些数据。示例数据name, overflowServiceUUIDs, solicitedServiceUUIDs, mtu, rssi...
和许多其他数据。因为如果我想读或写,我需要一些属性。我正在使用图书馆react-native-ble-plx
。
怎么了?
设备连接后,我失去了一些价值。
重要的
序列函数
切换扫描设备()
将所有设备推送到该bleDevices
状态。
toggleConnectDevice(device.name)
连接设备(名称)
findDeviceWhereNameContains(名称)
在connectDevice
函数内部,我有一个let device
接收关于 的值findDeviceWhereNameContains
,如果我记录这个变量,device
我会收到许多非常重要的数据,但我还没有连接。因此,当我验证if (!isConnected)
此处时,我将连接,然后,如果我device
再次登录时,我会丢失一些值。
连接前的日志
连接后的日志
react-native - 接收react-native应用程序ble发送的数据
a 具有带有 ble 模块 mlt-bt05 的 react-native 应用程序和 arduino nano。我尝试使用 react-native-ble-plx lbrary 将信息从应用程序发送到 arduino,但串行监视器什么也没显示。
这是我的反应原生代码
和arduino代码
我正在尝试使用 IOS 的 BLE 终端应用程序使用此 arduino 代码发送数据,在端口监视器中我看到消息,但没有来自我的 react-native 应用程序。
有来自 writeCharacteristicWithResponseForService 的响应的 console.log
javascript - 在蓝牙管理器组件侦听器函数中发出处理异步函数
我在蓝牙 RN 应用程序中运行一些异步代码时遇到问题。
我正在尝试创建一个执行以下操作的侦听器函数:连接到设备(使用异步函数),记录我已连接的日志,然后断开与设备的连接(使用异步函数)。
此侦听器函数作为蓝牙低功耗 (ble) 设备扫描函数的参数提供:
我不明白为什么即使我使侦听器函数异步并等待侦听器中的 2 个异步函数调用,Connected to Device
日志也不会打印。这意味着侦听器永远不会在await bleManager.connectToDevice(device.id)
异步函数调用之后执行
这是我的控制台日志:
请注意,Possible Unhandled Promise Rejection (id: 150): BleError: Operation was cancelled
在我在下面发布的代码段之后重复输入错误日志。有时日志会返回到某些设备中的扫描,但总是返回到 promise 拒绝。Connected to device
console.log 从不打印。
解决方案更新:非常感谢 Jaromanda X 提供解决方案!
修复方法是在 connectToDevice() 和 cancelDeviceConnection() 异步函数周围添加尝试捕获,因为它们被拒绝并且侦听器将返回(因此从未打印过“连接到设备”日志的原因)。
react-native - 使用 react-native-ble-plx 将数据发送到树莓派 RFCOMM 服务器
我的目标是设置我的 Raspberry Pi 4,使其能够在我使用 React Native 制作的应用程序中单击按钮时运行脚本。我需要能够做到这一点,以便他们可以在没有 wifi 的情况下连接,这就是我决定使用蓝牙的原因。
到目前为止,我在 Pi 上设置了 RFCOMM 服务器,并安装了 react-native-ble-plx 模块以处理蓝牙通信,但我不确定如何让 React Native 连接到该服务器。
如果有人能告诉我如何连接它们并将数据发送到 Pi 以使其运行终端命令并返回结果,我将不胜感激。
android - 蓝牙低功耗在两部手机之间工作?
我在我的移动应用程序中使用了低功耗蓝牙和 react-native 。我只想找到其他移动设备,所以我找不到任何其他手机及其支持的低功耗蓝牙,但我找到了我的智能手表, 我的问题是低功耗蓝牙可以找到其他手机还是只是为了配饰?
你建议我找其他手机做什么。
我的代码
我已经编辑了我的 android/app/src/main/AndroidManifest.xml
我用了
android - 使用 React-native-ble-plx 创建绑定
在 Android 中调用monitorCharacteristicForService
断开连接的 BLE 设备并出现以下错误
{"message":"设备 xx:xx:xx:xx 已断开连接","errorCode":201,"attErrorCode":19,"iosErrorCode":null,"androidErrorCode":null,"reason":"与 xx 断开连接:xx:xx:xx 状态为 19 (UNKNOWN)","name":"BleError","line":24096,"column":28,"sourceURL":"http://localhost:8081/index.bundle ?平台=android&dev=true&minify=false"}
需要做什么:
createBond 与 BLE 设备
需要如何手动创建与设备的绑定的想法
react-native - 使用 redux 反应本机在调度时滞后
在我的应用程序中,我有一个函数,它每 2 秒调用一次蓝牙命令,通过 setInterval 函数询问设备的当前温度。
蓝牙响应由监控功能给出。我为此使用 react native-ble-plx 库。我对这个过程没有任何问题。
温度通过一个属性返回,该属性通过动作文件中的 redux 调度。但是当我将函数“调度”(通过 redux)到我的屏幕时,我有一个短暂的中断,这会导致延迟/生涩的行为。就我而言,我有一个滑动解锁按钮,在我的设备上调用调度时,触摸操作被中断,变得不直观和烦人。很难解释这个问题,但我的问题很简单,我如何设置 react-redux 不滞后,或者不中断 redux 调度上的当前用户交互?
我的应用程序基于此项目结构(用于带有 Ble 的 react-redux):https ://github.com/momolarson/BLEServiceDiscovery
环境:反应原生:0.63.3
反应原生 ble-plx:2.0.2
反应减少:7.2.1
这是我的应用程序的伪代码(代码更长,但我通过删除它们排除了所有其他代码):
HomeScreen.js
redux 的动作文件:actionBt.js(我的文件是基于这个https://github.com/momolarson/BLEServiceDiscovery/blob/master/actions/index.js)
感谢您的帮助
更新 1
我制作了我的应用程序的一个特定版本,没有蓝牙,只有解锁模块的幻灯片和一个带有 setInterval 的观察者,当状态被调度时,仍然有一个滞后的行为。我只用按钮完成了测试,当我点击然后通过调度显示值时,它仍然是同样的麻烦。
这是我的测试代码 index.js(redux 操作文件)
感谢您的建议和帮助
更新 2
找到解决方案,请参阅下面的答案。问题是调度中的 var 用户类型以及由于之前我在应用程序上进行的测试而不清理它们而产生的一些副作用。
android - React Native 应用程序冻结从 BLE 设备连续读取数据
我使用 react-native-ble-plx 库成功地从 BLE 设备接收和读取数据。
侦听器每 10 毫秒或 20 毫秒接收一次数据,但之后 UI 冻结约 1 分钟。
处理这种情况的正确方法是什么?