串口发送浮点型数据?
本帖最后由 asnowgober 于 2013-4-27 10:29 编辑串口一般是传输字符型的数据,对于浮点型数据,怎么处理比较好呢?
比如怎么传输这个数组 data={1.1, 12.3, 456.4, 23.45}..... float a;
uart_send((char*)&a, sizeof(a)); 楼上正解,这个和数据类型没关吧! 本帖最后由 zuu0 于 2013-4-27 13:35 编辑
qllaoda1 发表于 2013-4-27 10:23 static/image/common/back.gif
float a;
uart_send((char*)&a, sizeof(a));
看到你这句,我发现我以前做的有点笨
typedef union
{
unsigned char CharData;
unsigned intIntData;
unsigned long UnLongData;
long LongData;
floatFloatData;
}DataStruct;
DataStruct DataMid;
/*****************************
串口发送浮点数
*****************************
void UartSendFloat(float fTemp)
{
unsigned char i;
DataMid.FloatData=fTemp;
for(i=0;i<4;i++) send_UART(DataMid.CharData);
}
如果调试,直接printf(); 自己定义格式呗!
float wtemp;
char sBuf;
char* temp;
temp=(char*)(&wTemp);
sBuf = temp ;
sBuf = temp;
sBuf = temp;
sBuf = temp; 和二楼原理一样 绿茶山人 发表于 2013-4-27 13:25 static/image/common/back.gif
楼上正解,这个和数据类型没关吧!
你说的对
串口只管发送数据
至于数据是音频还是视频
那是自己定义的 lxa0 发表于 2013-4-27 19:58 static/image/common/back.gif
你说的对
串口只管发送数据
至于数据是音频还是视频
很多时候是自己想复杂了,做很多无用功!追求高级绚丽的,却把简单基本的东西忘了! LS都说了,用 union ,让浮点数与字符数组共用4节,发完4字节就算一个浮点数,接收端注意大端小端,不同系统可能不一样。 绿茶山人 发表于 2013-4-28 08:22 static/image/common/back.gif
很多时候是自己想复杂了,做很多无用功!追求高级绚丽的,却把简单基本的东西忘了! ...
呵呵
谁都有犯迷糊的时候~~~~~~~~~ 两面是同样的cpu 的话,就直接按字节传就行了。 直接转化成char类型的话会涉及到一个大小端的问题,不过暂时还不用去考虑 六楼第四行 为什么定义的指针是一个单独的变量,在下面可以直接当数组使用,请讲讲。 将浮点数转成字符型就0K了 benqme 发表于 2013-4-29 08:31 static/image/common/back.gif
将浮点数转成字符型就0K了
你指的是以下哪种情况:
[*]1
123.4——>'1' '2' '3' '.' '4'
[*]2
float a=123.4; char b;
b=(char *)&a;
本帖最后由 guxingganyue 于 2013-4-29 13:34 编辑
asnowgober 发表于 2013-4-29 11:49 static/image/common/back.gif
你指的是以下哪种情况:
[*]1
lz明白了没
我还是没有理解
如下面的语句:按照2楼的意思,我怎么输出一个一个的字符 1.23456呢#include <stdio.h>
#include <stdlib.h>
int main()
{
float a=1.23456;
printf("%c ",???);
return 0;
} guxingganyue 发表于 2013-4-29 13:30 static/image/common/back.gif
lz明白了没
我还是没有理解
按这个写就可以了
void comm(char *parr)
{
do
{
SBUF=*parr++;//字符发送
while(!TI);
TI=0;
}while(*parr);
}
main()
{
uchar i;
float a=1.23456;
uchar buff; //字符数组
init();
while(1)
{
sprintf(buff,"%f",a);
comm(buff);
}
} benqme 发表于 2013-4-30 17:19 static/image/common/back.gif
按这个写就可以了
void comm(char *parr)
{
用sprintf函数确实可以实现。
但是怎么用2楼的意思实现呢?float a;
uart_send((char*)&a, sizeof(a));
页:
[1]