通讯接口通讯和底层决策文档.doc

通讯接口通讯和底层决策文档.doc

ID:55759653

大小:47.50 KB

页数:9页

时间:2020-06-06

通讯接口通讯和底层决策文档.doc_第1页
通讯接口通讯和底层决策文档.doc_第2页
通讯接口通讯和底层决策文档.doc_第3页
通讯接口通讯和底层决策文档.doc_第4页
通讯接口通讯和底层决策文档.doc_第5页
资源描述:

《通讯接口通讯和底层决策文档.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、通讯和底层决策文档根据Robocup系统的四个子系统的分类,串口通讯的任务是将决策系统确定的每个机器人的轮速发送出去.考虑到SendCommand()是每个机器人的在BasicAct()中调用的函数,所以把通讯的相关函数放在Player类中,m_hComm存在于程序运行的始终,并与实例无关,设为静态变量,InitComm()需操作m_hComm,故设为静态函数,其它与实例无关的函数也定义成静态函数。//inPlayer.hstaticHANDLEm_hComm;voidSendCommand();staticintInitCo

2、mm(intComm_num,intbaud);staticBOOLWriteABuffer(char*lpBuf,DWORDdwToWrite);staticvoidSendCommandofAll();staticvoidSendSingleCommand(constunsignedcharcommand);SendCommand()为每个机器人单独调用的函数,作用是将设置到该机器人(g_MyTeam[i])中去的速度m_vL,m_vR通过串口发送出去。其他各函数的功能及有关说明见函数中的注释。//inPlayer.cpp

3、//功能:初始化串口//参数:Comm串口号,1或2;baud::波特率//返回:若成功返回1,失败则返回-1intPlayer::InitComm(intComm_num,intbaud){CStringstrCommNum;if(1==Comm_num)strCommNum="COM1";elsestrCommNum="COM2";m_hComm=CreateFile(strCommNum,GENERIC_READ

4、GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0

5、);if(m_hComm==INVALID_HANDLE_VALUE)//){AfxMessageBox("串口初始化失败");return-1;}//erroropeningport;abort//设置DCB结构DCBdcb;FillMemory(&dcb,sizeof(dcb),0);dcb.DCBlength=sizeof(dcb);CStringstr;CStringstr1;str1.Format("%d",baud);str=str1+",n,8,1";BOOLb=BuildCommDCB(str,&dcb);//

6、将参数写进dcbif(!b)//若失败{AfxMessageBox("buildcommdcbfailed!");return-1;}if(!SetCommState(m_hComm,&dcb))//根据dcb设置串口状态,若失败{AfxMessageBox("串口初始化失败!");return-1;}return1;}//功能:先设定命令字command,再用SendSingleCommand(command)将该命令字发送出去//命令为1个字节:最高三位小车编号001-100为1(g_MyTeam[0])到4(g_MyTe

7、am[3])号,000为5号第四位为左右轮标识:0:左,1:右轮第五位为速度方向:0:向前;1:向后最低三位为速度大小:000-111从小到大八档速度//参数:无//返回:无voidPlayer::SendCommand()//将单个小车的速度发送出去{unsignedcharcommand;//一个字节unsignedchartemp;//暂存command//先发左轮再发右轮for(unsignedcharj=0;j<=1;j++)//j=0为左轮,j=1为右轮{//设定小车编号if(this->Get_Num()==4)

8、//为5号时发送000temp=0;else{temp=this->Get_Num()+1;temp<<=5;//左移5位得到高三位,小车编号}//设定左右轮标识unsignedcharcharv;charv=(unsignedchar)j<<4;temp=temp

9、charv;//第四位左右轮//设定速度方向unsignedcharmask;intt=1;if(j==0){mask=((*this).Get_vL()<0?(t<<3):0);}else//j==1{mask=((*this).Get_vR()<0?(t<<3

10、):0);}temp=temp

11、mask;//第五位速度方向,速度向后为1,向前为0//设定速度大小intm_floor=0;//0-7if(j==0)//分别设置速度,最低三位{m_floor=(int)floor((fabs((*this).Get_vL())/(MAX_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。