You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Flutter(flutter_blue)将OCS蓝牙吊钩秤的List数据转公斤值?

解决OCS 500kg蓝牙吊钩秤称重数据转换问题

数据解析逻辑

先拆解你提供的示例数据[2,66,32,32,32,32,48,46,57,217,13],每个整数对应ASCII字符:

  • 2:起始标记(STX)
  • 66:设备状态标识(比如代表稳定称重的字符'B')
  • 四个32:空格填充符
  • 48='0'、46='.'、57='9':有效称重数值字符串"0.9"
  • 217:校验位(不影响数值提取,可忽略)
  • 13:结束标记(CR回车符)

核心逻辑是提取字符串中的数字和小数点部分,转换为公斤数值。

代码实现

在flutter_blue监听特征值变化的回调中,加入以下处理逻辑:

// 监听特征值的数据流
characteristic.value.listen((List<int> data) {
  // 1. 将List<int>转为字符串,过滤掉非数字和小数点的字符
  String rawWeightStr = String.fromCharCodes(data)
      .replaceAll(RegExp(r'[^0-9.]'), '');
  
  // 2. 转换为double类型的公斤值
  if (rawWeightStr.isNotEmpty) {
    double weightInKg = double.parse(rawWeightStr);
    print("当前称重:$weightInKg kg");
    // 此处可将weightInKg用于UI展示或业务逻辑处理
  }
});

特殊情况处理

  • 如果设备输出异常(比如多个小数点),可以提前校验:
    if (rawWeightStr.split('.').length > 2) {
      // 异常数据,跳过处理或提示错误
      return;
    }
    
  • 若数值存在前导/尾随空格,上面的正则会自动过滤,不影响转换结果。

验证示例

用你的测试数据[2,66,32,32,32,32,48,46,57,217,13]执行代码后,会得到0.9 kg的称重结果,符合预期。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:35:29