📄 ruledefineview.cpp
字号:
// RuleDefineView.cpp : implementation file
//
#include "stdafx.h"
#include "AcquireKlg.h"
#include "AcquireKlgDoc.h"
#include "MainFrm.h"
//四个视图类头文件
#include "RuleDefineView.h"
#include "NodeTreeView.h"
#include "RuleWizardView.h"
#include "TipView.h"
#include "Global.h"
#include <math.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern int nCurStyle;
extern CADODatabase GlDataBase;
/////////////////////////////////////////////////////////////////////////////
// CRuleDefineView
IMPLEMENT_DYNCREATE(CRuleDefineView, CFormView)
CRuleDefineView::CRuleDefineView()
: CFormView(CRuleDefineView::IDD),m_RecordSet(&GlDataBase),m_RecordSetfun(&GlDataBase),m_cBlurPage(this)//,m_MHDialog(this)
{
//{{AFX_DATA_INIT(CRuleDefineView)
//}}AFX_DATA_INIT
}
CRuleDefineView::~CRuleDefineView()
{
}
void CRuleDefineView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRuleDefineView)
DDX_Control(pDX, IDC_TAB_4SHEETS, m_cTabSheets);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRuleDefineView, CFormView)
//{{AFX_MSG_MAP(CRuleDefineView)
ON_WM_CREATE()
ON_WM_LBUTTONDOWN()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_4SHEETS, OnSelchangeTab4sheets)
ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew)
ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
ON_EN_KILLFOCUS(IDC_EDIT_REGRULE, OnKillfocusEditRegrule)
ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRuleDefineView diagnostics
#ifdef _DEBUG
void CRuleDefineView::AssertValid() const
{
CFormView::AssertValid();
}
void CRuleDefineView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CRuleDefineView message handlers
//////////////////自定义函数////////////////////////////////////////////////
//获得指定的视图类指针
CView* CRuleDefineView::GetView(CRuntimeClass* pClass)
{
CAcquireKlgDoc* pDoc=(CAcquireKlgDoc*)GetDocument();
ASSERT(pDoc);
CView* pView = NULL;
POSITION pos=pDoc->GetFirstViewPosition();
while(pos!=NULL){
pView=pDoc->GetNextView(pos);
if(pView->IsKindOf(pClass))
break;
}
if(!pView->IsKindOf(pClass)){
AfxMessageBox("Can't Locate the View.");
return NULL;
}
return pView;
}
bool CRuleDefineView::SetCorMenu(int index){
m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_REGRULE,MF_UNCHECKED);
m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_BLURRULE,MF_UNCHECKED);
m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_MERGE,MF_UNCHECKED);
m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_NETWORK,MF_UNCHECKED);
if(index==1)
m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_REGRULE,MF_CHECKED);
else if (index==2)
m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_BLURRULE,MF_CHECKED);
else if (index==3)
m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_MERGE,MF_CHECKED);
else if (index==4)
m_pMainWnd->GetMenu()->CheckMenuItem(IDM_FA_NETWORK,MF_CHECKED);
else
return false;
return true;
};
//
CString CRuleDefineView::getid(){
CString strid;
GetDlgItemText(IDC_EDIT_ORDER,strid);
return strid;
}
//在最上4个编辑框中显示结点的基本信息
bool CRuleDefineView::SetBasicInfo(CString strObjname,CString strNodename,int levelnum,int nodeorder){
SetDlgItemText(IDC_EDIT_OBJNAME,strObjname);
SetDlgItemText(IDC_EDIT_NODENAME,strNodename);
SetDlgItemInt(IDC_EDIT_LEVEL,levelnum);
SetDlgItemInt(IDC_EDIT_ORDER,nodeorder);
return true;
}
//获取选中结点的所有精确推理规则
void CRuleDefineView::GetRegRules(){
int nodenum = m_pNtView->GetNodeID();
if(nodenum == ERR_NOSELETED) return;
CString strQuery;
strQuery.Format("select * from Rule_Table where NodeSN=%d",nodenum);
m_RecordSet.SetQuery(strQuery);
if(TRUE == m_RecordSet.Open()){
if(0 == m_RecordSet.GetRecordCount())
m_RecordSet.Close();
}
}
//获取选中结点的所有模糊推理规则
void CRuleDefineView::GetBlurRules(){
int nodenum = m_pNtView->GetNodeID();
if(nodenum == ERR_NOSELETED) return;
CString strQuery;
strQuery.Format("select * from blur_rule_table where nodesn=%d",nodenum);
m_RecordSet.SetQuery(strQuery);
if(TRUE == m_RecordSet.Open()){
if(0 == m_RecordSet.GetRecordCount())
m_RecordSet.Close();
}
}
//获取选中结点的所有融合推理规则
void CRuleDefineView::GetFuseRules(){
int nodenum = m_pNtView->GetNodeID();
if(nodenum == ERR_NOSELETED) return;
CString strQuery;
strQuery.Format("select * from Fuse_Rule_Table where nodesn=%d",nodenum);
m_RecordSet.SetQuery(strQuery);
if(TRUE == m_RecordSet.Open()){
if(0 == m_RecordSet.GetRecordCount())
m_RecordSet.Close();
}
}
//获取选中结点的所有传感器权值
/*void CRuleDefineView::GetWeight(){
int nodenum = m_pNtView->GetNodeID();
if(nodenum == ERR_NOSELETED) return;
CString strQuery;
strQuery.Format("select * from Fuse_Rule_Table where nodesn=%d",nodenum);
m_RecordSet.SetQuery(strQuery);
if(TRUE == m_RecordSet.Open()){
if(0 == m_RecordSet.GetRecordCount())
m_RecordSet.Close();
}
}*/
//获取选中结点的所有模糊函数
void CRuleDefineView::GetBlurFun(){
int nodenum = m_pNtView->GetNodeID();
if(nodenum == ERR_NOSELETED) return;
CString strQuery;
strQuery.Format("select * from rule_unit_sub_table where nodesn=%d",nodenum);
m_RecordSetfun.SetQuery(strQuery);
if(TRUE == m_RecordSetfun.Open()){
if(0 == m_RecordSetfun.GetRecordCount())
m_RecordSetfun.Close();
}
}
//获取选中结点的当前模糊函数
void CRuleDefineView::GetCurBlurFun(){
int nodenum = m_pNtView->GetNodeID();
int funnum=m_cBlurPage.m_cmFunType.GetCurSel()+1;
if(nodenum == ERR_NOSELETED) return;
CString strQuery;
strQuery.Format("select * from rule_unit_sub_table where nodesn=%d and busfun=%d",nodenum,funnum);
m_RecordSetfun.SetQuery(strQuery);
if(TRUE == m_RecordSetfun.Open()){
if(0 == m_RecordSetfun.GetRecordCount())
m_RecordSetfun.Close();
}
}
//svefunDlg获取选中结点的当前模糊函数
void CRuleDefineView::GetCurFun(){
int nodenum = m_pNtView->GetNodeID();
int funnum=m_csavefunDlg.m_cmFunType.GetCurSel()+1;
if(nodenum == ERR_NOSELETED) return;
CString strQuery;
strQuery.Format("select * from rule_unit_sub_table where nodesn=%d and busfun=%d",nodenum,funnum);
m_RecordSetfun.SetQuery(strQuery);
if(TRUE == m_RecordSetfun.Open()){
if(0 == m_RecordSetfun.GetRecordCount())
m_RecordSetfun.Close();
}
}
//显示一个值
bool CRuleDefineView::ShowRule(){
//m_MHDialog.SetDlgItemText(IDC_EDIT1,"大苏打");
return true;
}
//
//显示一条完整的精确规则
bool CRuleDefineView::ShowRegRules(){
CString strregordernum, strname,strrule,strresult,strrelibility,strdescribe,strQuery;
if(m_RecordSet.IsOpen()==false||m_RecordSet.IsEOF()){
m_cRegPage.SetDlgItemText(IDC_EDIT_REG_ORDERNUM,"");
m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULENAME,"");
m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULE,"");
m_cRegPage.SetDlgItemText(IDC_COMBO_outnode,"");
//m_cRegPage.SetDlgItemText(IDC_EDIT_RELIEBILITY,"");
m_cRegPage.SetDlgItemText(IDC_EDIT_DESCRIBE,"");
return false;
}
//规则序号,结点号,规则名,规则内容,规则输出结点,规则可信度,规则描述
m_RecordSet.GetFieldValue("RuleSN",strregordernum);
m_RecordSet.GetFieldValue("RName",strname);
m_RecordSet.GetFieldValue("RContent",strrule);
m_RecordSet.GetFieldValue("OutNode",strresult);
// m_RecordSet.GetFieldValue("规则可信度",strrelibility);
m_RecordSet.GetFieldValue("RMemo",strdescribe);
m_cRegPage.SetDlgItemText(IDC_EDIT_REG_ORDERNUM,strregordernum);
m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULENAME,strname);
m_cRegPage.SetDlgItemText(IDC_EDIT_REGRULE,strrule);
m_cRegPage.SetDlgItemText(IDC_COMBO_outnode,strresult);
//m_cRegPage.SetDlgItemText(IDC_EDIT_RELIEBILITY,strrelibility);
m_cRegPage.SetDlgItemText(IDC_EDIT_DESCRIBE,strdescribe);
return true;
}
//显示一条完整的融合规则
bool CRuleDefineView::ShowFuseRules(){
CString strrhgzxh, strrhgzm,strrhgznr,strrhgzlx,strjdgs,strcgqgs,strxzxsk,strrhyz;
int irhgzlx;
if(m_RecordSet.IsOpen()==false||m_RecordSet.IsEOF()){
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhxh,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhm,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhnr,"");
m_cBlurMergePage.SetDlgItemText(IDC_COMBO_rhlx,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_jdgs,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_cgqgs,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_xzxs,"");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhyz,"");
return false;
}
//规则序号,结点号,规则名,规则内容,规则类型,规则结点个数,规则传感器个数,修正系数
m_RecordSet.GetFieldValue("FRsn",strrhgzxh);
m_RecordSet.GetFieldValue("FRname",strrhgzm);
m_RecordSet.GetFieldValue("FRContent",strrhgznr);
m_RecordSet.GetFieldValue("FRType",irhgzlx);
m_RecordSet.GetFieldValue("NodeC",strjdgs);
m_RecordSet.GetFieldValue("SensorC",strcgqgs);
m_RecordSet.GetFieldValue("Revise",strxzxsk);
m_RecordSet.GetFieldValue("Svalue",strrhyz);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhxh,strrhgzxh);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhm,strrhgzm);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhnr,strrhgznr);
m_cBlurMergePage.SetFuseTypeCurSel(irhgzlx);
m_cBlurMergePage.SetDlgItemText(IDC_COMBO_rhlx,strrhgzlx);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_jdgs,strjdgs);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_cgqgs,strcgqgs);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_xzxs,strxzxsk);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_rhyz,strrhyz);
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_cgqqk,"单击按钮输入->");
m_cBlurMergePage.SetDlgItemText(IDC_EDIT_mhhsqk,"单击按钮输入->");
return true;
}
//显示一条完整的模糊规则
bool CRuleDefineView::ShowBlurRules(){
CString strblurorder,//模糊规则序号
strblurname,//模糊规则名
strrule,//模糊规则内容
stroutnode,//输出结点号
stryz;//阈值
if(m_RecordSet.IsOpen()==false||m_RecordSet.IsEOF()){
m_cBlurPage.SetDlgItemText(IDC_EDIT_BLUR_ORDER,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURNAME,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURDESCRIBE,"");
m_cBlurPage.SetDlgItemText(IDC_COMBO_outnode,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT_yz,"");
return false;
}
m_RecordSet.GetFieldValue("brulesn",strblurorder);
m_RecordSet.GetFieldValue("BRname",strblurname);
m_RecordSet.GetFieldValue("BRContent",strrule);
m_RecordSet.GetFieldValue("outnode",stroutnode);
m_RecordSet.GetFieldValue("svalue",stryz);
m_cBlurPage.SetDlgItemText(IDC_EDIT_BLUR_ORDER,strblurorder);
m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURNAME,strblurname);
m_cBlurPage.SetDlgItemText(IDC_EDIT_BLURDESCRIBE,strrule);
m_cBlurPage.SetDlgItemText(IDC_COMBO_outnode,stroutnode);
m_cBlurPage.SetDlgItemText(IDC_EDIT_yz,stryz);
return true;
}
//显示一条完整的模糊函数
bool CRuleDefineView::ShowBlurFun(){
int nlshsType;//隶属函数类型
CString strtezhengzhi,//特征值
strtjcs,//调节参数
strljxpc,//左极限偏差
strrjxpc,//右极限偏差
strlrc,//左容差
strrrc;//右容差
if(m_RecordSetfun.IsOpen()==false||m_RecordSetfun.IsEOF()){
//m_cBlurPage.SetDlgItemText(IDC_COMBO_DATATYPE,"");
m_cBlurPage.SetDlgItemText(IDC_COMBO_FUNTYPE,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT_TEZHEZHI,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT1_TJPARA,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT1_LJXPC,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT_RJXPC,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT_LRONGCHA,"");
m_cBlurPage.SetDlgItemText(IDC_EDIT_RRONGCHA,"");
return false;
}
m_RecordSetfun.GetFieldValue("busfun",nlshsType);
m_cBlurPage.SetFuncTypeCurSel(nlshsType);
if(nlshsType == 1){
m_cBlurPage.SetZhenTai();
m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
m_cBlurPage.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
m_RecordSetfun.GetFieldValue("Para2",strtjcs);
m_cBlurPage.SetDlgItemText(IDC_EDIT1_TJPARA,strtjcs);
}
else if(nlshsType == 2){
m_cBlurPage.SetSanJiao();
m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
m_cBlurPage.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
m_RecordSetfun.GetFieldValue("Para2",strljxpc);
m_cBlurPage.SetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);
m_RecordSetfun.GetFieldValue("Para3",strrjxpc);
m_cBlurPage.SetDlgItemText(IDC_EDIT_RJXPC,strrjxpc);
}
else if (nlshsType == 3){
m_cBlurPage.SetTiXing();
m_RecordSetfun.GetFieldValue("Para1",strtezhengzhi);
m_cBlurPage.SetDlgItemText(IDC_EDIT_TEZHEZHI,strtezhengzhi);
m_RecordSetfun.GetFieldValue("Para2",strljxpc);
m_cBlurPage.SetDlgItemText(IDC_EDIT1_LJXPC,strljxpc);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -