亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? evtdb.cpp

?? 電力監控系統 實時告警處理程序
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// evtdb.cpp version 3.0: implementation of the evtdb class.
//
//  evtdb 1.0 cjh
//  evtdb 3.0 jyy 2003 北海銀河高科技產業股份有限公司
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "RealEv.h"
#include "evtdb.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

evtdb::evtdb()
{
//	memset(evt,0,sizeof(scada_event)*MAXEVT);
	memset(&m_oldEvt,0,sizeof(scada_event));
	nEvt=0;
	cursor=-1;
	curchange=0;
	m_nEvtTypeCounts = 0;
	m_iCurEvtDisType = 0xffff;//全部
	m_bdbInitialed = false;
	m_printf=false;
	warntimes=true;
	warntime=1;
	handle=NULL;
	fisf=false;
	Is_ChgF=false;
	m_bInVoice = false;

	char* yhpath = getenv("yhpath");
	CFileStatus status;
	if((yhpath!=NULL)&&(CFile::GetStatus(yhpath,status)))
	{
		strcpy(m_strSoundpath,yhpath);
		strcat(m_strSoundpath,"\\sound\\");
	}
	else
		strcpy(m_strSoundpath,"c:\\yh-5000\\sound\\");

	m_pNode1=NULL;
	m_pEvt1=NULL;
	m_pEvtType1=NULL;
	m_ptmp1=NULL;

	m_pNode=NULL;
	m_pEvt=NULL;
	m_ptmp=NULL;
	m_pEvtType=NULL;
	m_EvtOpt=NULL;
}

evtdb::~evtdb()
{
	
}
//讀入所有的事件記錄
void evtdb::ReadAllEvt()
{
	
	int i = 0,num = 0;
	m_pEvt=(scada_event*)GetAllEvent(num); //返回記錄
	if(num==0) return;
	memcpy(evt,m_pEvt,sizeof(scada_event)*num);
	nEvt = num;
}

//到上一條事件記錄
void evtdb::GotoLastEvent()
{
	cursor=cursor>0 ? cursor-1:cursor;
	curchange=1;
}

//到下一條事件記錄
void evtdb::GotoNextEvent()
{
	cursor=cursor<nEvt-1 ? cursor+1:nEvt-1;
	curchange=1;
}

//返回當前顯示串
void evtdb::GetCurStr(char *str)
{
	
	if(cursor<0||nEvt==0){
		sprintf(str,"沒有事件消息");
		return;
	}
	strcpy(str,evt_tmp[cursor].Describe);
}
//是否已確認
bool evtdb::Ack()
{
	WORD at;
	if(cursor<0||nEvt==0) return true; 
	at=evt_tmp[cursor].AffirmF;
	if(at==0) return false;
	else return true;
}


//返回日期時間串
void evtdb::GetDTMStr(CTime &tm,WORD  MilliSec, char *dstr,bool f)
{
	CTime time=CTime::GetCurrentTime();
	if(tm<0)
		memcpy(&tm,&time,sizeof(CTime));
	int year =tm.GetYear();
	int month = tm.GetMonth();
	int day = tm.GetDay();
	int hour = tm.GetHour();
	int minute = tm.GetMinute();
	int second = tm.GetSecond();
	if(f)	
		sprintf(dstr,"%4d-%02d-%02d %02d:%02d:%02d-%03d",year,month,day,hour,minute,second,MilliSec); 
	else
		sprintf(dstr,"%4d-%02d-%02d %02d:%02d:%02d",year,month,day,hour,minute,second); 
//	AfxMessageBox(dstr);
}
//選擇一個新的提示事件
void evtdb::SelectNewEvt()
{
	int i;
	if(nEvt<=0) return;
	cursor=nEvt-1;
	for(i=nEvt-1;i>50;i--){
		if((evt_tmp[i].AffirmF==0)/*&&(evt[i].prcF == 1)*/){
			cursor=i;
			break;
		}
	}
}
//返回當前事件的類型
int evtdb::GetType()
{
	if(nEvt<=0||cursor<0) return 0;
	//return evt[cursor].TypeID+1;//?+1
	return evt_tmp[cursor].TypeID;
}

