我试图创建一个BLE应用,我想从设备中捕获温度值。我正在使用临时保姆设备。
我有这个UUID = 0000ffe1-0000-1000-8000-00805f9b34fb。从这里我得到一个字节数组。
// 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());
}
以下是一些十六进制结果: AA 06 11 00 3E 0D 00 62- AA 06 11 00 43 0D 00 67- AA 06 11 00 49 0D 00 6D
有人可以帮助我读取该数组的确切值吗?
答案 0 :(得分:1)
对IRULU / Guangdong Biolight Meditech 临时保姆应用程序进行反向工程后,看起来该消息具有以下格式:
0 1 2 3 4 5 6 7
+------+------+------+------+------+------+------+------+
|Marker|Length|Type |Subtyp|Low |High |Unused|Chksum|
+------+------+------+------+------+------+------+------+
Example AA 06 11 00 3E 0D 00 62
字段是:
温度值以0.01度(可能为摄氏)存储。因此,要提取它,您需要计算:
double temperature = ((message[5] & 0xff) * 256 + (message[4] & 0xff)) * 0.01;
在上面的示例中,结果为33.90°C。