【发布时间】:2019-04-02 08:45:28
【问题描述】:
我正在尝试创建一个 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
谁能帮助我如何读取这个数组的确切值?
【问题讨论】:
-
很可能,设备以二进制格式发送数据。请将您当前代码的十六进制结果添加到您的问题中。你最喜欢
double temp = data[3] / 100.0 + data[2]; -
我尝试过,但我一直有相同的值 17.0:此十六进制值 AA 06 11 00 3E 0D 00 62 的 TEMPERATUREEE 17.0 ----- 此十六进制值 AA 06 也有 TEMPERATUREEE 17.0 11 00 3E 0D 00 62
-
如果你的最终结果是像字符串一样显示字节数组的值,那么我建议你使用stringbuilder。遍历字节数组并将每个值附加到 stringbuilder 并最终使用 stringbuilder 显示值。
-
似乎没有关于传感器使用的协议的任何文档。所以我们必须对其进行逆向工程。您能否在三个相当不同的温度(例如 20、30 和 40 摄氏度)下进行温度测量,并将近似温度以及您从传感器获得的数据相加?
-
查看下面的问题,那里有答案stackoverflow.com/questions/54829004/…
标签: java android bluetooth-lowenergy