小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 6265|回复: 1

求助! 小车菜鸟问题多!!!

[复制链接]
发表于 2013-5-2 20:35:22 | 显示全部楼层 |阅读模式
大家好,最近我做做小车碰到两个问题想请教一下。希望大神们能帮我解决一下!
1.wifi小车下位机部分都已经做好了,用论坛的手机Android操控小车也成功,但是为什么我用论坛里的上位机就没法使小车动啊?上位机的视频是可以返回的。
我的下位机程序是这样改的:
#include<reg52.h>
#include<math.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar Buffer =0;      //从串口接收的数据
uint i=0,j,URTAReceivedCount=0,n=1;
uchar flag=0;
uchar data Tempdatatable[5],CommandDatatable[5];//数据包
sbit ENA=P2^0;
sbit ENB=P2^1;
sbit Left_Positive=P2^2;
sbit Left_Negative=P2^3;
sbit Right_Positive=P2^4;
sbit Right_Negative=P2^5;
/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
/***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
        uchar x,j;
        for(j=0;j<i;j++)
        for(x=0;x<=148;x++);
}
/********************************************************************
协议规定:
包头  类型位  数据位    结束位
0XFF     1                  1       0XFF
各命令说明:
类型位   数据位    功能
0X00             0X01    前进
0X00       0X02    后退
0X00       0X03    左转
0X00       0X04    右转
0X00       0X00    停止

/********************************************************************
* 名称 : Com_Int()
* 功能 : 串口中断子函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Com_Int(void) interrupt 4
{
        uchar temp;
        ES=0; //关串口中断
    RI=0; //软件清除接收中断
        temp=SBUF;
   if(temp==0XFF && URTAReceivedCount<2)
  {  
         Tempdatatable[0]=0xFF;  //包头
           URTAReceivedCount++;
  }
  else
  {
     Tempdatatable[n]=temp;
     n++;   
  }
  if(URTAReceivedCount==2)//包尾
  {
     Tempdatatable[0]=0XFF;
     Tempdatatable[4]=0XFF;
     n=1;
     URTAReceivedCount=0;  //组包完毕
  //temp="";
  }
  CommandDatatable[0]=Tempdatatable[0];
  CommandDatatable[1]=Tempdatatable[1];
  CommandDatatable[2]=Tempdatatable[2];
  CommandDatatable[3]=Tempdatatable[3];
  CommandDatatable[4]=Tempdatatable[4];
        ES=1;//开串口中断
}
/********************************************************************
* 名称 : Com_Init()
* 功能 : 串口初始化,晶振11.0592,波特率9600,使能串口中断
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Com_Init(void)
{
     TMOD = 0x21;
     PCON = 0x00;
     SCON = 0x50;   
     TH1 = 0xFd;    //设置波特率 9600
     TL1 = 0xFd;
     TR1 = 1;  //启动定时器1
  
         ES = 1;  //开串口中断
         EA = 1;  //开总中断
         IT0=0;
     EX0=1;
}
/*******************************************************************
* 名称 :Moto_Forward()
* 功能 : 电机1、2启动,都是前进,整车表现为前进。
* 输入 : 无
* 输出 : 无
***********************************************************************/
/********************************************************************
* 名称 :Moto_Forward()
* 功能 : 电机1、2启动,都是前进,整车表现为前进。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Moto_Forward()
{
        ENA=1;
        ENB=1;
        Right_Negative=0;
        Left_Positive=0;
        Left_Negative=1;
        Right_Positive=1;
       
        Delay_1ms(100);
}
/********************************************************************
* 名称 :Moto_Backward()
* 功能 : 电机1、2启动,都是后退,整车表现为后退。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Moto_Backward()
{
        ENA=1;
        ENB=1;
        Left_Positive=1;
        Right_Positive=0;
        Right_Negative=1;
        Left_Negative=0;
       
        Delay_1ms(100);
}
/********************************************************************
* 名称 :Moto_TurnLeft()
* 功能 : 电机1后退,电机2前进,整车表现为左转。
* 输入 : 无
* 输出 : 无
*****************************  ******************************************/
void Moto_TurnLeft()
{
        ENA=1;
        ENB=1;
        Left_Negative=1;
        Right_Positive=0;
        Right_Negative=1;
        Left_Positive=0;
       
        Delay_1ms(100);
}
/********************************************************************
* 名称 :Moto_TurnRight()
* 功能 : 电机1前进,电机2后退,整车表现为右转。
* 输入
: 无
* 输出 : 无
***********************************************************************/
void Moto_TurnRight()
{
        ENA=1;
        ENB=1;
        Right_Negative=0;
        Left_Negative=0;
        Left_Positive=1;
        Right_Positive=1;
       
        Delay_1ms(100);
}
/********************************************************************
* 名称 :Moto_Stop()
* 功能 : 电机1停止,电机2停止,整车表现为停止。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Moto_Stop()
{
        ENA=0;
        ENB=0;
        Right_Negative=0;
        Left_Negative=0;
        Left_Positive=0;
        Right_Positive=0;
       
        Delay_1ms(100);
}

void main()
{   
  P2= 0x00;      
  Delay_1ms(200);
  Com_Init();//串口初始化
   
  while(1)
  {
                   if(CommandDatatable[0]==0XFF && CommandDatatable[4]==0XFF)
              {
           switch (CommandDatatable[1])      //根据键值不同,执行不同的内容
             {
                   case 0X00:  //类型位0X00,表明是控制数据包,进入控制数据case
   
                      switch(CommandDatatable[3])  //根据数据位的值来进行选择执行不同的动作
                           {
                             case 0x00:Moto_Stop();break;
                             case 0x01:Moto_Forward();break;
                             case 0x02:Moto_Backward();break;
                             case 0x03:Moto_TurnLeft();break;
                             case 0x04:Moto_TurnRight();break;
                            }
                                         break;
  default :break;
                           }
                   }
  }
}

2.如上所述的下位机程序,我始终没搞清楚串口中断里面  temp="";   这句话是做什么用的,有它就有2个warnings,而且在用电脑上位机的时候还会提示wifi信号弱,可能丢失连接。 但是 注释了就0errors 0warnings,并且上位机使用不会出现上述提醒。请问这是什么问题啊?

3.我想做一个体感控制的wifi小车,现在基本上下位机什么的都做完了 ,然后就差上位机了,由于看了一下淘宝上的kinect摄像头太贵了,穷人买不起啊!所以想自己做一个上位机来进行图像处理,但是我对图像处理一无所知 (请原谅我的无知==~!)不知是否有大神做过图像处理的能提供几本好书关于这个的,或者有过类似图像处理上位机的大神交流一下经验呢?{:2_38:}
回复

使用道具 举报

发表于 2013-5-3 00:20:05 | 显示全部楼层
1、上位机的指令设置是否正确?
2、temp=“”是清空缓存,这里写得不太对,char类型变量不应该这样清空。
3、图像。。。还真没有。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-23 04:33 , Processed in 1.093724 second(s), 20 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

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