android - 如何从HEX获取正确的血糖测量值

标签 android bluetooth bluetooth-lowenergy

我正在开发 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/

相关文章:

android - Bluetooth LE 扫描有时找不到设备

android - 房间持久化库和内容提供者

android - 当前提供的android模拟器是否能够模拟传感器?

安卓蓝牙: Get UUIDs of discovered devices

ios - 有什么方法可以通过 iOS/swift 中的蓝牙以编程方式连接 android 和 IOS 设备?

iphone - 2 部 iPhone 可以多快交换有关倾斜/位置的信息?

ios - BLE 设备在应用程序终止时保持与 iPhone 的连接

ios - BTLE 4.0 - ConnectBlue 低能耗串行端口服务

android - 处理 UI 事件的最佳实践

java - Android 应用程序出现 BlueMix 服务错误 - 'Unknown pattern character ' X''