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

📄 evtdb.cpp

📁 电力监控系统 实时告警处理程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			strcat(path3,"Soe_Xiao_on.wav");
			break;
		case	YX_OTH_OFF:         //  15       其他信号消失
			strcat(path3,"Soe _Other_Off.wav");
			break;
		case	YX_OTH_ON:         //  16       其他信号产生
			strcat(path3,"Soe _Other_On.wav");
			break;
			///////////////////zjh 2004.6.28/////////////////////////////////
		default:
			strcat(path3,"default.wav");
			break;
		}
		break;
	case EVT_YK	:	//	13	//:遥控
		strcat(path,"Yk\\");
		strcpy(path2,path);
		strcpy(path3,path);
		strcpy(path1,path2);//
		
		sprintf(temppath,"%d",evt_tmp[i].RTUNo);
		strcat(path1,temppath);
		strcat(path1,".wav");//厂
		
		strcat(path2,evt_tmp[i].InfoName);
		strcat(path2,".wav");
		mOffOrOnF = true;
		switch(SubtypeID)
		{
		case     EVT_YK_OFF: 		 		//0合-〉分
			strcat(path3,"yk_off.wav");
			strcat(path,"yk_offdefault.wav");
			break;
		case     EVT_YK_ON:		 		//1分-〉合	
			strcat(path3,"yk_on.wav");
			strcat(path,"yk_ondefault.wav");
			break;
		default:
			strcat(path3,"default.wav");
			break;
		}
		break;
	case EVT_YT	:	//	14	//:遥调
		strcat(path,"Yt\\");
		strcpy(path2,path);
		strcpy(path3,path);
		strcpy(path1,path2);//
		
		sprintf(temppath,"%d",evt_tmp[i].RTUNo);
		strcat(path1,temppath);
		strcat(path1,".wav");//厂
		
		strcat(path2,evt_tmp[i].InfoName);
		strcat(path2,".wav");
		mOffOrOnF = true;
		
		switch(SubtypeID)
		{
		case	EVT_YT_UP:		// 		0升
			strcat(path3,"yt_up.wav");
			strcat(path,"yt_updefault.wav");
			break;
		case	EVT_YT_DOWN:	// 		1降
			strcat(path3,"yt_down.wav");
			strcat(path,"yt_downdefault.wav");
			break;
		case	EVT_YT_STOP:   //    	2急停	
			strcat(path3,"yt_stop.wav");
			strcat(path,"yt_stopdefault.wav");
			break;
		default:
			strcat(path3,"default.wav");
			break;
		}
		break;
	case EVT_DZ	:	//	15	//:定值
		strcat(path,"Dz\\");
		strcpy(path2,path);
		strcpy(path3,path);
		strcpy(path1,path2);//
		
		sprintf(temppath,"%d",evt_tmp[i].RTUNo);
		strcat(path1,temppath);
		strcat(path1,".wav");//厂
		
		strcat(path2,evt_tmp[i].InfoName);
		strcat(path2,".wav");
		//	mOffOrOnF = true;
		
		switch(SubtypeID)
		{
		case	EVT_DZ_DZ	:		//0 定值
			strcat(path3,"dz_dz.wav");
			strcat(path,"dz_dzdefault.wav");
			break;
		case	EVT_BH_RESET:		//1保护复归
			strcat(path3,"bh_reset.wav");
			strcat(path,"bh_resetdefault.wav");
			break;
		case	EVT_MODIFY_T :		//2 手工对时	
			strcat(path3,"modify_t.wav");
			strcat(path,"modify_tdefault.wav");
			break;
		default:
			strcat(path3,"default.wav");
			break;
		}
		break;
		
	}
	/*////////////2004.5.20 张军华 屏蔽报告主机名消息//////////CFileFind
	if(!(PlaySound(path1,NULL,SND_SYNC)))// 
	{
		PlaySound(path,NULL,SND_ASYNC);
		return ;
	}
	*/
	CFileFind finder;

	int mFileExistF = 0;
	char *lpStr1;
	//电笛和电铃同时被选中时先播放电铃再播放电笛
	if(type==2 || type==4)//若选中电铃且“C:\yh-5000\Sound\电铃.wav”文件存在,播放电铃
	{
		ZeroMemory(path4,MAX_PATH);
		strcpy(path4,m_strSoundpath);
		strcat(path4,"电铃.wav");
		lpStr1 = path4;
		mFileExistF = finder.FindFile(lpStr1);
		if(mFileExistF == 1)
			PlaySound(path4,NULL,SND_SYNC);
	}
	if(type==3 || type==4)//若选中电笛且“C:\yh-5000\Sound\电笛.wav”文件存在,播放电笛
	{
		ZeroMemory(path4,MAX_PATH);
		strcpy(path4,m_strSoundpath);
		strcat(path4,"电笛.wav");
		lpStr1 = path4;
		mFileExistF = finder.FindFile(lpStr1);
		if(mFileExistF == 1)
			PlaySound(path4,NULL,SND_SYNC);
	}


	lpStr1 = path2;

	mFileExistF = finder.FindFile(lpStr1);
	if(mFileExistF == 1 && mOffOrOnF)
	{
		PlaySound(path2,NULL,SND_SYNC);
		PlaySound(path3,NULL,SND_SYNC);
	}
	else
	{
		PlaySound(path3,NULL,SND_SYNC);
	}

	lpStr1 = pathoptname;
	mFileExistF = finder.FindFile(lpStr1);
	if(mFileExistF == 1)//若该操作员姓名的语音文件存在,操作人
	{
		PlaySound(pathopt,NULL,SND_SYNC);
		PlaySound(pathoptname,NULL,SND_SYNC);
	}
	
	
