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

📄 server1.cpp

📁 DCOM 上位机和嵌入式系统通信
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				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 + -