发新帖我要提问
12
返回列表
打印

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

[复制链接]
楼主: HYTERIA
手机看帖
扫描二维码
随时随地手机跟帖
21
10299823| | 2017-7-27 23:25 | 只看该作者 回帖奖励 |倒序浏览
format为字符串口发送。

使用特权

评论回复
22
kmzuaz| | 2017-7-27 23:25 | 只看该作者
printf(f%)

使用特权

评论回复
23
51xlf| | 2017-7-27 23:25 | 只看该作者
发送整数就简单多了。

使用特权

评论回复
24
chenci2013| | 2017-7-27 23:25 | 只看该作者
用 printf() 函数输出 double 类型的变量时,转换说明中的转换字符(占位符)可用 %lf 或%f,皆能正确输出,且输出结果一致。

使用特权

评论回复
25
HYTERIA|  楼主 | 2017-7-28 09:07 | 只看该作者
chenci2013 发表于 2017-7-27 23:25
用 printf() 函数输出 double 类型的变量时,转换说明中的转换字符(占位符)可用 %lf 或%f,皆能正确输出, ...

什么意思啊,没大懂,比较小白

使用特权

评论回复
26
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 ]  );   //// 逐个字节发送

  }

使用特权

评论回复
27
gujiamao12345| | 2017-7-28 11:52 | 只看该作者
强转成字符串 收到再强转成double

使用特权

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

使用特权

评论回复
评论
xmar 2017-7-28 16:55 回复TA
对8位单片机而言,Keil是不支持double数据类型的。还是用IAR吧! 
xmar 2017-7-28 16:53 回复TA
赞!熟悉C语言数据结构用第3种方法最快。不会搞错的。 
29
yklstudent| | 2017-7-29 09:22 | 只看该作者
为什么要转换?直接发啊

使用特权

评论回复
30
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:直接将该数转成字符串,可能会多占几个字节。

使用特权

评论回复
31
HYTERIA|  楼主 | 2017-7-29 15:40 | 只看该作者
cehuafan 发表于 2017-7-27 23:25
都转换为整数然后发送。

我把它转成long型数据了,但要怎么传呀,我穿的都是乱码

使用特权

评论回复
32
HYTERIA|  楼主 | 2017-7-29 15:41 | 只看该作者
51xlf 发表于 2017-7-27 23:25
发送整数就简单多了。

我现在发送整数失败了,一个long型数据

使用特权

评论回复
33
HYTERIA|  楼主 | 2017-7-29 15:42 | 只看该作者
chenci2013 发表于 2017-7-27 23:25
用 printf() 函数输出 double 类型的变量时,转换说明中的转换字符(占位符)可用 %lf 或%f,皆能正确输出, ...

大神能给一段例程参考一下吗?

使用特权

评论回复
34
HYTERIA|  楼主 | 2017-7-29 15:44 | 只看该作者
123654789 发表于 2017-7-28 09:38
楼主是想把double型数据,逐个字节发送出去吧

不知道是否对

谢谢,我试一试

使用特权

评论回复
35
闪烁的泪光| | 2018-12-3 16:47 | 只看该作者
zhangmangui 发表于 2017-7-26 20:16
扩大后上发 接收到后再除以10000  如果一个字节不够 考虑两个字节

两个字节是怎么设计,麻烦说的详细点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则