📄 server1.cpp
字号:
if(Timedata.NowdataRec[cdNo].addr_sensor==k)
{
if((Timedata.NowdataRec[cdNo].nowdata==-100) || (Timedata.NowdataRec[cdNo].nowdata==-200) || (Timedata.NowdataRec[cdNo].nowdata==-300))
Ret=1;
else
{
if((File2.file2[devpoint.dv[i].sensor].flag & 0x06) !=0)
{
if((File2.file2[devpoint.dv[i].sensor].flag & 0x06) ==6) //处理上下报警
{
if((Timedata.NowdataRec[cdNo].nowdata >=File2.file2[devpoint.dv[i].sensor].up_alarm) ||
(Timedata.NowdataRec[cdNo].nowdata <=File2.file2[devpoint.dv[i].sensor].down_alarm))
Ret=2;
else
{
Ret=0;
if((Timedata.NowdataRec[cdNo].nowdata <File2.file2[devpoint.dv[i].sensor].up_remove_alarm) ||
(Timedata.NowdataRec[cdNo].nowdata >File2.file2[devpoint.dv[i].sensor].down_remove_alarm) )
Ret=5;
}
}else{
if((File2.file2[devpoint.dv[i].sensor].flag & 0x02) !=0) //上限报警
{
if(Timedata.NowdataRec[cdNo].nowdata >=File2.file2[devpoint.dv[i].sensor].up_alarm)
Ret=2;
else{
Ret=0;
if(Timedata.NowdataRec[cdNo].nowdata <File2.file2[devpoint.dv[i].sensor].up_remove_alarm)
Ret=5;
}
}else if((File2.file2[Bltx].flag & 0x04) !=0)//下限报警
{
if(Timedata.NowdataRec[cdNo].nowdata <=File2.file2[devpoint.dv[i].sensor].down_alarm)
Ret=2;
else{
Ret=0;
if(Timedata.NowdataRec[cdNo].nowdata >File2.file2[devpoint.dv[i].sensor].down_remove_alarm)
Ret=5;
}
}
}
}else if(scanflg) Ret=6;
}
break;
}
}
break;
case 0x12:
break;
case 0x13:
break;
case 3:
fz=File6.file6[Timedata.NowdataRec[cdNo].addr_sensor % 50][Timedata.NowdataRec[cdNo].addr_sensor / 50].addr;
port=File6.file6[Timedata.NowdataRec[cdNo].addr_sensor % 50][Timedata.NowdataRec[cdNo].addr_sensor / 50].port;
switch((File4.info[fz].state_type) & 0x0f)
{
case 0:
if((Cfg0.cfg0[File4.info[fz].fzindex][port].rule & 0x03)!=0)
{
if((Cfg0.cfg0[File4.info[fz].fzindex][port].rule & 0x03)==1) //开报警
{
if(Timedata.NowdataRec[cdNo].nowdata==1)
Ret=3;
else
Ret=5;
}
else
{
if(Timedata.NowdataRec[cdNo].nowdata==0)
Ret=4;
else
Ret=5;
}
} else Ret=6;
break;
case 1:
if((Cfg1.cfg1[File4.info[fz].fzindex][port].rule & 0x03)!=0)
{
if((Cfg1.cfg1[File4.info[fz].fzindex][port].rule & 0x03)==1) //开报警
{
if(Timedata.NowdataRec[cdNo].nowdata==1)
Ret=3;
else
Ret=5;
}
else //停报警
{
if(Timedata.NowdataRec[cdNo].nowdata==0)
Ret=4;
else
Ret=5;
}
}else Ret=6;
break;
case 2:
if((Cfg2.cfg2[File4.info[fz].fzindex][port].rule & 0x03)!=0)
{
if((Cfg2.cfg2[File4.info[fz].fzindex][port].rule & 0x03)==1) //开报警
{
if(Timedata.NowdataRec[cdNo].nowdata==1)
Ret=3;
else
Ret=5;
}
else //停报警
{
if(Timedata.NowdataRec[cdNo].nowdata==0)
Ret=4;
else
Ret=5;
}
}else Ret=6;
break;
case 3:
if((Cfg3.cfg3[File4.info[fz].fzindex][port].rule & 0x03)!=0)
{
if((Cfg3.cfg3[File4.info[fz].fzindex][port].rule & 0x03)==1) //开报警
{
if(Timedata.NowdataRec[cdNo].nowdata==1)
Ret=3;
else
Ret=5;
}
else //停报警
{
if(Timedata.NowdataRec[cdNo].nowdata==0)
Ret=4;
else
Ret=5;
}
}else Ret=6;
break;
case 4:
if((Cfg4.cfg4[File4.info[fz].fzindex][port].rule & 0x03)!=0)
{
if((Cfg4.cfg4[File4.info[fz].fzindex][port].rule & 0x03)==1) //开报警
{
if(Timedata.NowdataRec[cdNo].nowdata==1)
Ret=3;
else
Ret=5;
}
else //停报警
{
if(Timedata.NowdataRec[cdNo].nowdata==0)
Ret=4;
else
Ret=5;
}
}else Ret=6;
break;
}
}
return Ret;
}
STDMETHODIMP Server1::Get_Alarm_Num(int *num)
{
// TODO: Add your implementation code here
int i,cd_num,state;
cd_num=get_cd_num();
for(i=0;i<cd_num;i++)
{
state=get_cd_state(i);
if(state==2)
cd_alarm_mnl_dj(i);
else if(state==3)
cd_alarm_kgl_dj(i,1);
else if(state==4)
cd_alarm_kgl_dj(i,0);
}
*num=alarmrecord.AlarmNum;
return S_OK;
}
void Server1::cd_alarm_mnl_dj(int cdNo)
{
// TODO: Add your implementation code here
int j;
// int kckzword;
int AlarmNum=alarmrecord.AlarmNum;
int stNo;
int index=Timedata.NowdataRec[cdNo].addr_sensor/50;
int sensor=Timedata.NowdataRec[cdNo].addr_sensor%50;
stNo=File6.file6[sensor][index].addr;
if(Get_st_state(stNo)==2)
return;
for (j=0;j<AlarmNum;j++)
{
if(Timedata.NowdataRec[cdNo].addr_sensor==alarmrecord.AlarmRec[j].addr_sensor)
{
float temp=alarmrecord.AlarmRec[j].avgv;
if(Timedata.NowdataRec[cdNo].nowdata<alarmrecord.AlarmRec[j].minv)
{
alarmrecord.AlarmRec[j].minv=Timedata.NowdataRec[cdNo].nowdata;
}
if(Timedata.NowdataRec[cdNo].nowdata>alarmrecord.AlarmRec[j].maxv)
{
alarmrecord.AlarmRec[j].maxv=Timedata.NowdataRec[cdNo].nowdata;
}
if(Alarm_Flag[cdNo]!=Timedata.NowdataRec[cdNo].nowdata)
{
Alarm_Flag[cdNo]=Timedata.NowdataRec[cdNo].nowdata;
alarmrecord.AlarmRec[j].avgv=(temp+Timedata.NowdataRec[cdNo].nowdata)/2;
}
break;
}
}
if(j==AlarmNum)
{
AlarmNum=AlarmNum+1;
alarmrecord.AlarmRec[AlarmNum-1].addr_sensor=Timedata.NowdataRec[cdNo].addr_sensor;
SYSTEMTIME start_time;
GetLocalTime(&start_time); // address of system time structure
alarmrecord.AlarmRec[AlarmNum-1].cd_num=cdNo;
alarmrecord.AlarmRec[AlarmNum-1].start_time=dateCal(start_time.wYear,start_time.wMonth,start_time.wDay,start_time.wHour,start_time.wMinute,start_time.wSecond);
alarmrecord.AlarmRec[AlarmNum-1].avgv=Timedata.NowdataRec[cdNo].nowdata;
alarmrecord.AlarmRec[AlarmNum-1].maxv=Timedata.NowdataRec[cdNo].nowdata;
alarmrecord.AlarmRec[AlarmNum-1].minv=Timedata.NowdataRec[cdNo].nowdata;
}
alarmrecord.AlarmNum=AlarmNum;
}
void Server1::alarm_old_dj(int cdNo)
{
int i,j;
int Num1=alarmrecord.AlarmNum;
int Num2=alarmoldrecord.AlarmCun;
for(i=0;i<Num1;i++) //解除报警
{
if(alarmrecord.AlarmRec[i].addr_sensor==Timedata.NowdataRec[cdNo].addr_sensor)
{
SYSTEMTIME end_time;
GetLocalTime(&end_time); // address of system time structure
DATE dt2=dateCal(end_time.wYear,end_time.wMonth,end_time.wDay,end_time.wHour,end_time.wMinute,end_time.wSecond);
DATE dt1=alarmrecord.AlarmRec[i].start_time;
if(dt1!=dt2){
Num2+=1;
alarmoldrecord.AlarmCun=Num2;
alarmoldrecord.AlarmOldRec[Num2-1].addr_sensor=alarmrecord.AlarmRec[i].addr_sensor;
alarmoldrecord.AlarmOldRec[Num2-1].start_time=alarmrecord.AlarmRec[i].start_time;
alarmoldrecord.AlarmOldRec[Num2-1].end_time=dateCal(end_time.wYear,end_time.wMonth,end_time.wDay,end_time.wHour,end_time.wMinute,end_time.wSecond);
alarmoldrecord.AlarmOldRec[Num2-1].avgv=alarmrecord.AlarmRec[i].avgv;
alarmoldrecord.AlarmOldRec[Num2-1].maxv=alarmrecord.AlarmRec[i].maxv;
alarmoldrecord.AlarmOldRec[Num2-1].minv=alarmrecord.AlarmRec[i].minv;
}
if(i==Num1-1)
{
Num1-=1;
alarmrecord.AlarmNum=Num1;
}
else
{
for(j=i+1;j<Num1;j++)
{
alarmrecord.AlarmRec[j-1]=alarmrecord.AlarmRec[j];
}
Num1-=1;
alarmrecord.AlarmNum=Num1;
}
}
}
}
STDMETHODIMP Server1::cd_alarmold_dj(int cdNo)
{
// TODO: Add your implementation code here
alarm_old_dj(cdNo);
return S_OK;
}
void Server1::cd_alarm_kgl_dj(int cdNo,int onoff)
{
// TODO: Add your implementation code here
///onoff=1:开报警;=0:停报警
if(onoff==1)
{
Alarm_Proc(1,cdNo);
}
else if(onoff==0)
{
Alarm_Proc(0,cdNo);
}
}
void Server1::Alarm_Proc(int flag,int cd) // 开关量开,停报警
{
int i;
int Num=alarmrecord.AlarmNum;
int stNo;
int index=Timedata.NowdataRec[cd].addr_sensor/50;
int sensor=Timedata.NowdataRec[cd].addr_sensor%50;
stNo=File6.file6[sensor][index].addr;
if(Get_st_state(stNo)==2)
return;
for(i=0;i<Num;i++)
{
if(alarmrecord.AlarmRec[i].addr_sensor==Timedata.NowdataRec[cd].addr_sensor)
break;
}
if (i==Num)
{
Num+=1;
alarmrecord.AlarmNum=Num;
if (flag==0)
{
alarmrecord.AlarmRec[Num-1].maxv=0;
alarmrecord.AlarmRec[Num-1].minv=0;
alarmrecord.AlarmRec[Num-1].avgv=0;
}
else
{
alarmrecord.AlarmRec[Num-1].maxv=1;
alarmrecord.AlarmRec[Num-1].minv=1;
alarmrecord.AlarmRec[Num-1].avgv=1;
}
SYSTEMTIME start_time;
GetLocalTime(&start_time); // address of system time structure
alarmrecord.AlarmRec[Num-1].start_time=dateCal(start_time.wYear,start_time.wMonth,start_time.wDay,start_time.wHour,start_time.wMinute,start_time.wSecond);
alarmrecord.AlarmRec[Num-1].cd_num=cd;
alarmrecord.AlarmRec[Num-1].addr_sensor=Timedata.NowdataRec[cd].addr_sensor;
}
}
STDMETHODIMP Server1::Get_cd_status(int cdNo, int *mnl_kgl,int *state)
{
// TODO: Add your implementation code here
// *flag=1:故障;=2:模拟量报警;=3:开关量开报警;=4开关量停报警;=5:解报;=6:变性解报
switch (File3.file3[Timedata.NowdataRec[cdNo].addr_sensor % 50].property&0xf)
{
case 1:
*mnl_kgl=1;
break;
case 3:
*mnl_kgl=3;
break;
default:
break;
}
*state=get_cd_state(cdNo);
return S_OK;
}
STDMETHODIMP Server1::Get_Alarm(int alarm_No, int *cdNo)
{
// TODO: Add your implementation code here
*cdNo=alarmrecord.AlarmRec[alarm_No].cd_num;
return S_OK;
}
STDMETHODIMP Server1::Get_Del_Sensor(int del_No, int *addr_sensor)
{
// TODO: Add your implementation code here
*addr_sensor=delflg.addr_sensor[del_No];
return S_OK;
}
STDMETHODIMP Server1::Get_Del_Sensor_Num(int *Num)
{
// TODO: Add your implementation code here
*Num=delflg.count;
return S_OK;
}
STDMETHODIMP Server1::Get_Delflag(int *flag)
{
// TODO: Add your implementation code here
*flag=dat_del;
return S_OK;
}
STDMETHODIMP Server1::Set_Delflag(int flag)
{
// TODO: Add your implementation code here
dat_del=flag;
return S_OK;
}
STDMETHODIMP Server1::Del_cd_Alarm(int add_sensor)
{
// TODO: Add your implementation code here
int i,j;
int Num1=alarmrecord.AlarmNum;
for(i=0;i<Num1;i++) //解除报警
{
if(alarmrecord.AlarmRec[i].addr_sensor==add_sensor)
{
if(i==Num1-1)
{
Num1-=1;
alarmrecord.AlarmNum=Num1;
}
else
{
for(j=i+1;j<Num1;j++)
{
alarmrecord.AlarmRec[j-1]=alarmrecord.AlarmRec[j];
}
Num1-=1;
alarmrecord.AlarmNum=Num1;
}
break;
}
}
return S_OK;
}
STDMETHODIMP Server1::Load_Sys_File(short *flg)
{
// TODO: Add your implementation code here
Read_File();
for(int i=0;i<rtinfo.count;i++)
File4.flag[rtinfo.st[i].stno]=4;
short tb=0;
if((Files.sysflg&1)==1)
tb|=1;
if((Files.sysflg&2)==2)
tb|=2;
if((Files.sysflg&4)==4)
tb|=4;
*flg=tb;
return S_OK;
}
void Server1::Read_cari01()
{
FILE *file;
char path[_MAX_PATH]="";
unsigned char tmp[_MAX_PATH]="";
char fn[_MAX_PATH];
_mbscpy(tmp,Curpath);
unsigned_To_signed(tmp,path);
strcpy(fn,path);
strcat(fn,"\\CONFIG\\cari01.dat");
// char fn[60]="\\CONFIG\\cari01.dat";
if ((file=fopen(fn,"rb+"))==NULL)
{
// MessageBox(NULL,"文件打开错误!!","提示!",MB_OK);
return ;
}
fread(&prst,sizeof(prst),1,file);
fclose(file);
}
void Server1::Read_cari02()
{
FILE *file;
char path[_MAX_PATH]="";
unsigned char tmp[_MAX_PATH]="";
char fn[_MAX_PATH];
_mbscpy(tmp,Curpath);
unsigned_To_signed(tmp,path);
strcpy(fn,path);
strcat(fn,"\\CONFIG\\cari02.dat");
// char fn[60]="\\CONFIG\\cari02.dat";
if ((file=fopen(fn,"rb+"))==NULL)
{
// MessageBox(NULL,"文件打开错误!!","提示!",MB_OK);
return ;
}
fread(&rtinfo,sizeof(rtinfo),1,file);
for(int i=0;i<rtinfo.count;i++)
rtinfo.st[i].dirc--;
fclose(file);
}
void Server1::Read_cari03()
{
// SYSTEMTIME pdt;
FILE *file;
char path[_MAX_PATH]="";
unsigned char tmp[_MAX_PATH]="";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -