4***@qq.com
4***@qq.com
  • 发布:2024-03-29 15:18
  • 更新:2024-11-12 11:28
  • 阅读:186

native.js读取蓝牙数据长度问题

分类:uni-app

let data = invoke(btInStream, "read", [1024]); // 这么写会报错,返回全是null
let data = invoke(btInStream, "read"); // 如果这么写就能读取,但是每次只有一个字节
这个怎么解决啊

2024-03-29 15:18 负责人:无 分享
已邀请:
Lnews

Lnews

写个死循环一直读呗,设置一个间隔,如果间隔多久没读到数据就结束循环,输出

  • 4***@qq.com (作者)

    数据比较大循环时间太长了 想能一次读多字节 节省时间

    2024-03-29 15:40

Azikou

Azikou

写原生插件吧,我之前蓝牙也是先用native.js 开发,最后就是卡在收数据,和你一样只能读1个字节。

  • 4***@qq.com (作者)

    有demo吗大佬 学习学习

    2024-03-29 15:54

欧阳铁柱

欧阳铁柱

用java.io.InputStreamReader + java.io.BufferedReader 读取,每次一行,效率更高,单子节读取很容易阻塞
const dataArr = []
while (invoke(btInStream, "available") != 0 || dataArr.length === 0) {
var br = new BufferedReader(new InputStreamReader(btInStream)); // btInStream 为java.io.InputStream
var msg = br.readLine(); // 读取整行,无需转码
dataArr.push(msg)
}

要回复问题请先登录注册