int evtdb::GetAck()
{
	if(nEvt<=0||cursor<0) return 1;
	return evt_tmp[cursor].AffirmF;
}
//確認一個消息
bool evtdb::AckEvent()
{
	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 false;
	if(cursor<0) return false;
	
	m_ptmp[cursor].AffirmF = 1;
	evt_tmp[cursor].AffirmF = 1;
	
	LSI_SetChanged(m_tmpid,cursor);
	return true;
}
//返回級別
/*int evtdb::Level()
{
if(nEvt<=0||cursor<0) return 0;
return evt[cursor].level;
}
*/
bool evtdb::InitDbApi(char *user, char *pw)
{
	if(LSI_InitNTDbi())
	{
		if(LSI_CheckUser(user,pw))
		{
			m_bdbInitialed = true;
		}
		else
		{
			MessageBox(0,"非法的用戶或口令!","錯誤",MB_OK|MB_ICONERROR);
			return false; 
		}
	}
	/*else
	{
		MessageBox(0,"平臺未啟動!","錯誤",MB_OK|MB_ICONERROR);
		return false;
	}*/
	int i = 0,num = 0;
	
	m_nEvtTypeCounts = 0;
	m_pEvtType = (scada_eventType*)GetAllEventType(num);
	m_nEvtTypeCounts = num;
	
	if(num >MAXEVTTYPE)AfxMessageBox("告警程序告警類型內存溢出,>150條,請整理告警類型庫");
	memcpy(evttype,m_pEvtType,num*sizeof(scada_eventType));
 
	SetOpen();

	DWORD id=0;
	LSI_GetTableID("scada","EvtOpt",id);//scada_analog
	if(m_pEvtOpt=(MEMTABLE*)LSI_GetTableAdd(id&0xffff))
		m_EvtOpt=(scada_EvtOpt*)m_pEvtOpt->data;
	if(m_pEvtOpt->userec<1)
	{
		scada_EvtOpt obj;
		for(i=0;i<m_pEvtOpt->recmax;i++)		LSI_AppendRec("scada.EvtOpt", &obj);
	}

	return true;
}
void* evtdb::GetAllEventType(int &num)
{
	int recn,error;
	char *lp = NULL;
	num=0;
	void*buf=LSI_QueryRecord("TABLE(scada.eventType)",recn,error,false);
	if(error<0) return NULL;
	if(buf==NULL) num=0;
	else
	{
		num=recn;
		lp=(char*)buf;
		lp=lp+recn*2;
	}
	return lp;
}
void * evtdb::GetAllEvent(int &num)
{
	//得到事件類型庫類型數量
	int recn,error;
	char *lp = NULL;
	num=0;
	void*buf=LSI_QueryRecord("TABLE(scada.event)",recn,error,false);
	if(error<0) return NULL;
	if(buf==NULL) num=0;
	else
	{
		num=recn;
		lp=(char*)buf;
		lp=lp+recn*2;
	}

	return lp;
}