/*	if(!(PlaySound(path2,NULL,SND_SYNC)))//组合声音第一个同步,第二个异步
	{
		PlaySound(path,NULL,SND_ASYNC);
		return ;
	}
	
	if(!PlaySound(path3,NULL,SND_SYNC))
	{
		PlaySound(path,NULL,SND_ASYNC);
		return ;
	}*/
	/*////////////2004.5.20 张军华 屏蔽报告操作人消息//////////
	if((pathopt!=0)&&(pathoptname!=NULL))
	{
		PlaySound(pathopt,NULL,SND_SYNC);
		PlaySound(pathoptname,NULL,SND_SYNC);
	}
	*/
	return ;
 }
 
 char evtdb::IsNeedVoiceWarn(BYTE TypeID, BYTE SubtypeID)
 {
	if((TypeID<0)||(TypeID>=M_EVTT))
		return -1;
	if((SubtypeID<0)||(SubtypeID>=M_EVTTS))
		return -1;
	char ind=IndEvtT[TypeID][SubtypeID];
	if((ind<0)||(ind>=M_EVT)) 
		return -1;
	char tmpc=0;

	if(1==m_pEvtType[ind].IfShow)
	{
		 if(1 == m_pEvtType[ind].IfPlaySound)
		 {
			 if((1 == m_pEvtType[ind].IfRing) && (1 == m_pEvtType[ind].IftelAlarm))
				 tmpc=4;//电铃和电笛都被选中
			 else if(1 == m_pEvtType[ind].IfRing) 
				 tmpc=2;//电铃被选中
			 else if(1 == m_pEvtType[ind].IftelAlarm) 
				 tmpc=3;//电笛被选中
			 else
				 tmpc=1;
		 }
		 else tmpc=0;
	}
	else 
		tmpc=-1;
	return tmpc;
 }

 bool evtdb::AckVoiceWarn(int index,char F)
 {
	LSI_GetTableID("scada","event",m_Evtid);//COMMON_Node
    if ((m_pEvt1=(MEMTABLE*)LSI_GetTableAdd(m_Evtid&0xffff))==NULL)
    {
		return false;
    }
	m_pEvt=(scada_event*)m_pEvt1->data;
	 if(!m_ptmp) return 1;
	 if(F)
	 {
		 m_ptmp[index].numS++; 
		 evt_tmp[index].numS++;
		 LSI_SetChanged(m_tmpid,index);
	 }
	 else
	 {		 
		 if(m_ptmp[index].IfPlaySound == 1) return 0;
		 m_ptmp[index].IfPlaySound = 1;
		 evt_tmp[index].IfPlaySound = 1;	 
		 LSI_SetChanged(m_Evtid,index);
	 }
	return 1;
 }

bool evtdb::SetIfShow(int nCounts,int bResult)
{
	
	evttype[nCounts].IfShow=bResult ;// .IfSave; //IfShow;
	return true;
}

bool evtdb::GetIfShow(int nCounts)
{

	return 	 evttype[nCounts].IfShow;// .IfSave; //IfShow;
		
}



