源码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
float freq;
char recv[4] = {0x40, 0x91, 0x2C, 0x81}; //接收到的数据,高字节到低字节排列
char *Modbus_HoldReg[4]; //定义保持寄存器指针数组
//第一步:指针初始化
Modbus_HoldReg[0] = ((char*)(&freq)) + 3; //低地址指向高位
Modbus_HoldReg[1] = ((char*)(&freq)) + 2;
Modbus_HoldReg[2] = ((char*)(&freq)) + 1;
Modbus_HoldReg[3] = ((char*)(&freq)) + 0; //高地址指向低位
//第二步:给地址指定的内存单元赋值(对应Modbus协议中的数据解析)
*Modbus_HoldReg[0] = recv[0];
*Modbus_HoldReg[1] = recv[1];
*Modbus_HoldReg[2] = recv[2];
*Modbus_HoldReg[3] = recv[3];
printf("%f\r\n", freq);
return 0;
}