bool evtdb::EvtCmp(scada_event *evt1, scada_event *evt2)
{
	if(evt1->Time==evt2->Time)
	{
		if(evt1->MilliSec==evt2->MilliSec)
		{
			if(evt1->TypeID==evt2->TypeID)
			{
				if(evt1->SubtypeID==evt2->SubtypeID)
				{
					if(evt1->RTUNo==evt2->RTUNo)
					{
						if(evt1->Value==evt2->Value)
						{
							if(strcmp(evt1->Describe,evt2->Describe)==0)
							{
								return true;
							}
						}
					}
				}
			}
		}
	}
	return false;
}
//確認是否有新的事件產生
bool evtdb::IsRecChanged()
{
	for(int i=nEvt-1;i>=0;i--)
	{
		if(IsNeedShow(evt_tmp[i].TypeID,evt_tmp[i].SubtypeID))
		{
			if(EvtCmp(&m_oldEvt,&evt_tmp[i]))		
				return FALSE;
			memcpy(&m_oldEvt,&evt_tmp[i],sizeof(scada_event));
			return TRUE;
		}
	}
	return false;
	/*if(EvtCmp(&m_oldEvt,&evt[nEvt-1]))		return FALSE;
	else if(IsNeedShow(evt[nEvt-1].TypeID,evt[nEvt-1].SubtypeID))
	{
		memcpy(&m_oldEvt,&evt[nEvt-1],sizeof(scada_event));
		return TRUE;
	}
	else	return false;*/
}
//當前顯示的事件類型是否有變化
char evtdb::IsDisRecChanged()
{
	int i = 0;
	if(nEvt<=0) return 0;
	if(IsRecChanged())
	{
		if(m_iCurEvtDisType == 0xffff)			return 1;
		else
		{
			for(i = nEvt -1;i>50;i--)
			{
				if(evt_tmp[i].TypeID == (BYTE)m_iCurEvtDisType)
				{
					if(EvtCmp(&m_olddisEvt,&evt_tmp[i]))		return 1;
					else
					{
						memcpy(&m_olddisEvt,&evt_tmp[i],sizeof(scada_event)); 
						return 2;
					}
				}
			}
			return 0;
		}
	}
	else		return 0;
}
//取安全天數
bool evtdb::GetSafeDays(int& safedays)
{
	return true;
	char *lp = NULL;
	int recn,error;
	void *buf=LSI_QueryRecord("TABLE(scada.progReg),WHERE(Name=SYSDAY))",recn,error,false);
	if(error<0) return false;
	if(buf==NULL) return false;
	lp=(char*)buf;	
	lp=lp+recn*2;
	safedays = (int)(((scada_progReg*)lp)->IntVal);
}
void evtdb::SetEventType()
{
	for(int i=0;i<m_nEvtTypeCounts;i++)
	{
		if(memcmp((char*)&evttype[i].Color+4,(char*)&m_pEvtType[i].Color+4,1)!=0)
		{
			memcpy((char*)&m_pEvtType[i].Color+4,(char*)&evttype[i].Color+4,1);
			LSI_SetChanged(m_EvtTid,i);
		}
	}

}
//取事件類型
bool evtdb::GetEventType(CString *pNames, WORD *pType,COLORREF *pColor)
{
	BYTE TypeID= 0,SubTypeID = 0;
	WORD type;
	if(pNames == 0)return false;
	if(pType == NULL)return false;
	for(int i = 0;i< m_nEvtTypeCounts;i++)
	{
		pNames->Format("%s",m_pEvtType[i].Describe);
		TypeID = m_pEvtType[i].TypeID;
		SubTypeID = m_pEvtType[i].SubtypeID;
		type = MAKEWORD(SubTypeID,TypeID);
		(WORD)*pType = type;
		pColor[i] = m_pEvtType[i].Color;
		pNames++;
		pType++;
	}
	memcpy(evttype,m_pEvtType,m_nEvtTypeCounts*sizeof(scada_eventType));
	return true;
	
}

//設置當前顯示類型
void evtdb::SetCurDisType(WORD iType)
{
	m_iCurEvtDisType = (WORD)iType;
}
void evtdb::SetCurDisType(char* warndes)
{
	BYTE TypeID = 0,SubtypeID = 0;
	for(int i = 0;i< m_nEvtTypeCounts;i++)
	{
		if(0 == strcmp(warndes,m_pEvtType[i].Describe))
		{
			m_iCurEvtDisType = MAKEWORD(SubtypeID,TypeID);
			break;
		}
	}
}
//取告警種類的顏色
COLORREF evtdb::GetWarnColor(BYTE TypeID, BYTE SubtypeID)
{
	if((TypeID<0)||(TypeID>=M_EVTT)) return COLORREF(RGB(255,255,255));	
	if((SubtypeID<0)||(SubtypeID>=M_EVTTS)) return COLORREF(RGB(255,255,255));	
	char ind=IndEvtT[TypeID][SubtypeID];
	if((ind<0)||(ind>=M_EVT)) return COLORREF(RGB(255,255,255));
	return m_pEvtType[ind].Color;
}
COLORREF evtdb::GetWarnColor(char* warndes)
{
	for(int i = 0;i< m_nEvtTypeCounts;i++)
	{
		if(0 == strcmp(warndes,m_pEvtType[i].Describe))
		{
			return m_pEvtType[i].Color;
		}
	}
	return COLORREF(RGB(255,255,255));	
}
//實時打印
void evtdb::PrintWarn()
{
	int i = 0;
	char dt[64];
	char desi[128];
	if(nEvt<=0)return ;
	memset(&dt,0,64);
	memset(&desi,0,128);
	
	CString szWarn;
	char printer[20];//="\\\\.\\LPT1";
	memset(&printer,0,20);
	memcpy(&printer,"\\\\.\\LPT1",20);
	DWORD wlen;

	if(!m_bPrint)//m_printf
	{		
		for(i = 0;i < nEvt;i++)
		{
			if(evt_tmp[i].IfPrint==1)
				continue;
			AckPrint(i);
		}
		Sleep(100);
		return;
	}	
	
	for(i = 0;i < nEvt;i++) //2003/7/7改動
	{
		//cursor = i;
		if(evt_tmp[i].IfPrint == 0)
		{
			if(!IsNeedPrint(evt_tmp[i].TypeID,evt_tmp[i].SubtypeID))
			{
				AckPrint(i);
				//Sleep(10);
				continue;
			}
			
			handle = CreateFile(printer, GENERIC_READ | GENERIC_WRITE,
				0, NULL, OPEN_EXISTING, NULL , NULL);
			
			if(handle==INVALID_HANDLE_VALUE)	
			{
				return;
			}
			if(!fisf)
			{
				fisf=true;
				headLine();
				Sleep(10);
				NewLine();
				Sleep(10);
				NewLine();
				Sleep(10);
			}
			GetDTMStr(evt_tmp[i].Time,evt_tmp[i].MilliSec,dt);	
			szWarn = dt;
			szWarn += "                   ";
			szWarn+=evt_tmp[i].Describe;
			memcpy(desi,szWarn,szWarn.GetLength());
			WriteFile(handle,desi,szWarn.GetLength(),&wlen,NULL);
			Sleep(100);
			NewLine();
			Sleep(100);
			CloseHandle(handle);
			AckPrint(i);
			Sleep(100);
		}
	}
	Sleep(100);
//	CloseHandle(handle);
}
//判斷是否需要打印
bool evtdb::IsNeedPrint(BYTE TypeID, BYTE SubtypeID)
{
	if((TypeID<0)||(TypeID>=M_EVTT)) return 0;
	if((SubtypeID<0)||(SubtypeID>=M_EVTTS)) return 0;
	char ind=IndEvtT[TypeID][SubtypeID];
	if((ind<0)||(ind>=M_EVT)) return 0;
	if(1 == m_pEvtType[ind].IfPrint)
		return true;
	else				return false;
}

