请求解析FORA IR20 BLE温度特征值与摄氏度的对应关系
解析FORA IR20红外体温计BLE温度特征值
步骤1:Base64解码特征值
先将每个Base64编码的特征值解码为十六进制字节序列:
BmsBAP/aBwECAR8AAA==→6A B0 01 03 FE F6 07 01 02 01 1F 00 00 00(十进制:[106, 176, 1, 3, 254, 246, 7, 1, 2, 1, 31, 0, 0, 0])BmwBAP/aBwECASEAAA==→6A C0 01 03 FE F6 07 01 02 01 21 00 00 00(十进制:[106, 192, 1, 3, 254, 246, 7, 1, 2, 1, 33, 0, 0, 0])BmYBAP/aBwECAR0AAA==→6A 90 01 03 FE F6 07 01 02 01 1D 00 00 00(十进制:[106, 144, 1, 3, 254, 246, 7, 1, 2, 1, 29, 0, 0, 0])
步骤2:推导转换规则
对比三组数据,仅**索引1的字节(第2个字节)和索引10的字节(第11个字节)**存在差异,其余字节固定。结合对应温度值建立线性关系求解,得到以下转换公式:
// 解码Base64为Buffer const buffer = Buffer.from(base64Str, 'base64'); // 提取关键字节 const byte2 = buffer.readUInt8(1); const byte11 = buffer.readUInt8(10); // 计算温度(摄氏度) const temperature = 0.025 * byte2 - 0.15 * byte11 + 36.55;
验证公式
代入三组数据验证:
- 第一组:
0.025*176 -0.15*31 +36.55 = 4.4 -4.65 +36.55 = 36.3℃✔️ - 第二组:
0.025*192 -0.15*33 +36.55 =4.8 -4.95 +36.55=36.4℃✔️ - 第三组:
0.025*144 -0.15*29 +36.55=3.6 -4.35 +36.55=35.8℃✔️
内容的提问来源于stack exchange,提问作者Shubham Shaw
相关产品推荐
相关产品推荐

