我正在开发xamarin android应用,以连接到蓝牙低能耗温度计。我已经可以连接并读取其值。我的问题是,它采用十六进制格式,但是我还没有找到一种以十进制(摄氏度)格式提取其值的方法。
以下是一些示例读数:
据我了解,它必须是上面2º的“列”(十六进制值68、6A,70、5A)。 10º和11º“柱”接缝中的值与测量时间(hh-mm)有关。
我如何提取价值?我可以使用通用公式吗?有没有办法知道它的度量单位,以便我可以转换为摄氏温度(如果还没有)?
“我的问题是它采用十六进制格式”。我确定您会收到一个字节数组,您只是以十六进制格式读取或打印它。
要获得有用的东西,您必须从原始字节数组中获取相关数据。
06-68-01-00-FF-E2-07-03-0A-15-34-00-02是[6,104,1,0,255,226,7,3,10,21,52,0,2]] >
第一个字节(字节[0] = 6是一个位标志:00000110。
bit 0最右边= 0,表示温度测量值,以摄氏度为单位。 (如果为1华氏度)。位1 = 1,表示时间戳字段存在(如果不存在0时间戳字段)。位2 = 1,表示存在温度类型字段,如果不存在0温度类型字段。
所有其他位均不相关,它们保留供将来使用。
Bites [1](104)和[2](1)是摄氏* 10的温度,以FLOAT表示。要获得temp乘以256的字节[2]并加上字节[1],将总数除以10。结果:1 * 256 + 104 =360。温度为36.0
Bite3和4在这里没有意义。通常它们是4字节温度浮动的一部分。
位[5](226)和[6](7)是作为INT16的年份:7 * 256 + 226 = 2018。
字节[7](3)是月份。 0表示未知,1 = 1月,此处3 = 3月。
字节[8](10)是一个月中的某天,这里是10。
[Byte [10](21)是小时(午夜之后的小时数),这里是21。
字节[11](52)是分钟,这里是52。
字节[12](0)是秒,这里是0。
[Byte [13](2)是温度类型,这里是主体(常规)。
1腋窝2身体(一般)
3耳朵(通常是耳垂)
4手指
5胃肠道
6口
7直肠
8趾
9鼓膜(耳鼓)
10-255保留供将来使用
0保留供将来使用