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

 找回密码
 立即注册
12
返回列表 发新帖
楼主: wsxzh

手机能收到视频,但是控制不了小车。

[复制链接]
发表于 2013-7-3 13:20:53 | 显示全部楼层
有学习参考价值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-4 00:07:46 | 显示全部楼层
liuviking 发表于 2013-7-3 10:11
1、数据发回上位机这个是测试用的,可以去掉。
2、旧代码是使用ASCII字符来作为命令,新代码是用数据包作为 ...

非常感谢。
如果我现在使用旧代码(ASCII字符来作为命令)作为单片机的代码,
那么我的上位机安卓端那些控制命令要改吗?
还是说依旧是FF000100FF这样的格式
回复 支持 反对

使用道具 举报

发表于 2013-7-4 00:20:59 | 显示全部楼层
wsxzh 发表于 2013-7-4 00:07
非常感谢。
如果我现在使用旧代码(ASCII字符来作为命令)作为单片机的代码,
那么我的上位机安卓端那些 ...

肯定是不兼容的,两边没法通信。必须字符的发送端对字符的接收端,16进制发送端对16进制接收端才能工作。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-4 17:26:33 | 显示全部楼层
liuviking 发表于 2013-7-4 00:20
肯定是不兼容的,两边没法通信。必须字符的发送端对字符的接收端,16进制发送端对16进制接收端才能工作。

明白了,下位机要与上位机的通信协议配对才可以。

代码中void Com_Int(void) interrupt 4这个中断函数里面有点看不懂。
我的理解是这样       
        CommandDatatable[0]=Tempdatatable[0];  //放包头
        CommandDatatable[1]=Tempdatatable[1]; //放类型
        CommandDatatable[2]=Tempdatatable[2]; //放命令
        CommandDatatable[3]=Tempdatatable[3]; //放包尾

这样的话数据位不是丢失了吗?

/********************************************************************
协议规定:
包头  类型位  命令位   数据位    结束位
0XFF   0X00    0X00     0X00      0XFF
各命令说明:
类型位    命令位     数据位   功能
0X00       0X01       0X00    前进
***********************************************************************/

代码:
  1. void Com_Int(void) interrupt 4
  2. {
  3.         uchar temp;
  4.         ES=0; //关串口中断(上位机按下键就会产生中断,此时接受到中断后,就关闭中断,防止同时按下其他键,即一次只能处理1个动作)
  5.     RI=0; //软件清除接收中断,接收数据后会置1
  6.         temp=SBUF;
  7.         if(temp==0XFF && URTAReceivedCount<2)
  8.         {
  9.                 Tempdatatable[0]==0XFF;  //包头                 初始:URTAReceivedCount=0,n=1;
  10.                 URTAReceivedCount++;
  11.         }
  12.         else
  13.         {
  14.                 Tempdatatable[n]=temp;
  15.                 n++;   
  16.         }
  17.         if(URTAReceivedCount==2)//包尾
  18.         {
  19.                 Tempdatatable[0]=0XFF;
  20.                 Tempdatatable[3]=0XFF;
  21.                 n=1;
  22.                 URTAReceivedCount=0;  //组包完毕
  23.                 temp="";
  24.         }
  25.         CommandDatatable[0]=Tempdatatable[0];
  26.         CommandDatatable[1]=Tempdatatable[1];
  27.         CommandDatatable[2]=Tempdatatable[2];
  28.         CommandDatatable[3]=Tempdatatable[3];
  29.         ES=1;//开串口中断
  30. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2013-7-4 18:48:48 | 显示全部楼层
wsxzh 发表于 2013-7-4 17:26
明白了,下位机要与上位机的通信协议配对才可以。

代码中void Com_Int(void) interrupt 4这个中断函数 ...

你看到的这个是较早期的代码,是没有数据位的,所以你需要增加一个数据位进去才能匹配我们现在的控制端。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-6 11:16:03 | 显示全部楼层
liuviking 发表于 2013-7-4 18:48
你看到的这个是较早期的代码,是没有数据位的,所以你需要增加一个数据位进去才能匹配我们现在的控制端。

ok,已成功。
非常感谢king哥的及时解答与无私分享技术的精神!
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 05:17 , Processed in 1.106307 second(s), 15 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

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