void evtdb::NewLine()
{
    DWORD nWrite;
	BOOL result=FALSE;
	BYTE close[2];
	close[0]=0x0a;
	close[1]=0x0d;
    result = WriteFile( handle,close,2,&nWrite,NULL);  
}

void evtdb::headLine()
{
    DWORD nWrite;
	BOOL result=FALSE;
	char dtt1[64];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合色综合色综合色综合色综合 | 亚洲男女一区二区三区| 亚洲宅男天堂在线观看无病毒 | 一区二区三区日韩欧美| 麻豆高清免费国产一区| 色哟哟精品一区| 久久精品人人做| 亚洲国产精品一区二区尤物区| 精品亚洲国内自在自线福利| 色狠狠一区二区三区香蕉| 久久久亚洲精品石原莉奈| 亚洲午夜激情网页| 91在线丨porny丨国产| 久久综合色播五月| 亚洲成人av电影在线| av毛片久久久久**hd| 久久精品男人天堂av| 日韩av网站在线观看| 欧美综合视频在线观看| 中文字幕亚洲一区二区av在线| 国产精品资源在线| 欧美电视剧免费全集观看| 日韩影院在线观看| 欧美亚洲一区三区| 亚洲精品欧美激情| 日本精品视频一区二区三区| 国产精品国产三级国产专播品爱网 | 精品免费99久久| 六月丁香综合在线视频| 欧美区视频在线观看| 亚洲国产综合在线| 欧美日韩高清不卡| 日本成人超碰在线观看| 欧美一区中文字幕| 日本中文字幕不卡| 欧美α欧美αv大片| 精品亚洲国内自在自线福利| 精品国产人成亚洲区| 国产一区在线精品| 久久日韩粉嫩一区二区三区| 国产精品亚洲а∨天堂免在线| 久久久久久黄色| 国产91精品免费| 中文字幕中文字幕一区| 91蜜桃免费观看视频| 一区二区成人在线观看| 欧美色区777第一页| 天堂成人免费av电影一区| 日韩视频免费直播| 国产一区 二区| 国产精品国产a| 欧美在线一区二区| 久久精品国产秦先生| 久久久91精品国产一区二区精品 | 91精品国产乱码久久蜜臀| 免费观看在线色综合| 久久久久免费观看| 色婷婷亚洲综合| 午夜精品福利视频网站| 久久久影院官网| 99精品欧美一区二区蜜桃免费| 亚洲一区二区三区在线| 精品免费日韩av| 色天使色偷偷av一区二区| 天堂资源在线中文精品| 久久婷婷综合激情| 色婷婷精品久久二区二区蜜臀av | 不卡av免费在线观看| 亚洲国产一区二区视频| 久久久久久日产精品| 在线观看亚洲精品| 国内精品久久久久影院色| 亚洲精品中文在线影院| 精品日韩一区二区三区免费视频| 成人免费高清在线观看| 日本sm残虐另类| 18欧美亚洲精品| 欧美va亚洲va香蕉在线| 91麻豆免费看片| 国产美女视频91| 午夜精品福利视频网站| 国产精品乱人伦一区二区| 91精品国产乱| 在线免费不卡视频| 高清不卡在线观看av| 秋霞av亚洲一区二区三| 亚洲欧美激情小说另类| 久久久不卡网国产精品二区| 欧美色老头old∨ideo| 高清不卡在线观看| 狠狠色丁香婷综合久久| 亚洲成av人片在线| 亚洲精品免费电影| 国产精品第一页第二页第三页| 日韩精品一区二区三区视频播放| 色哟哟亚洲精品| 91在线精品秘密一区二区| 国模娜娜一区二区三区| 婷婷久久综合九色综合伊人色| 亚洲图片另类小说| 国产精品对白交换视频| 国产欧美日韩在线视频| 精品国产露脸精彩对白| 91精品在线免费观看| 欧美理论在线播放| 欧美日韩一级片网站| 欧美日韩一卡二卡三卡| 欧美天天综合网| 欧美群妇大交群中文字幕| 欧美网站一区二区| 欧美性受xxxx| 欧美三级视频在线观看| 在线免费观看视频一区| 欧美日韩精品综合在线| 欧美系列亚洲系列| 欧美精品 国产精品| 欧美精品国产精品| 日韩欧美一级二级三级久久久| 欧美一区日韩一区| 精品乱人伦一区二区三区| wwwwww.欧美系列| 久久久久久久性| 国产色综合一区| 一区精品在线播放| 亚洲免费伊人电影| 亚洲午夜在线电影| 麻豆精品视频在线观看| 久久激五月天综合精品| 国产精品主播直播| 92国产精品观看| 欧美性猛交xxxx黑人交| 欧美一区日本一区韩国一区| 欧美变态口味重另类| 国产欧美精品区一区二区三区| 国产精品久久免费看| 亚洲综合色婷婷| 久久精品国内一区二区三区| 精品系列免费在线观看| 成人免费观看视频| 欧美性xxxxx极品少妇| 日韩精品一区二| 国产精品第一页第二页第三页| 亚洲综合男人的天堂| 日韩国产一二三区| 国产成人一级电影| 91久久香蕉国产日韩欧美9色| 在线成人午夜影院| 国产视频一区不卡| 亚洲国产欧美在线人成| 国产综合久久久久影院| 日本丰满少妇一区二区三区| 欧美一区二区三级| 国产精品黄色在线观看| 日本三级韩国三级欧美三级| 国产福利精品导航| 欧美日韩大陆在线| 欧美国产精品一区| 偷拍一区二区三区| a4yy欧美一区二区三区| 欧美剧情片在线观看| 国产欧美一区二区精品仙草咪| 亚洲国产综合色| 成人一区二区三区视频| 日韩欧美亚洲国产精品字幕久久久| 亚洲天堂精品视频| 国产综合久久久久久久久久久久| 91福利在线免费观看| 国产日韩三级在线| 美女脱光内衣内裤视频久久网站 | 日韩一区二区三区视频在线| 国产精品蜜臀在线观看| 日韩电影在线一区| 色综合久久久久| 欧美激情一区三区| 麻豆91在线播放| 777精品伊人久久久久大香线蕉| 136国产福利精品导航| 精品伊人久久久久7777人| 欧美日韩另类一区| 亚洲男人的天堂网| jlzzjlzz欧美大全| 久久精品视频在线看| 麻豆91精品视频| 日韩丝袜美女视频| 丝袜亚洲另类欧美| 欧洲亚洲精品在线| 亚洲女人小视频在线观看| 成人午夜在线播放| 久久久不卡网国产精品二区| 久久99在线观看| 日韩手机在线导航| 日日摸夜夜添夜夜添亚洲女人| 欧美在线视频不卡| 亚洲一区二区成人在线观看| 97aⅴ精品视频一二三区| 中文幕一区二区三区久久蜜桃| 国产精品一区专区| 国产情人综合久久777777| 国产一区二区按摩在线观看| 久久久亚洲精品石原莉奈|