串口怎么发送浮点数或者双精度数给上位机
时间:10-02
整理:3721RD
点击:
用的STM32F103单片机,想将采集的数据通过串口发送到电脑上,但是由于数据是小数的所以想发送小数到上位机。各位有没有什么招?
类似于这样的形式
注意发送的时候是倒着顺序发送的
由于浮点是2字节 双精度是4字节,所以发送的时候你可以使用联合体的形式发送。 然后依次发送出四个字节。
- 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 );
- }
类似于这样的形式
注意发送的时候是倒着顺序发送的
注意发送的时候是倒着顺序发送的
先看看 好的话 会采用的 谢谢啦
#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++);
}