本帖最后由 万思博 于 2009-12-11 17:02 编辑
思路:
上位机控制台程序:我用C++写的,输入个浮点数,想转换成32位二进制数,
然后通过串口发给DSPIC
下位机程序:接收到4个8位的数据后,在组合成一个浮点数。
问题:
A: 单精度浮点数-5.625对应存储的二进制码为C0B40000
方法:对-5.625与0x000000ff按位与后,取最后8位给一个字节型的变量,然后依次取高8位的重复操作;
出现的问题1:浮点数不能够移位?
出现的问题2:怎么截取浮点数的最后8位?
B:前提:上位机如果转换成功的话,
目标:下位机程序,将接收到的4个8位的数据组合成一个浮点数
方法:将4个字节数组合成一个32位的常量,在赋值给一个浮点型的变量。
目前没试过,这样做可以吗?总觉的很别扭!!
请问:如果上面的方法不可取,有什么别的方法可以“将小数发送下去,并接收”吗?
又想到的:
思路二:
比如:发送的小数范围是0.01——100.99
如果发送的是50.21,
float Input=50.02f;
int SendData;
SendData=(int)Input*128;
将SendData转换成两个字节数发出即可
下位机,组合后在除以128即可。 |