|
关于C2000发送float型数据的求教~~急!急!急!
各位坛友,最近我在看怎么用C2000发送float型数据,想实现的功能是这样的:
上位机(串口助手)以unsigned char 的形式发四个数据,C2000接收到,
并存入数组中,然后转换回float,再发送到上位机。
关于如何转换,搜索了不少资料,发现最好的方法应该是直接用IEEE745的标准:
将float转换成char:
void FloatToByte(float floatNum,unsigned char* byteArry)
{
char* pchar=(char*)&floatNum;
for(int i=0;i<sizeof(float);i++)
{
*byteArry=*pchar;
pchar++;
byteArry++;
}
}
将unsigned char转换成float:
float ByteToFloat(unsigned char* byteArry)
{
return *((float*)byteArry);
}
这两个函数都是网上的高人写的,应该没有问题。但是我在用launch pad调试的时候,遇到了很奇怪的问题:
如果我先给出一个数,例如12.12,先用floattobyte 函数转换成 uchar,
再用bytetofloat 将保存有uchar 的数组转换回 float,最后发送这个float,结果是对的;
但是,如果我先设置一个数组,uchar【4】,将从上位机接收到的数据存入这个数组,
再用bytetofloat函数转成float,则不论我怎么发,发什么数据,始终显示的是+0.000.
非常郁闷啊!这是为什么呢?可能的原因是 C2000的uchar格式是16位吗?还是这个函数我用错了?急求指点!
谢谢大家!!!!另外在坛子里貌似还没看见有人问这类问题,希望大家能多多指点~~
真是调的郁闷啊!!!!!!!求救啊!!!!!!!!!!!!!!!!!!!!1 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|