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

📄 downcmd.cpp

📁 湖北水文黄石试点集中器代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{   
	  int RcvIvtime;
	  unsigned char checksum = 0, len, datalen;
	  unsigned char cs_bytecount;
	  unsigned char i, k ;	
	  unsigned char PutOutTemBuff[50];	
    char string[10];
	  
	  PutOutTemBuff[0]= 0x68;
	  
	  PutOutTemBuff[1]=	DTUAddress[0];
	  PutOutTemBuff[2]=	DTUAddress[1];
	  PutOutTemBuff[3]=	CmdDataBuf[3];    
	   
	  PutOutTemBuff[4]=	0x68;        
	  
	  PutOutTemBuff[5]= 0x04;  //功能码 
	  
	  PutOutTemBuff[6]= 0x03;  //数据区的长度3个字节
    
    PutOutTemBuff[7]= CmdDataBuf[7]; 
    PutOutTemBuff[8]= CmdDataBuf[8]; 
    PutOutTemBuff[9]= CmdDataBuf[9];
	    	
/////////////////////////////计算校验和  
		cs_bytecount = PutOutTemBuff[6]+ 7;
		for( i=0; i < cs_bytecount; i++ )
	 	checksum += PutOutTemBuff[i];   

	 	
	 	PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
	 	
	 	PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR;  //帧结束标志	
	 	
	 	PutOutTemBuff[cs_bytecount+2]='\0';
	 	
	 	SendDataToCOM( ComIdx, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令 
	 	
}

void Send_Sc_to_GatherMachine(  unsigned char *CmdDataBuf ) 
{   
	  int           num_of_thr;
	  unsigned char checksum = 0;
	  unsigned char cs_bytecount;
	  unsigned char i, j;	
	  unsigned char PutOutTemBuff[150];	
	  
	  PutOutTemBuff[0]= 0x68;
	  
	  PutOutTemBuff[1]=	DTUAddress[0];
	  PutOutTemBuff[2]=	DTUAddress[1];
	  PutOutTemBuff[3]=	CmdDataBuf[3];   
	   
	  PutOutTemBuff[4]=	0x68;        
	  
	  PutOutTemBuff[5]= 0x06;  //功能码 	  
    
    PutOutTemBuff[7]= CmdDataBuf[14];
    PutOutTemBuff[8]= CmdDataBuf[15];
    
    num_of_thr = (CmdDataBuf[14]-48)*10 + CmdDataBuf[15]-48; //把十进制字符型转换成十进制整型,门限条件的个数
    
    for(i=0; i<num_of_thr; i++)
      for(j=0; j<10; j++)
       PutOutTemBuff[9+10*i+j] = CmdDataBuf[16+10*i+j];
		  
	  PutOutTemBuff[6]= 2 + num_of_thr*10;  //数据区的长度3个字节  	
	  
/////////////////////////////计算校验和  
		cs_bytecount = PutOutTemBuff[6]+ 7;
		for( i=0; i < cs_bytecount; i++ )
	 	checksum += PutOutTemBuff[i];   

	 	
	 	PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
	 	
	 	PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR;  //帧结束标志	
	 	
	 	PutOutTemBuff[cs_bytecount+2]='\0';
	 	
	 	SendDataToCOM( ComIdx, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令 
	 	
}

void Send_Cmd_to_GatherMachine( unsigned char datatype, unsigned char CtrlCode )
{
	  unsigned char checksum = 0, datalen;
	  unsigned char cs_bytecount;
	  unsigned char i ;	
	  unsigned char PutOutTemBuff[50];	

	  
	  PutOutTemBuff[0]= 0x68;
	  
	  PutOutTemBuff[1]=	DTUAddress[0];
	  PutOutTemBuff[2]=	DTUAddress[1];
	  PutOutTemBuff[3]=	datatype;   
	   
	  PutOutTemBuff[4]=	0x68;        
	  
	  PutOutTemBuff[5]= CtrlCode;  //功能码 
	  
	  PutOutTemBuff[6]= 0x00; 
	  	
/////////////////////////////计算校验和  
		cs_bytecount = PutOutTemBuff[6]+ 7;
		for( i=0; i < cs_bytecount; i++ )
	 	checksum += PutOutTemBuff[i];   

	 	
	 	PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
	 	
	 	PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR;  //帧结束标志	
	 	
	 	PutOutTemBuff[cs_bytecount+2]='\0';
	 	
	 	SendDataToCOM( ComIdx, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令 
	 	
}

void Ack_addReport_to_GatherMachine( unsigned char datatype, unsigned char CtrlCode )
{
	  Send_Cmd_to_GatherMachine( datatype, CtrlCode );
}

void Ack_FunctionAlarm_to_GatherMachine( unsigned char datatype, unsigned char CtrlCode )
{
	  Send_Cmd_to_GatherMachine( datatype, CtrlCode );
}

void Send_InitWLValue_to_GatherMachine(  unsigned char *CmdDataBuf ) 
{   
	  unsigned char checksum = 0;
	  unsigned char cs_bytecount;
	  unsigned char i, len;	
	  unsigned char PutOutTemBuff[50];	
	  
	  PutOutTemBuff[0]= 0x68;
	  
	  PutOutTemBuff[1]=	DTUAddress[0];
	  PutOutTemBuff[2]=	DTUAddress[1];
	  PutOutTemBuff[3]=	0x02;   
	   
	  PutOutTemBuff[4]=	0x68;        
	  
	  PutOutTemBuff[5]= 0x0A;  //功能码 	  
    
    PutOutTemBuff[6]= 0x05;
    
    len = strlen(CmdDataBuf);
    
    for( i=0; i<5-len; i++ ) 
    {
        PutOutTemBuff[7+i]='0';
    }
    
    for( i=0; i<len; i++ )
    {
    	  PutOutTemBuff[12-len+i] = CmdDataBuf[i];
    }
         		  
/////////////////////////////计算校验和  
		cs_bytecount = PutOutTemBuff[6]+ 7;
		for( i=0; i < cs_bytecount; i++ )
	 	checksum += PutOutTemBuff[i];   

	 	
	 	PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
	 	
	 	PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR;  //帧结束标志	
	 	
	 	PutOutTemBuff[cs_bytecount+2]='\0';
	 	
	 	SendDataToCOM( ComIdx, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令 
	 	
}

int Send_SyschroTime_to_GatherMachine(  ) 
{   
	  int minute, syschtime;
	  unsigned char checksum = 0;
	  unsigned char cs_bytecount;
	  unsigned char i, len;	
	  unsigned char PutOutTemBuff[50];	
	  char string[10];
	  
	  struct time t;
	  
	  PutOutTemBuff[0]= 0x68;
	  
	  PutOutTemBuff[1]=	DTUAddress[0];
	  PutOutTemBuff[2]=	DTUAddress[1];
	  PutOutTemBuff[3]=	0x00;   
	   
	  PutOutTemBuff[4]=	0x68;        
	  
	  PutOutTemBuff[5]= 0x0B;  //功能码 	  
    
    PutOutTemBuff[6]= 0x03;
    
    gettime( &t );
    
    minute = t.ti_min%5 ;
    
    syschtime = minute*60 + t.ti_sec;
    
    if(GetKPState==LOCK) printf("minute=%d, syschtime=%d\n", minute, syschtime);    
    
    itoa( syschtime, string, 10 );
    
    len = strlen(string);
    
    for( i=0; i<3-len; i++ ) 
    {
        PutOutTemBuff[7+i]='0';
    }
    
    for( i=0; i<len; i++ )
    {
    	  PutOutTemBuff[10-len+i] = string[i];
    }
         		  
/////////////////////////////计算校验和  
		cs_bytecount = PutOutTemBuff[6]+ 7;
		for( i=0; i < cs_bytecount; i++ )
	 	checksum += PutOutTemBuff[i];   

	 	
	 	PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
	 	
	 	PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR;  //帧结束标志	
	 	
	 	PutOutTemBuff[cs_bytecount+2]='\0';
	 	
	 	SendDataToCOM( COM3, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令 
	 	
	 	//NB_Delay(2000);
	 	
	 	return 1;
	 	
}

int Config_MultiCounterRatio( int typeofdata, int MultiRatio ) 
{   
	
	  unsigned char checksum = 0;
	  unsigned char cs_bytecount;
	  unsigned char i, len;	
	  unsigned char PutOutTemBuff[50];	

	  
	  PutOutTemBuff[0]= 0x68;
	  
	  PutOutTemBuff[1]=	DTUAddress[0];
	  PutOutTemBuff[2]=	DTUAddress[1];
	  PutOutTemBuff[3]=	typeofdata;   
	   
	  PutOutTemBuff[4]=	0x68;        
	  
	  PutOutTemBuff[5]= 0x0C;  //功能码 	  
    
    PutOutTemBuff[6]= 0x01;
        
    PutOutTemBuff[7]= MultiRatio + 0x30;  //整形转化成字符型
         		  
/////////////////////////////计算校验和  
		cs_bytecount = PutOutTemBuff[6]+ 7;
		for( i=0; i < cs_bytecount; i++ )
	 	checksum += PutOutTemBuff[i];   

	 	
	 	PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
	 	
	 	PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR;  //帧结束标志	
	 	
	 	PutOutTemBuff[cs_bytecount+2]='\0';
	 	
	 	SendDataToCOM( COM3, PutOutTemBuff, cs_bytecount+2 );//向采集器发送指令 
	 	
	 	return 1;
	 	
}

⌨️ 快捷键说明

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