dsp28335怎样使用sci发送一个double类型的数据

[复制链接]
6259|36
10299823 发表于 2017-7-27 23:25 | 显示全部楼层
format为字符串口发送。
kmzuaz 发表于 2017-7-27 23:25 | 显示全部楼层
printf(f%)
51xlf 发表于 2017-7-27 23:25 | 显示全部楼层
发送整数就简单多了。
chenci2013 发表于 2017-7-27 23:25 | 显示全部楼层
用 printf() 函数输出 double 类型的变量时,转换说明中的转换字符(占位符)可用 %lf 或%f,皆能正确输出,且输出结果一致。
 楼主| HYTERIA 发表于 2017-7-28 09:07 | 显示全部楼层
chenci2013 发表于 2017-7-27 23:25
用 printf() 函数输出 double 类型的变量时,转换说明中的转换字符(占位符)可用 %lf 或%f,皆能正确输出, ...

什么意思啊,没大懂,比较小白
123654789 发表于 2017-7-28 09:38 | 显示全部楼层
本帖最后由 123654789 于 2017-7-28 09:39 编辑

楼主是想把double型数据,逐个字节发送出去吧

不知道是否对

   union EIGHT_DOUBLE_UINT_123JJ
   {

     unsigned  char  GF[ 8 ] ;

     double  GH;

   };

  void  EIGHT_DOUBLE(  double  LX   )
  {
      
   union  EIGHT_DOUBLE_UINT_123JJ     L_temp;

   L_temp.GH = LX ;

   printf( " %x "  ,  L_temp.GF[ 0 ]  );  //// 逐个字节发送
   printf( " %x "  ,  L_temp.GF[ 1 ]  );   //// 逐个字节发送
   printf( " %x "  ,  L_temp.GF[ 2 ]  );   //// 逐个字节发送
   printf( " %x "  ,  L_temp.GF[ 3 ]  );    //// 逐个字节发送

   printf( " %x "  ,  L_temp.GF[ 4 ]  );    //// 逐个字节发送
   printf( " %x "  ,  L_temp.GF[ 5 ]  );    //// 逐个字节发送
   printf( " %x "  ,  L_temp.GF[ 6 ]  );   //// 逐个字节发送
   printf( " %x "  ,  L_temp.GF[ 7 ]  );   //// 逐个字节发送

  }
gujiamao12345 发表于 2017-7-28 11:52 | 显示全部楼层
强转成字符串 收到再强转成double
tomzbj 发表于 2017-7-28 15:29 | 显示全部楼层
几种方式
1. 乘以1000,10000之类,然后按整型发送,接收时再除以1000、10000
这种方式最可靠。
2. 转成字符串,接收端再转回来。不过sprintf、sscanf的开销大了点。
3. 直接二进制发送,可以用指针强制转换,或者union。虽然现在大部分设备都是IEEE754的标准,但是万一有一边的浮点数标准不一样,这么弄就衰了。

评论

对8位单片机而言,Keil是不支持double数据类型的。还是用IAR吧!  发表于 2017-7-28 16:55
赞!熟悉C语言数据结构用第3种方法最快。不会搞错的。  发表于 2017-7-28 16:53
yklstudent 发表于 2017-7-29 09:22 | 显示全部楼层
为什么要转换?直接发啊
ta1ent 发表于 2017-7-29 11:46 | 显示全部楼层
方法1.用union,把double的存储空间自动转换成char型。
union
{
   char c1, c2, c3, c4;
   double x;
}

接收端定义相同的数据结构。发送端把数据送入x, 发送c1 c2 c3 c4.接受端收到后,存入c1,c2,c3,c4,读取x.

方法2:直接将该数转成字符串,可能会多占几个字节。
 楼主| HYTERIA 发表于 2017-7-29 15:40 | 显示全部楼层
cehuafan 发表于 2017-7-27 23:25
都转换为整数然后发送。

我把它转成long型数据了,但要怎么传呀,我穿的都是乱码
 楼主| HYTERIA 发表于 2017-7-29 15:41 | 显示全部楼层
51xlf 发表于 2017-7-27 23:25
发送整数就简单多了。

我现在发送整数失败了,一个long型数据
 楼主| HYTERIA 发表于 2017-7-29 15:42 | 显示全部楼层
chenci2013 发表于 2017-7-27 23:25
用 printf() 函数输出 double 类型的变量时,转换说明中的转换字符(占位符)可用 %lf 或%f,皆能正确输出, ...

大神能给一段例程参考一下吗?
 楼主| HYTERIA 发表于 2017-7-29 15:44 | 显示全部楼层
123654789 发表于 2017-7-28 09:38
楼主是想把double型数据,逐个字节发送出去吧

不知道是否对

谢谢,我试一试
闪烁的泪光 发表于 2018-12-3 16:47 | 显示全部楼层
zhangmangui 发表于 2017-7-26 20:16
扩大后上发 接收到后再除以10000  如果一个字节不够 考虑两个字节

两个字节是怎么设计,麻烦说的详细点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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