上传数据需除十,正数的范围为 16 进制 0X0000-0X7FFF,负数采用正数的补码方式传输,其范围为 16 进
制 0X8000-0XFFFF,
如:
湿度上传 16 进制 0X0311,对应十进制 785,表示 78.5%
温度上传 16 进制 0X00FF,对应十进制 255,表示 25.5℃
温度上传 16 进制 0XFF9B,对应十进制 100(0XFFFF-0XFF9B=0X64), 表示-10.0℃
报文格式为01 03 04 温度H 温度L 湿度H 湿度L CRCL CRCH
现在我想获取报文中温湿度的实际值要怎么做才好
char *pBuffer = 你读取的返回数据
if (pBuffer[0] == 1 && pBuffer[1] == 3 && pBuffer[2] == 4)
{
int温度 = (pBuffer[3] * 256 + pBuffer[4]);
if (温度 >= 32768) 温度 = 温度 - 65536;
int湿度 = (pBuffer[5] * 256 + pBuffer[6]);
if (湿度 >= 32768) 湿度 = 湿度 - 65536;
printf("温度=%f 湿度=%f", (float)温度/10.0f, (float)湿度 / 10.0f);
}