情景:RTU抄流量计
RTU发送Modbus命令:41 03 00 02 00 08 EB 0C
水表回应:41 03 10 43 CF 16 25 00 D6 59 A7 00 D6 59 C1 FF FF FF E7 57 29
其中从第4-7字节为float型数据,43 CF 16 25,解析值应该为414.173,
单片机程序:
float ss_value;
ulong temp_ss_value;
temp_ss_value = buf[3] << 24;
temp_ss_value += buf[4] << 16;
temp_ss_value += buf[5] << 8;
temp_ss_value += buf[6];
memcpy(&ss_value,&temp_ss_value,sizeof(temp_ss_value));
caoxi[meter_caoxi_index].ss_flux = ss_value;
写成以下写法则不能准换成功:
float ss_value;
memcpy(&ss_value,&buf[3],4);
caoxi[meter_caoxi_index].ss_flux = ss_value;
目前尚未搞明白,望看到的高手指点以下。