bool evtdb::GetIfPlaySound(int nCounts)
{

				return  evttype[nCounts].IfPlaySound;// .IfSave; //IfShow;
}



bool evtdb::GetIfPicture(int nCounts)
{

				return  evttype[nCounts].IfPicture;// .IfSave; //IfShow;

}



bool evtdb::GetIfPlayRing(int nCounts)
{

				return  evttype[nCounts].IfRing;// .IfSave; //IfShow;
}

bool evtdb::GetIfPlayAlarm(int nCounts)
{

				return  evttype[nCounts].IftelAlarm;// .IfSave; //IfShow;
}


bool evtdb::GetIfPrint(int nCounts)
{

			return evttype[nCounts].IfPrint;// .IfSave; //IfShow;
}

 //char EventCode[16];//事项句
 
char * evtdb::GetEventCode(int nCounts)
{

			return  m_pEvtType[nCounts].EventCode;
		
}


bool evtdb::SetIfPlaySound(int nCounts,int bResult)
{
	
			evttype[nCounts].IfPlaySound=bResult ;// .IfSave; //IfShow;
	return true;
}


bool evtdb::SetIfPicture(int nCounts,int bResult)
{
	
			evttype[nCounts].IfPicture=bResult ;// .IfSave; //IfShow;
	return true;
}


bool evtdb::SetIfPlayRing(int nCounts,int bResult)
{
	
			evttype[nCounts].IfRing=bResult ;// .IfSave; //IfShow;
	return true;
}

bool evtdb::SetIfPlayAlarm(int nCounts,int bResult)
{
	
			evttype[nCounts].IftelAlarm=bResult ;// .IfSave; //IfShow;
	return true;
}


bool evtdb::SetIfPrint(int nCounts,int bResult)
{
	
			evttype[nCounts].IfPrint=bResult ;// .IfSave; //IfShow;
	return true;
}
void evtdb::SetSave()
{
	SetCheckData();
	memset(&m_nod,0,sizeof(COMMON_Node));
	memcpy(m_nod.proName,"RealEv",16);

	m_nod.type				=1;		 ;
	m_nod.status			=1;		 ;

	memcpy(&m_nod.info[0],&g_NumC, 1);
	memcpy(&m_nod.info[1],&g_NumT, 1);
	memcpy(&m_nod.info[2],&g_TimeC,4);
	memcpy(&m_nod.info[6],&g_TimeT,4);
	memcpy(&m_nod.info[10],&g_MDrect,1);
	memcpy(&m_nod.info[11],&m_bOnlyNew,1);
	memcpy(&m_nod.info[12],&m_bVoice,1);
	memcpy(&m_nod.info[13],&m_bPrint,1);
	
	Is_ChgF=true;
/*	if(!m_pNode) return;
//	m_pNode=(COMMON_Node*)m_pNode1->data;
	int num=m_pNode1->userec;

	int m_FrtIn=-1;
	for (int i=0; i <num; i++)
	{
		if (strcmp(m_nod.proName,m_pNode[i].proName)==0)  
		{	
			m_FrtIn=i;
			break;
		}
	}
	if(m_FrtIn<0)
		LSI_AppendRec("COMMON.Node", &m_nod);
	else
	{
		memcpy(m_pNode[m_FrtIn].info,m_nod.info,32);
		m_pNode1->recattr[m_FrtIn].changed=1;
	}*/
	
	CFile       fileLBL;

	if(fileLBL.Open("C:\\yh-5000\\config\\RealEv.ini", CFile::modeCreate|CFile::modeWrite))
	{

		fileLBL.WriteHuge(&m_nod,sizeof(COMMON_Node));

		fileLBL.Close();
	}
}

