[应用相关] 串口发送浮点数给上位机的问题

[复制链接]
1562|4
 楼主| Snow7 发表于 2017-9-28 17:12 | 显示全部楼层 |阅读模式
用的STM32F103单片机,想将采集的数据通过串口发送到电脑上,但是由于数据是小数的所以想发送小数到上位机。各位有没有什么招?
android2 发表于 2017-9-28 17:25 | 显示全部楼层
由于浮点是2字节   双精度是4字节,所以发送的时候你可以使用联合体的形式发送。  然后依次发送出四个字节
309030 发表于 2017-9-28 18:10 | 显示全部楼层
union LEFT_SPEED
{
  char    left_speed_char[8];
  double  left_speed;
} left_wheel_speed;

void Wifi_Send_To_Phone( int encoder_left)
{
    u8 i;
//    left_wheel_speed.left_speed=0.006545f* encoder_left;

    left_wheel_speed.left_speed=1.0f;
    uart1_tx.buf[0] = 0xFF;
    uart1_tx.buf[1] = 0xD8;
    for (i=0;i<8;i++)
    {
        uart1_tx.buf[i+2] = left_wheel_speed.left_speed_char[7-i];
    }
    uart1_tx.buf[10] = 0x02;
    uart1_tx.buf[11] = 0xFF;
    uart1_tx.buf[12] = 0xD9;
    USART1_DMA_Send_Once_Data( uart1_tx.buf, 13 );
}
lefeng 发表于 2017-9-28 18:22 | 显示全部楼层
注意发送的时候是倒着顺序发送的
Thor9 发表于 2017-9-28 18:27 | 显示全部楼层
#include
#include
void send_float(float d)
{
    char buf[32], *temp;

    temp=buf;

    sprintf(temp, "%f", d);

    for (; *temp; ++temp) send_char(*temp);
    send_char(' '); //加一个空格或回车隔开两个数。

}

void send_floats(float *d, int n)  //n为浮点数个数
{
    for (; n; --n) send_float(*d++);   
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

173

主题

926

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部