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

📄 dlgsetevtopt.cpp

📁 电力监控系统 实时告警处理程序
💻 CPP
字号:
// DlgSetEvtOpt.cpp : implementation file
//

#include "stdafx.h"
#include "realev.h"
#include "DlgSetEvtOpt.h"
#include "RealEvView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgSetEvtOpt dialog
#define EVENT_NUM      8

#define EVENT_NUM_SYS  15
#define EVENT_NUM_OPT  20
#define EVENT_NUM_YC   5
#define EVENT_NUM_YX   15
#define EVENT_NUM_SOE  12
#define EVENT_NUM_YK   2
#define EVENT_NUM_YT   3
#define EVENT_NUM_DZ   4
//事件类型描述
char* EventType[]={"系统日志","操作日志","遥测事件","遥信事件","SOE事件",
"遥控事件","遥调事件","定值事件","全部"};

//系统日志
char* SysRzEvent[]={"系统退出","系统启动","厂站投入","通道连接成功","控制操作","控制设置","修改数据",
"其它","通道连接失败","前置机切换为主备自动","前置机切换为主备手动","前置机切换为均流方式","厂站退出","数据源错误","人工操作提示(请操作)","全部"};

//操作日志描述id=1
char* OptRzEvent[]={"程序退出","程序启动","厂站投入","开启告警音效","确认告警音效","通道连接成功",
"确认所有闪烁及音效","确认本页闪烁及音效","控制操作","控制设置","修改数据","其它","屏蔽告警音效","通道连接失败","前置机切换为主备自动",
"前置机切换为主备手动","前置机切换为均流方式","厂站退出","数据源错误","手动追忆数据","全部"};


//遥测事件描述id=10
char* YcEvent[]={"恢复正常","越上限","越下限","越上上限","越下下限","全部"};

//遥信事件描述id=11
char* YxEvent[]={"合->分","分->合","保护复归","保护动作","事故","旁路替代","直流信号消失","直流信号产生","变位限值或事故限值","告警消失",
"告警产生","小电流接地消失","小电流接地产生","其它信号消失","其它信号产生","全部"};

//SOE事件描述id=12
char* SoeEvent[]={"合->分","分->合","保护复归","保护动作","直流信号消失","直流信号产生","告警消失",
"告警产生","小电流接地消失","小电流接地产生","其它信号消失","其它信号产生","全部"};

//遥控事件描述id=13
char* YkEvent[]={"合->分","分->合","全部"};

//遥调事件描述id=14
char* YtEvent[]={"上升","下降","急停","全部"};

//定值事件描述id=15
char* DzEvent[]={"定值","保护复归","手工对时","定值错误","全部"};


CDlgSetEvtOpt::CDlgSetEvtOpt(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgSetEvtOpt::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgSetEvtOpt)
	m_Str = _T("");
	m_IsShow = FALSE;
	//}}AFX_DATA_INIT
}


void CDlgSetEvtOpt::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgSetEvtOpt)
	DDX_Control(pDX, IDC_COMBO2, m_subComb);
	DDX_Control(pDX, IDC_COMBO1, m_comb);
	DDX_Text(pDX, IDC_EDIT1, m_Str);
	DDX_Check(pDX, IDC_CHECK1, m_IsShow);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgSetEvtOpt, CDialog)
	//{{AFX_MSG_MAP(CDlgSetEvtOpt)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelEvtType)
	ON_CBN_SELCHANGE(IDC_COMBO2, OnSelEvtTypeSub)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgSetEvtOpt message handlers

