的无线串口调试工具-哈工大(威海)
哈工大(威海)
基于基于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; } }