打印
[应用相关]

串口发送浮点数给上位机的问题

[复制链接]
1322|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 | 只看该作者
注意发送的时候是倒着顺序发送的

使用特权

评论回复
5
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

粉丝