BOOL CDlgSetEvtOpt::OnInitDialog() 
{
	CDialog::OnInitDialog();
	for(int i=0;i<EVENT_NUM;i++) 
		m_comb.AddString(EventType[i]);
	m_comb.SetCurSel(-1);//初始化为全部
	m_CurNo=-1;
	LongFlag = false;
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgSetEvtOpt::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(true);

	CRealEvView* pView=((CRealEvView*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView());
	if(pView->m_evtdb.m_EvtOpt&&pView->m_evtdb.m_pEvtOpt)
	{
		if((m_CurNo>=0)&&(m_CurNo<pView->m_evtdb.m_pEvtOpt->userec))
		{
			TxtPut(pView->m_evtdb.m_EvtOpt[m_CurNo].EvtOptExp);
			if(LongFlag)
				return;
			pView->m_evtdb.m_pEvtOpt->recattr[m_CurNo].changed=1;
			if(m_IsShow)	pView->m_evtdb.m_EvtOpt[m_CurNo].EveTypeID=1;
			else	pView->m_evtdb.m_EvtOpt[m_CurNo].EveTypeID=0;
		}
	}
	
	CDialog::OnOK();
}

void CDlgSetEvtOpt::OnSelEvtType() 
{
	UpdateData(true);
	int index=m_comb.GetCurSel();
	int i=0;
	m_subComb.ResetContent();
	switch(index) 
	{
	case 0:
		for(i=0;i<EVENT_NUM_SYS;i++)
			m_subComb.AddString(SysRzEvent[i]);
		break;
	case 1:
		for(i=0;i<EVENT_NUM_OPT;i++)
			m_subComb.AddString(OptRzEvent[i]);
		break;
	case 2:
		for(i=0;i<EVENT_NUM_YC;i++)
			m_subComb.AddString(YcEvent[i]);
		break;
	case 3:
		for(i=0;i<EVENT_NUM_YX;i++)
			m_subComb.AddString(YxEvent[i]);
		break;
	case 4:
		for(i=0;i<EVENT_NUM_SOE;i++)
			m_subComb.AddString(SoeEvent[i]);
		break;
	case 5:
		for(i=0;i<EVENT_NUM_YK;i++)
			m_subComb.AddString(YkEvent[i]);
		m_subComb.SetCurSel(EVENT_NUM_YK);
		break;
	case 6:
		for(i=0;i<EVENT_NUM_YT;i++)
			m_subComb.AddString(YtEvent[i]);
		break;
	case 7:
		for(i=0;i<EVENT_NUM_DZ;i++)
			m_subComb.AddString(DzEvent[i]);
		break;
//	case 8:
//		m_subComb.AddString("全部");
//		m_subComb.SetCurSel(0);
	default:
		break;
	}
	m_subComb.SetCurSel(-1);
}

void CDlgSetEvtOpt::OnSelEvtTypeSub() 
{
	UpdateData(true);
	m_Str="";
	m_CurNo=-1;
	m_IsShow=false;
	char TypeID=m_comb.GetCurSel();
	char SubtypeID=m_subComb.GetCurSel();
	
	CRealEvView* pView=((CRealEvView*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView());
	if(!pView->m_evtdb.m_EvtOpt) return ;
	
	for(int i = 0;i< pView->m_evtdb.m_nEvtTypeCounts;i++)
	{
		if(pView->m_evtdb.m_pEvtType[i].TypeID==TypeID)
		{
			if(pView->m_evtdb.m_pEvtType[i].SubtypeID==SubtypeID)
			{
				TxtGet( pView->m_evtdb.m_EvtOpt[i].EvtOptExp);
				m_CurNo=i;
				if(pView->m_evtdb.m_EvtOpt[i].EveTypeID)	m_IsShow=true;
			}
		}
	}
	UpdateData(false);
}

void CDlgSetEvtOpt::TxtGet(char *buf)
{
	memset(m_buf,0,LEN_BUF);
	memcpy(m_buf,buf,LEN_BUF);
	for(int i=0;i<LEN_BUF;i++)
	{
		if(m_buf[i]==0x00) break;
		if(m_buf[i]==0x3C)
		if(m_buf[i+1]==0x62)
		if(m_buf[i+2]==0x72)
		{
			if(m_buf[i+3]==0x3E)
			{
				memcpy(&m_buf[i],&m_buf[i+2],LEN_BUF-i-2);
				m_buf[i]=0x0d;
				m_buf[i+1]=0x0a;
			}
		}
	}
	m_Str.Format("%s", m_buf);

}

void CDlgSetEvtOpt::TxtPut(char *buf)
{
//	memset(m_buf,0,LEN_BUF);
	int length = m_Str.GetLength();
	sprintf(m_buf,"%s",m_Str);
//	memcpy(m_buf,buf,LEN_BUF);
	for(int i=0;i<LEN_BUF;i++)
	{
		if(m_buf[i]==0x00) break;
		if(m_buf[i]==0x0d)
		{
			if(m_buf[i+1]==0x0a)
			{
				memcpy(&m_buf[i+2],&m_buf[i],LEN_BUF-i-2);
				m_buf[i]=0x3C;
				m_buf[i+1]=0x62;
				m_buf[i+2]=0x72;
				m_buf[i+3]=0x3E;
				length = length+2;//0D,0A转化成<br>总长度加2
			}
		}
	}
	if(length>=512)
	{
		LongFlag = true;
		AfxMessageBox("注意,输入长度不能超过512字符!");
	}
	else
	{
		LongFlag = false;
		memcpy(buf,m_buf,LEN_BUF);
	}
//			sprintf(buf,"%s",m_Str);

}

⌨️ 快捷键说明

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