You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

骑行速度与踏频传感器BLE GATT特征数据解析及操作技术问询

解析骑行速度与踏频(CSC)传感器BLE GATT特征测量数据

我来一步步带你拆解这类数据的解析逻辑,完全遵循CSC规范的字段拆分规则,就用你给出的测试十六进制数据来实操:0x03 6D010000 FC7E 2C01 F87E

第一步:先读懂标志位(Flags)的核心作用

标志位是数据的第一个字节,它决定了后续哪些字段是有效的。你的测试数据里标志位是0x03,转成8位二进制是00000011,对应规则如下:

  • 第0位(最低位):值为1 → 累计车轮转数字段有效
  • 第1位:值为1 → 曲柄转数与时间字段有效
  • 第2-7位:值为0 → 本次数据不涉及轮径自定义、行走数据等可选字段

第二步:按标志位拆分并解析各字段

CSC特征的多字节字段全部采用小端字节序(低位字节在前),所以解析时要先反转字节再转换:

  1. 累计车轮转数:4字节,对应数据段6D010000
    • 反转字节后:0000016D
    • 转十进制:365(表示累计车轮转动了365圈)
  2. 最后车轮事件时间:2字节,对应数据段FC7E
    • 反转字节后:7EFC
    • 转十进制:32508(单位是1/1024秒,换算成秒约为31.75秒,记录的是最后一次车轮转动的时间戳)
  3. 累计曲柄转数:2字节,对应数据段2C01
    • 反转字节后:012C
    • 转十进制:300(累计曲柄转动了300圈)
  4. 最后曲柄事件时间:2字节,对应数据段F87E
    • 反转字节后:7EF8
    • 转十进制:32504(单位1/1024秒,换算后约31.74秒,是最后一次曲柄转动的时间戳)

第三步:计算实际骑行速度与踏频

要得到实时的速度和踏频,需要缓存上一次采样的转数和时间戳,通过差值计算:

  • 骑行速度(当前车轮转数 - 上次车轮转数) × 车轮周长 ÷ (当前车轮时间 - 上次车轮时间) × 3.6
    • 说明:乘以3.6是把米/秒转换成公里/小时,车轮周长需要根据实际轮径设置(比如26寸轮周长约207厘米)
  • 踏频(当前曲柄转数 - 上次曲柄转数) × 60 ÷ (当前曲柄时间 - 上次曲柄时间)
    • 说明:结果单位是转/分钟(RPM)

实操注意事项

  • 严格按标志位判断字段有效性:如果标志位第0位是0,就不要解析车轮相关数据,避免出现无效计算
  • 处理字节序时不要出错:小端模式是CSC规范强制要求的,反转字节是解析多字段的关键
  • 异常值过滤:如果两次采样的时间差为0,要跳过计算,避免除以0的错误

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

火山引擎 最新活动