导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请教一个AVR串口接收浮点数的问题,望高手指教![求助][rankfyang]

 *第31134篇: 请教一个AVR串口接收浮点数的问题,望高手指教![求助]

  
楼 主:rankfyang 2009年9月1日17:27
 请教一个AVR串口接收浮点数的问题,望高手指教![求助]
请教高手帮忙解答一下这个问题:
(小弟先行谢过各位热心的朋友了!)

小弟使用中断方式从Atmega128的串口1读取了包含13个字节的数据,其中部分数据是浮点数,在接收的时候浮点数是作为四个字节的字符数组保存的。比如:
从端口接收到的四个构成一个完整浮点数的字符分别是:
0xFC, 0x34,0xCD, 0xB1.
现在我希望将这四个字符还原成正确的浮点数,应该如何处理,望各位高手指点迷津。
(原来接收数据都是以字节为单位接收的,是否有更好的方法处理这个问题呢,如何处理呢,望朋友不吝赐教^_^)
注:
[code=C/C++]
struct  send_data{
 unsigned char  flag;  //数据头标记,默认为0x55
 unsigned char  len;  //数据长度
 unsigned char  gain;  //AD的当前增益
 float  vol;   //当前AD所采到的值
 float  offset;   //当前位置值
 unsigned int  crc;  //CRC校验数据
};

typedef struct send_data  AD_MCU;

AD_MCU *getADdata(unsigned char *string)
{
     unsigned char i = 0;
    unsigned char j = 0;
    
    AD_MCU       ADsentdata;
    unsigned char  flagTemp;
    unsigned char  lengthTemp;
    unsigned char  floatArray[4];
    float  floatTemp;
    float    pressureTemp = 0; 
    float   sinkTemp = 0;
    unsigned int  crcTemp;
    
    ADsentdata.flag = string[i++];
    ADsentdata.len = string[i++];
    ADsentdata.gain = string[i++];
    
    for(j = 0; j  < 4; j++)
    {
       floatArray[j] = string[i++];   
    }
    floatTemp = (float)floatArray[0];
    if(floatTemp&0x10000000)floatTemp = floatTemp & 0x000000FF;
    pressureTemp = floatTemp;
    pressureTemp = pressureTemp   <  < 8;
    
    floatTemp = (float)floatArray[1];
    if(floatTemp&0x10000000)floatTemp = floatTemp & 0x000000FF;
    pressureTemp += floatTemp;
    pressureTemp = pressureTemp   <  < 8;
    
    floatTemp = (float)floatArray[2];
    if(floatTemp&0x10000000)floatTemp = floatTemp & 0x000000FF;
    pressureTemp += floatTemp;
    pressureTemp = pressureTemp   <  < 8;
    
    floatTemp = (float)floatArray[3];
    if(floatTemp&0x10000000)floatTemp = floatTemp & 0x000000FF;
    pressureTemp += floatTemp;
    pressureTemp = pressureTemp   <  < 8;
             ……
}

[/code]
小弟本来准备通过直接的数据变换和位运算达到目的,但是最后编译提示的错误是:
  <  < 操作符有非法类型‘float' 和‘int'
 &操作符有非法类型‘float' and ‘long int'


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:样片、中小批量焊接,手贴机贴任选

[下一篇主题]:Link-Max 一进多出4~20mA电流环信号隔离器LM-1C2C、LM-1C4C