智能车制作

标题: K60程序运行卡死 [打印本页]

作者: 盛夏的果实    时间: 2015-5-4 22:13
标题: K60程序运行卡死
开始好好的,一到某个图像就卡死了,无法执行,但是在线运行是同样情况不卡死,只有刷机去之后执行才卡死,最后发现是一一段程序,把他屏蔽就好了,但是我没发现有什么能陷入死循环的错误啊,发上来望诸位大神忙慢看看图像采集完才处理,个变量在处理前都复位了


  if(g_RightEdgeNum>10&&!dip&&!zhijiao)
{       rightguailine=0;leftguailine=0;
                       for(i=2;i< g_RightEdgeNum-2; i ++)                //找拐点
        {
          if((g_LeftEdge[i].y-g_LeftEdge[i+2].y)>19&&(g_LeftEdge[i].y-g_LeftEdge[i-2].y)>19)     // 左拐点
          {
            leftguailine=i;
          }
         else if((g_RightEdge[i+2].y-g_RightEdge[i].y)>19&&(g_RightEdge[i-2].y-g_RightEdge[i].y)>19) //右拐点
          {
            rightguailine=i;
          }
          if(rightguailine&&leftguailine)
            break;
        }
            if(rightguailine<33&&rightguailine>0&&g_RightEdge[rightguailine].y>1&&g_LeftEdge[rightguailine].y==0)   //右拐点
            {               
                for(i=rightguailine+1;i<g_RightEdgeNum; i ++)
                {
                  if(g_LeftEdge[i].y>15&&g_LeftEdge[i-1].y==0&&g_RightEdgeNum-i>2&&!r_buxian)//跃变
                                  {
                                          r_buxian=1;break;
                                  }                                       

                     else if(twocoverline==0&&!r_buxian)
                                  {
                                    left=0;
                                        for(i=0;i<g_RightEdgeNum;i++)
                                        {
                                                if(g_LeftEdge[i].y==0)
                                                        left++;
                                                else
                                                        break;
                                        }
                                        if(left-rightguailine>4)
                                        {        r_buxian=1;break;}
                                        else
                                                r_buxian=0;
                                  }
                }
                 if(twocoverline>0&&!r_buxian)
                {
                 if(twocoverline-rightguailine<20&&rightguailine>0&&g_LeftEdge[twocoverline-1].y==0&&g_RightEdge[twocoverline-1].y==MAX_VIDEO_POINT-1)
                    {
                      r_buxian=1;
                    }
                 else
                   r_buxian=0;
                }

            }        


              if(r_buxian)
              {
                int a=0;
                ten=1;
              for(i=rightguailine;i>=0;i--)
              {
                if(g_RightEdge[i].y==MAX_VIDEO_POINT-1)
                {
                               
                  a=i;

                  break;
                }
                                else
                                        a=0;
              }
              righterror=(g_RightEdge[a].y-g_RightEdge[rightguailine].y)/( rightguailine-a);
              lefterror=g_LeftEdge[rightguailine].y-g_LeftEdge[rightguailine-1].y;
              for(i= rightguailine+1;i<g_RightEdgeNum;i++)
              {
                g_LeftEdge[i].y=g_LeftEdge[i-1].y+lefterror;
                g_RightEdge[i].y=g_RightEdge[i-1].y-righterror;

                if(g_LeftEdge[i].y<0)
                {
                  g_LeftEdge[i].y=0;
                }
                                if(g_RightEdge[i].y<=0)
                                {
                  g_RightEdge[i].y=0;
                  g_RightEdgeNum=i;
                                  break;
                                }
              }            

            }

           if(leftguailine<28&&leftguailine>0&&g_RightEdge[leftguailine].y==MAX_VIDEO_POINT-1)              //左拐点
            {            
                for(i=leftguailine+1;i<g_RightEdgeNum; i ++)
                {
                  if(MAX_VIDEO_POINT-g_RightEdge[i].y>15&&g_RightEdge[i-1].y==MAX_VIDEO_POINT-1&&g_RightEdgeNum-i>2&&!l_buxian)  //跃变
                                  {
                                          
                                          l_buxian=1;break;
                                  }
                 else if(twocoverline==0&&!l_buxian)
                  {
                    right=0;
                                 
                             for(i=0;i<g_RightEdgeNum;i++)
                                        {
                                                if(g_RightEdge[i].y==MAX_VIDEO_POINT-1)
                                                        right++;
                                                else
                                                        break;
                                        }
                                        if(right-rightguailine>4)
                                        {        l_buxian=1;break;}
                                        else
                                                l_buxian=0;
                  }                  
                }

                if(twocoverline>0&&!l_buxian)
                {
                    if(twocoverline-rightguailine<20&&leftguailine>0&&g_LeftEdge[twocoverline-1].y==0&&g_RightEdge[twocoverline-1].y==MAX_VIDEO_POINT-1)
                    {
                      l_buxian=1;
                    }
                    else
                    l_buxian=0;
                }              
              }


              if(l_buxian)
              {
                int a=0;
                ten=1;
              for(i=leftguailine;i>=0;i--)
              {
                if(g_LeftEdge[i].y==0)
                {
                  a=i;
                  break;
                }
                  else
                          a=0;
              }

              lefterror=(g_LeftEdge[leftguailine].y-g_LeftEdge[a].y)/( leftguailine-a);
               righterror=g_RightEdge[leftguailine].y-g_RightEdge[leftguailine-1].y;
              for(i= leftguailine+1;i<g_RightEdgeNum;i++)
              {
                g_LeftEdge[i].y=g_LeftEdge[i-1].y+lefterror;
                g_RightEdge[i].y=g_RightEdge[i-1].y+righterror;
                if(g_RightEdge[i].y>MAX_VIDEO_POINT-1)
                  g_RightEdge[i].y=MAX_VIDEO_POINT-1;
                if(g_LeftEdge[i].y>=MAX_VIDEO_POINT-1)
                {
                  g_LeftEdge[i].y=MAX_VIDEO_POINT-1;
                  g_RightEdgeNum=i;
                  break;
                }
              }            

            }

}




作者: 盛夏的果实    时间: 2015-5-4 22:14
自己先顶一下
作者: 盛夏的果实    时间: 2015-5-4 22:23
就是这种情况,左右晃动小车,画面就会卡在一个地方,复位后直接不显示,舵机等其他程序好像也无法执行
作者: 盛夏的果实    时间: 2015-5-4 22:29
  怎么没人啊
作者: 盛夏的果实    时间: 2015-5-5 10:09
心冷了,没人遇到这种情况吗?





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