智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1898|回复: 6
打印 上一主题 下一主题

[编程类] 串口接收数据不正常,显示Na是什么意思?

[复制链接]

5

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1562
威望
699
贡献
619
兑换币
463
注册时间
2014-7-13
在线时间
122 小时
毕业学校
江苏科技大学
跳转到指定楼层
1#
发表于 2014-9-13 21:46:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5贡献
如题!串口接收数据不正常,显示Na是什么意思?

回复

使用道具 举报

5

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1562
威望
699
贡献
619
兑换币
463
注册时间
2014-7-13
在线时间
122 小时
毕业学校
江苏科技大学
2#
 楼主| 发表于 2014-9-13 21:48:59 | 只看该作者
附图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

162

主题

2048

帖子

5

精华

超级版主

岳麓山没有车神

Rank: 10Rank: 10Rank: 10

积分
14920

论坛元老奖章优秀会员奖章活跃会员奖章论坛骨干奖章在线王奖章优秀版主奖章资源大师奖章

QQ
威望
6285
贡献
5963
兑换币
2581
注册时间
2013-11-14
在线时间
1336 小时
3#
发表于 2014-9-13 22:51:12 | 只看该作者
这个Na一般是指出现除法错误之类的,这个只能去看源代码才能找出错误。
回复

使用道具 举报

9

主题

499

帖子

0

精华

常驻嘉宾

领路者

Rank: 8Rank: 8

积分
5210

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
2393
贡献
653
兑换币
1768
注册时间
2014-1-14
在线时间
1082 小时
毕业学校
cqu
4#
发表于 2014-9-13 23:51:53 | 只看该作者
3l正解
回复

使用道具 举报

5

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1562
威望
699
贡献
619
兑换币
463
注册时间
2014-7-13
在线时间
122 小时
毕业学校
江苏科技大学
5#
 楼主| 发表于 2014-9-14 09:44:25 | 只看该作者
Quixote 发表于 2014-9-13 22:51
这个Na一般是指出现除法错误之类的,这个只能去看源代码才能找出错误。

附上程序的相关部分:
double PID_Compute(void)
{

//   unsigned long now = millis();         
//   double timeChange = (double)(now - lastTime);
   double timeChange,error,dErr;

   /*How long since we last calculated*/
   timeChange = Timer0_GetTime();

   Input = GetAngle_YAW();

   /*Compute all the working error variables*/
   error = Setpoint - Input;
   errSum += (error * timeChange);
   dErr = (error - lastErr) / timeChange;

   /*Compute PID Output*/
   Output = kp * error + ki * errSum + kd * dErr;

   /*Remember some variables for next time*/
   lastErr = error;
//   lastTime = now;

        return Output;
}


void SendPID_EulertoUart(void)
{       
        char temp[10];                         //临时变量定义,用于转换成字符串
        temp_yaw_pid = PID_Compute();
        if(MPU6050_testConnection() == 1)
        {
                sprintf(temp,"%0.2f",temp_yaw_pid);
                SendString("temp_yaw_pid = ");
                SendString(temp);
                SendString("\r\n");
                memset(temp,0,sizeof(temp) / sizeof(char));
        }
        else
                SendString("MPU6050 ERROR!\r\n");

}


回复

使用道具 举报

162

主题

2048

帖子

5

精华

超级版主

岳麓山没有车神

Rank: 10Rank: 10Rank: 10

积分
14920

论坛元老奖章优秀会员奖章活跃会员奖章论坛骨干奖章在线王奖章优秀版主奖章资源大师奖章

QQ
威望
6285
贡献
5963
兑换币
2581
注册时间
2013-11-14
在线时间
1336 小时
6#
发表于 2014-9-14 11:57:04 | 只看该作者
justlxy 发表于 2014-9-14 09:44
附上程序的相关部分:
double PID_Compute(void)
{

我是说、这个错误存在于上位机代码中……
回复

使用道具 举报

5

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1562
威望
699
贡献
619
兑换币
463
注册时间
2014-7-13
在线时间
122 小时
毕业学校
江苏科技大学
7#
 楼主| 发表于 2014-9-14 16:37:35 | 只看该作者
Quixote 发表于 2014-9-14 11:57
我是说、这个错误存在于上位机代码中……

问题找到了,实际上发送的是NaN,但是由于sprintf函数中的格式限制符的原因,所以只显示了Na。
关于NaN网上有相关的解释,
找到了一篇不错的文章:
http://blog.csdn.net/yuanlulu/article/details/6236330


但是我在我的程序当中还未找到,相关的错误,还在纠结中!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 02:04 , Processed in 0.052877 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表