⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs485.c

📁 单片机程序,和上位机通讯,采集下位机的射频信号的功率,接收上位机的指令并向上位机回送采集到的下位机的信息,我花了一个月才开发出来的.绝对真实,可靠性强.
💻 C
字号:

#include "fDETDeclare.H"
#include "DETConst.H"
#include "RS485BUF_DEF.H"
void fRS485Analysis(void)
{
    unsigned char CrcLen,CrcL,CrcH;
    unsigned char *Crcbuf, DETModule;
    EPCS=0;                      //喂狗
    EPCS=1;
	if(RS485Buffer[3]==0x10){
		if((RS485Buffer[1] == MODULETYPE) &&
		(RS485Buffer[6]==MODULETYPE)){   //模块功能不容许改变
		    ResetFlag=0;
		    InitCounter=0;
		    ResetFlag1=0;
        	fSetModuleAddr();
            return;
         }
		 else{    //否则发命令数据错
                  //填写命令号
		 	RS485Buffer[4]=0x03;                                                  //填写应答标志
			RS485Buffer[5]=0;
            TransmitAck();
            return;
		 }
    }


    DETModule= RS485Buffer[2]&0xf7;
	if((RS485Buffer[1] == MODULETYPE)
	&&( DETModule==(MODULEADDRESS&0xf7))) {
			//地址匹配,分析该命令 
		ResetFlag=0;
		InitCounter=0;
		ResetFlag1=0;
		Crcbuf=RS485Buffer+1;        //校正的命令单元的起始地址
		CrcLen=RS485Buffer[5]+5;     //命令单元长度
		Crc1021(Crcbuf,CrcLen,&CrcH,&CrcL);
             
		if((RS485Buffer[CrcLen+1]==CrcL)
		&&(RS485Buffer[CrcLen+2]==CrcH)){
				//CRC校验正确,分析命令
				//ATT命令处理
			switch(RS485Buffer[3]) {
                case 0x40:
				    TESTFLAG=1;
					fSetDetCalBase();//设置功率校准基点
					break;
				case 0x41:
				     TESTFLAG=1;
					fReadDetCalBase();//读功率校准基准
					break;
				case 0x11:
				    TESTFLAG=0;
				    fDETStateCheck();   //查表
					break;
				case 0x12:
				     TESTFLAG=0;
                     fModuleVersionCheck();
				default://命令号错
						RS485Buffer[4]=0x02;                                                  //填写应答标志
				        RS485Buffer[5]=0;                                                     //填写命令长度
    			        TransmitAck();
						break;
        		            }

			}

			else {

				//发CRC错误应答命令
				RS485Buffer[4]=0x01;                                                  //填写应答标志
                RS485Buffer[5]=0;
                TransmitAck();

		}

	}
	else 
		REN = 1;

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -