我正在开发 Android 应用程序,该应用程序用于在有新数据可用时从 BLE 设备(任何血糖仪)读取血糖水平。每当我通过连接到应用程序的设备检查我的血糖水平时,其读数低于十六进制值。我无法解析或识别该十六进制值的格式。每当我解码此十六进制值 t 字符串时,实际糖含量为 104 mg/dL,我得到值 1 恩赫
0B 04 00 E4 07 05 0E 0C 31 1D 4E 01 68 B0 F8 00 00
// For all other profiles, writes the data formatted in HEX.
final byte[] data = characteristic.getValue();
if (data != null && data.length > 0) {
final StringBuilder stringBuilder = new StringBuilder(data.length);
for(byte byteChar : data)
stringBuilder.append(String.format("%02X ", byteChar));
intent.putExtra(EXTRA_DATA, new String(data) + "\n" + stringBuilder.toString());
}
最佳答案
如果您的设备使用采用的 Glucose 服务/特性,则根据Bluetooth website ,您的测量结果划分如下:-
- 字段 1:标志(8 位):0B(1011:存在时间偏移、类型和样本 TRUE、kg/L、传感器状态 True)
- 字段2:序列号(16位):04 00
- 字段3:Date Time (54 位):E4 07 05 0E 0C 31 1D
- 字段4:时间偏移(16 位):4E 01
- 字段 5:单位 kg/L:(16 位 SFLOAT):68 0B
- 字段 6:单位 mol/L:(16 位 SFLOAT):不存在
- 字段 7:类型:(4 位):F
- 字段 8:位置:(4 位):8
- 字段 9:状态:(16 位):00 00
所以你的测量值是 68 0B。 68是104,与你的测量相符。不确定 0B 的用途和用途,但现在可以将其丢弃。
我希望这会有所帮助。
关于android - 如何从HEX获取正确的血糖测量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61806227/