智能车制作

标题: 串口接收数据不正常,显示Na是什么意思? [打印本页]

作者: justlxy    时间: 2014-9-13 21:46
标题: 串口接收数据不正常,显示Na是什么意思?
如题!串口接收数据不正常,显示Na是什么意思?

作者: justlxy    时间: 2014-9-13 21:48
附图
作者: Quixote    时间: 2014-9-13 22:51
这个Na一般是指出现除法错误之类的,这个只能去看源代码才能找出错误。

作者: q5974    时间: 2014-9-13 23:51
3l正解
作者: justlxy    时间: 2014-9-14 09:44
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");

}



作者: Quixote    时间: 2014-9-14 11:57
justlxy 发表于 2014-9-14 09:44
附上程序的相关部分:
double PID_Compute(void)
{

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

作者: justlxy    时间: 2014-9-14 16:37
Quixote 发表于 2014-9-14 11:57
我是说、这个错误存在于上位机代码中……

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


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





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2