双机通信中无损的传递DOUBLE类型数据
0赞
发表于 7/31/2012 11:00:54 PM
阅读(3864)
我们都会遇到双机通信的问题,这不我就遇到了一个在双机通信中传递一个double类型的数据的问题。

初步的打算是看看数据有多大,拆分成几位传过去,免不了要损失精度。这可如何是好?
苦思了好几天,后来看到了double类型的存储特点,这下就完全可以很简单的传输了。DOUBLE在内存中是以4个字节的方式储存的,B机器设定一个DOUBLE类型的数据,固定地址addr,如果把A机器的DOUBLE4个字节的地址搬到B机器ADDR的地址中,这样是不是A机器的DOUBLE类型已经传递到了B机器?是不是很巧妙?
且看源码:
A机
void Uart_send_double(double current)
{
unsigned char * d ;
char i;
d= (unsigned char *)¤t;
for(i=3;i>=0;i--)
{
UARTPutc(d[i]);
}
}
B机器就更简单了,接收到数据后
d= (unsigned char *)¤t;
d[0]=Uart_list[2];
d[1]=Uart_list[3];
d[2]=Uart_list[4];
d[3]=Uart_list[5];
现在在去读取current的值,哈哈 current已经和A机的一样了,当然,current 的声明应当声明为 volatile的
volatile double current;
