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

📄 conditions.c

📁 湖北水文信息系统水位雨量采集器的C51源代码
💻 C
字号:
#include "scan.h"
#include "string.h"
#include <SM89516A.H>
#include "process.h"
#include "time.h"
#include "common.h"
#include "save_rf.h"
#include "process.h"
#include "recframe.h"


/*********************************************************************
* 函 数 名: void Rpwl_proc(void)
* 功能描述: 加报水位门限处理
* 函数说明: 
* 调用函数: 无
* 全局变量:无
* 输 入: 无
* 返 回: 无
* 设 计 者:
***********************************************************************/
char Rpwl_proc(void)
{
   static unsigned char wl_flg[11];
   unsigned char ii=0;
   static unsigned char i=0;

   if(new_cfg==2)
   {
			for(i=0;i<11;i++)
   				wl_flg[i]=0;	
			new_cfg=0;
   }
		
	 if(i>10)  i=0; 	

	 if(level_cd[i].cd_data<=0)
   {
 				i=0;
	    	return 0 ;
   }

   if((wl_flg[i]==0)&&(WaterLevel>=level_cd[i].cd_data)&&(WaterLevel>0))
   {
     		wl_flg[i]=1;
		 		//Add_waterlevel(ii);	//del by jxf 20060920
				Add_waterlevel(i);	//add by jxf 20060920
				
		 		i++;
		 		return 1;							  
	 }
   else if(WaterLevel<level_cd[i].cd_data)
   {
   			wl_flg[i]=0;
   } 
   
	 i++;
	 return 0 ;
}


/*********************************************************************
* 函 数 名: unsigned char Find_crrf(void)
* 功能描述: 查找当前存储的雨量
* 函数说明: 
* 调用函数: 无
* 全局变量:无
* 输 入: 无
* 返 回: 无
* 设 计 者:
***********************************************************************/
unsigned char Find_crrf(void)
{
	unsigned char i;

	for(i=0;i<rf_dlen;i++)
	{
		if((RainFall_5Min[i][0]&0x80)==0x80) 
		{
				return i;			
		}
	}
    return 0;
}



/*********************************************************************
* 函 数 名: void Rprf_proc(void)
* 功能描述: 雨量门限处理
* 函数说明: 
* 调用函数: 无
* 全局变量:无
* 输 入: 无
* 返 回: 无
* 设 计 者:
***********************************************************************/
char Rprf_proc(void)
{
    unsigned long int xdata Sum=0;
   	static unsigned char i=0;
   	unsigned char ii=0,num=0;
   	char j;	

  	if(new_cfg==1)
   	{
				new_cfg=0;		
   	}		
	
		if(i>10)	i=0;
	  
	  if(rain_cd[i].cd_time<=0)
	  {
 				i=0;
	    	return 0 ;
	  }
	  
	  num=0;
		ii=Find_crrf();
		
   	//----------计算雨量门限-----------------
  	switch(rain_cd[i].cd_time)
 	  {
   		case rf0 :	//5分钟	 				 
								Sum=(RainFall_5Min[ii][0]&0x7f)*16+RainFall_5Min[ii][1];
								num=2;
								break;
			case rf1 :	//10分钟					
								Sum=(RainFall_5Min[ii][0]&0x7f)*16+RainFall_5Min[ii][1];

					 			if(ii<1)	   		 
					 						ii+=rf_dlen;
					 
								Sum+=(RainFall_5Min[ii-1][0]&0x7f)*16+RainFall_5Min[ii-1][1];
					 			num=3;
					 			break;
	 		case rf2 :	//15分钟
								Sum=(RainFall_5Min[ii][0]&0x7f)*16+RainFall_5Min[ii][1];

					 			if(ii<2)	   		 
					 						ii+=rf_dlen;
			 
		 		    	  for(j=ii-1;j>=ii-2;j--)
					 			{			 			
										if(j<rf_dlen) 
												Sum+=(RainFall_5Min[j][0]&0x7f)*16+RainFall_5Min[j][1];
										else 
												Sum+=(RainFall_5Min[j-rf_dlen][0]&0x7f)*16+RainFall_5Min[j-rf_dlen][1];			 
					 			}
					 			num=4;
					 			break;
	 		case rf3 :	//30分钟
							  Sum=(RainFall_5Min[ii][0]&0x7f)*16+RainFall_5Min[ii][1];

					 			if(ii<5)	   		 
					 					ii+=rf_dlen;
			 
		  			 		for(j=ii-1;j>=ii-5;j--)
					 			{
			 			
										if(j<rf_dlen) 
												Sum+=(RainFall_5Min[j][0]&0x7f)*16+RainFall_5Min[j][1];
										else 
												Sum+=(RainFall_5Min[j-rf_dlen][0]&0x7f)*16+RainFall_5Min[j-rf_dlen][1];				 
					 			}
					 			num=5;
					 			break;

	 		case rf4 :	//60分钟
								Sum=(RainFall_5Min[ii][0]&0x7f)*16+RainFall_5Min[ii][1];

					 			if(ii<11)	   		 
					 						ii+=rf_dlen;
			 
				     		for(j=ii-1;j>=ii-11;j--)
					 			{			 			
										if(j<rf_dlen) 
												Sum+=(RainFall_5Min[j][0]&0x7f)*16+RainFall_5Min[j][1];
										else 
												Sum+=(RainFall_5Min[j-rf_dlen][0]&0x7f)*16+RainFall_5Min[j-rf_dlen][1];				 
					 			}
					 			num=6;
								break;

	 		case rf5 :	//120分钟
					 			Sum=(RainFall_5Min[ii][0]&0x7f)*16+RainFall_5Min[ii][1];

					 			if(ii<23)	   		 
					 					ii+=rf_dlen;
			 
		    				for(j=ii-1;j>=ii-23;j--)
					 			{			 			
										if(j<rf_dlen) 
												Sum+=(RainFall_5Min[j][0]&0x7f)*16+RainFall_5Min[j][1];
										else 
												Sum+=(RainFall_5Min[j-rf_dlen][0]&0x7f)*16+RainFall_5Min[j-rf_dlen][1];				 
					 			}
					 			num=7;
								break;		  
	 
			case rf6 :	//180分钟
					 			Sum=(RainFall_5Min[ii][0]&0x7f)*16+RainFall_5Min[ii][1];

					 			if(ii<35)	   		 
									 	ii+=rf_dlen;
			 
				     		for(j=ii-1;j>=ii-35;j--)
					 			{
										if(j<rf_dlen) 
												Sum+=(RainFall_5Min[j][0]&0x7f)*16+RainFall_5Min[j][1];
										else 
												Sum+=(RainFall_5Min[j-rf_dlen][0]&0x7f)*16+RainFall_5Min[j-rf_dlen][1];				 
					 			}
							 	num=8;
					 			break;	

	 		default:						
								break;
   }
	  	
 	 if((Sum>=rain_cd[i].cd_data)&&(rfcd_time[i]>=MIN_5TIME)&&(Sum>0))
   {
					rfcd_time[i]=0;
			  	Add_rainfall(Sum,num);		
			  	i++;		
			  	return 1 ;
   } 
   else if(rfcd_time[i]>=MIN_5TIME)
   {
   				rfcd_time[i]=0;
   }

	 i++;
	 return 0 ;
	
}

⌨️ 快捷键说明

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