void evtdb::SetOpen()
{
	m_pNode=NULL;
	m_pEvt=NULL;
	m_pEvtType=NULL;
	memset(&evt0,0,sizeof(scada_event));//2006.7.15
	memset(evt_tmp,0,sizeof(scada_event)*MAXEVT);//2006.7.12


	LSI_GetTableID("scada","eventType",m_EvtTid);//COMMON_Node
    if ((m_pEvtType1=(MEMTABLE*)LSI_GetTableAdd(m_EvtTid&0xffff))==NULL)
    {
        MessageBox(0,"获得数据失败!","错误",MB_OK|MB_ICONERROR);
        return;
    }
	m_pEvtType=(scada_eventType*)m_pEvtType1->data;
	m_nEvtTypeCounts = m_pEvtType1->userec;
	for(int i=0;i<M_EVTT;i++)
		for(int j=0;j<M_EVTTS;j++)
			IndEvtT[i][j]=-1;
	for( i=0;i<m_nEvtTypeCounts;i++)
	{
		if((m_pEvtType[i].TypeID<0)||(m_pEvtType[i].TypeID>=M_EVTT)) continue;
		if((m_pEvtType[i].SubtypeID<0)||(m_pEvtType[i].SubtypeID>=M_EVTTS)) continue;
		IndEvtT[m_pEvtType[i].TypeID][m_pEvtType[i].SubtypeID]=i;
	}


	LSI_GetTableID("scada","event",m_Evtid);//COMMON_Node
    if ((m_pEvt1=(MEMTABLE*)LSI_GetTableAdd(m_Evtid&0xffff))==NULL)
    {
        MessageBox(0,"获得数据失败!","错误",MB_OK|MB_ICONERROR);
        return;
    }
	m_pEvt=(scada_event*)m_pEvt1->data;

	SetCheckData();
	LSI_GetTableID("scada","event",m_tmpid);//COMMON_Node
    if ((m_ptmp1=(MEMTABLE*)LSI_GetTableAdd(m_Evtid&0xffff))==NULL)
    {
		return ;
    }
	m_ptmp=(scada_event*)m_ptmp1->data;
//	memcpy(evt_tmp,m_ptmp,sizeof(scada_event)*m_ptmp1->userec);//2006.7.12
	evt=m_ptmp;				//事件的缓冲区
	nEvt=m_ptmp1->userec;

////////////////////////////
	memset(&m_nod,0,sizeof(COMMON_Node));
	memcpy(m_nod.proName,"RealEv",16);

	m_nod.type				=1;		 ;
	m_nod.status			=1;		 ;

	g_NumC=1;
	g_NumT=1;
	g_TimeC=0.0;
	g_TimeT=0.0;
	g_MDrect=1;
	m_bOnlyNew=0;
	m_bVoice=1;
	m_bPrint=0;

	CFile       fileLBL;

	if(fileLBL.Open("C:\\yh-5000\\config\\RealEv.ini", CFile::modeRead))
	{

		fileLBL.Read(&m_nod,sizeof(COMMON_Node));

		fileLBL.Close();

		memcpy(&g_NumC, &m_nod.info[0],1);
		memcpy(&g_NumT, &m_nod.info[1],1);
		memcpy(&g_TimeC,&m_nod.info[2],4);
		memcpy(&g_TimeT,&m_nod.info[6],4);
		memcpy(&g_MDrect,&m_nod.info[10],1);
		memcpy(&m_bOnlyNew,&m_nod.info[11],1);
		memcpy(&m_bVoice,&m_nod.info[12],1);
		memcpy(&m_bPrint,&m_nod.info[13],1);

	}


//////////////////////////////
}

void evtdb::SetCheckData()
{
	if((g_NumC>7)||(g_NumC<0)) g_NumC=1 ;
	if((g_NumT>3)||(g_NumT<0)) g_NumT=1 ;
	if((g_TimeC>10)||(g_TimeC<0)) g_TimeC=0.5 ;
	if((g_TimeT>20)||(g_TimeT<0)) g_TimeT=1.0 ;
}



void evtdb::push_evt(scada_event evtt)
{
	memcpy(&evt_tmp,&evt_tmp[1],sizeof(scada_event)*(nEvt-1));
	memcpy(&evt_tmp[nEvt-1],&evtt,sizeof(scada_event));
}

void evtdb::push_evt()
{
	return;
	int i = 0,num = 0;
	int j=0;
	m_pEvt=(scada_event*)GetAllEvent(num); //返回记录
	if(num==0) return;
	for( i=num-1;i>0;i--)
	{
		if(EvtCmp(&m_pEvt[i],&evt[nEvt-1]))	
		{
			if(j<1) return;
			nEvt = num;
			memcpy(&evt,&evt[j],sizeof(scada_event)*(nEvt-j));
			memcpy(&evt[nEvt-j],&m_pEvt[num-j],sizeof(scada_event)*j);
			return;
		}
		j++;
	}
}

⌨️ 快捷键说明

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