📄 conditions.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 + -