uni-app如何控制外接电子秤获取实时重量

阿静姑娘_9343

阿静姑娘_9343

2026-10-18

208人浏览

原创

关键在于识别设备类型、匹配协议、处理粘包/分包并稳定维持通知通道:ble秤需扫描serviceuuids、启用notify及descriptor写入;串口秤须用rs232-serial原生插件配置正确参数并发送启动命令。

uni-app如何控制外接电子秤获取实时重量

uni-app 控制外接电子秤获取实时重量,关键不在“连上就行”,而在于**识别设备类型、匹配协议、处理粘包/分包、并稳定维持通知通道**。BLE 秤和串口秤走的是完全不同的技术路径,混用会导致白忙活一整天。

先判断电子秤是 BLE 还是串口(ttySx/USB)

这是第一步也是最容易翻车的一步。很多项目卡在“搜不到设备”或“连上了但收不到数据”,根本原因就是没搞清物理接口类型:

  • BLE 电子秤:必须支持蓝牙 4.0+,iOS 强制要求,Android 可选;设备名通常带 WS-、BLE- 或厂商缩写;扫描时需传 serviceUUIDs: ['0x181D'] 提高命中率
  • 串口电子秤(带安卓屏的台式秤居多):不走蓝牙协议,而是通过 USB 或 RS232 直连,端口名一般是 /dev/ttyS1、/dev/ttyUSB0;uni-app 必须用原生插件,如 rs232-serial,usb-serial 基本无效
  • 经典蓝牙(SPP)秤:极少见,iOS 不支持,Android 需用 plus.bluetooth(HTML5+)而非 uni.openBluetoothAdapter

错误现象:uni.startBluetoothDevicesDiscovery 搜不到设备,但用手机蓝牙列表能看到——大概率是串口秤,别再折腾 BLE API 了。

BLE 秤连上后收不到 weight 数据?检查 notify 和 descriptor 写入

BLE 秤的数据不是“主动推”,而是靠你手动打开通知开关 + 订阅特征值。漏掉任一环,onBLECharacteristicValueChange 就永远不会触发:

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载
  • 必须先调用 uni.getBLEDeviceCharacteristics 找到属性 notify: true 的 characteristic,典型 UUID 是 0x2A9D(体重测量)
  • 拿到 characteristic 后,不能直接读,要先写 descriptor:uni.writeBLEDescriptorValue,其中 descriptorId 通常是 0x2902,value 是 new ArrayBuffer(2),dataView.setUint8(0, 1)(开启 notify)
  • 有些秤(如某坤宏型号)需要额外发送唤醒命令,比如 sendHexCommand('010203'),否则一直静默;该命令必须在 enable notify 之后发
  • 务必监听 uni.onBLECharacteristicValueChange,而不是 read 回调——通知才是实时流的入口

收到的 ArrayBuffer 怎么解析成公斤数?小心粘包和字节序

BLE 通知来的数据不是“一条一帧”,而是可能合并(两帧黏一起)或拆分(一帧分两次来),且不同厂商编码方式天差地别:

  • 标准 GATT 0x2A9D 特征值返回的是 IEEE-11073 浮点格式,需按位解析:前 1 字节是标志位(含单位、稳定性),后 2~4 字节才是数值,且可能是 little-endian
  • 私有协议秤(占 70% 以上)返回的是 ASCII 字符串,如 "STX 005.20 kg CR",需找对起始符 0x02 和结束符 0x0d/0x0a,再做 TextDecoder 解码
  • 强烈建议缓存原始 ArrayBuffer,拼接后再切分:维护一个 pendingBuffer = new Uint8Array(),每次收到新 buffer 就 concat 进去,再按协议规则(如找 0x02→0x0d)提取完整帧
  • 单位转换别硬编码:从标志位或字符串里提取 'kg'/'lb',再乘对应系数,避免把 5.20 lb 当成 5.20 kg

串口秤怎么在 uni-app 里拿到数据?绕不开原生插件

uni-app 的 JS 层无法直接访问 Android 的 /dev/ttyS1,必须依赖原生封装。目前最稳的是 rs232-serial 插件(不是 usb-serial):

  • 初始化时指定正确参数:port: '/dev/ttyS1'、baudRate: 9600、dataBits: 8、stopBits: 1、parity: 'none';错一个就收不到任何数据
  • 串口数据是流式到达的,同样存在粘包问题,需自己做帧头帧尾识别(如 0x02 开头、0x0d 结尾)
  • 插件回调返回的是 Uint8Array,不是字符串,要用 new TextDecoder().decode(buffer) 转成可读文本
  • vue2 项目不能直接套用 vue3 插件示例代码,onReceive 注册方式不同,容易静默失败

最常被忽略的一点:串口秤往往默认关闭自动上报,必须先发 RN1 或 ST 命令才能让它开始吐数据——这和 BLE 秤的唤醒指令一样关键,但文档里常常藏得极深。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

uni-app

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2503

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5423

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6450

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6078

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

863

5

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.09

3443

4

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

2023.11.14

874

3

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2024.03.12

6466

8

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.16

5430

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习