logo资料库

基于MFC的无线串口调试工具-哈工大(威海).pdf

第1页 / 共1页
资料共1页,全文预览结束
的无线串口调试工具-哈工大(威海) 哈工大(威海) 基于基于MFC的无线串口调试工具 这是一个基于CSerialPort类的串口发送接收程序,比较完美适应半双工无线发射设备。 MFC是边学边做,优化 度不高,但基本可以满足使用要求 大家使用的时候修改CSerialPortTestDlg::OnComm()来改变接收协议 修改 CSerialPortTestDlg::OnButtonSend() 改变发送协议 下位机按照上位机的协议写串口发送接收协议即可 示例: void SCI_Send(void) { //发送 激光检测信息 unsigned char sci[17]={128},i; sci[1]=(unsigned char)(PWMDTY23/128); sci[2]=PWMDTY23%128; sci[3]=PWMDTY0%128; sci[4]=((PWMDTY0/128)<<6)|(Laser_Rec/64); sci[5]=Laser_Rec%64 ; sci[6]=(unsigned char)(Laser_Rec2/64);//小前瞻 sci[7]=Laser_Rec2%64 ; sci[8]=(unsigned char)(CarSpeed/128); sci[9]=CarSpeed%128; sci[10]=Steer_PD.p1; sci[11]=Steer_PD.p2; sci[12]=Steer_PD.d1; sci[13]=Steer_PD.d2; sci[14]=Value; sci[15]=Value2; for(i=0;i<16;i++) { while(!SCI0SR1_TDRE); SCI0DRL=sci[i]; //标记位 } } /*************************************************************/ /* 串口接收函数 */ /*************************************************************/ unsigned char SCI_receive(void) { while(!SCI0SR1_RDRF); //等待发 送数据寄存器满 return(SCI0DRL); } /*************************************************************/ /* 串口中断接收函数 */ /*************************************************************/ #pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt void receivedata(void) { if (SCI_receive()>127)//if (SCI0DRL>127) { SCI_Count=0; buf[SCI_Count]=SCI0DRL; } else { SCI_Count++; buf[SCI_Count]=SCI0DRL; if(SCI_Count==8) { //PWMDTY23=buf[1]*128+buf[2]; //PWMDTY0=buf[3]*128+buf[4]; //PWMDTY1=buf[3]*128+buf[4]; Steer_PD.p1=buf[5]; Steer_PD.p2=buf[6]; Steer_PD.d1=buf[7]; Steer_PD.d2=buf[8]; } if(SCI_Count>8) SCI_Count=0; } }
分享到:
收藏