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

📄 tyopcclientdoc.cpp

📁 OPC Client 源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			// Set document modified flag:
			SetModified ();
			}
//*/
		}
}
//*
void CTYOPCClientDoc::OnOPCServerDel() 
{
	// TODO: Add your command handler code here
	BeginWaitCursor();

	CString strOPCName=m_cOPCMgt.GetSelOPCServer () ->GetName ();
	UpdateAllViews (NULL, HINT_REMOVE_SERVER, (CObject *)m_cOPCMgt.GetSelOPCServer ());
	m_cOPCMgt.DelOPCServer (&strOPCName);

	EndWaitCursor();

	SetModifiedFlag (TRUE);
	
}
//*/
void CTYOPCClientDoc::OnOPCGroupDel() 
{
	// TODO: Add your command handler code here
	BeginWaitCursor();
//	TRACE(_T("CTYOPCClientDoc::OnOPCGroupDel()---1\n"));
	CString strOPCName=m_cOPCMgt.GetSelOPCGroup () ->GetName ();
	UpdateAllViews (NULL, HINT_GROUP_REMOVE, (CObject *)m_cOPCMgt.GetSelOPCGroup ());
//	TRACE(_T("CTYOPCClientDoc::OnOPCGroupDel()---2\n"));
	m_cOPCMgt.DelOPCGroup (&strOPCName);
	//
	EndWaitCursor();

	SetModifiedFlag (TRUE);

}

void CTYOPCClientDoc::OnOPCItemDel() 
{
	// TODO: Add your command handler code here
	//1.得到选中项
	CStringArray strSelItems;
	UpdateAllViews (NULL, HINT_GETSEL_ITEM, (CObject *)&strSelItems);
	TRACE("CTYOPCClientDoc::OnOPCItemDel():SelItemCount=%d\n",strSelItems.GetUpperBound ()+1);
	//2.删除选中项
	m_cOPCMgt.GetSelOPCGroup ()->DelItem (&strSelItems);
	UpdateAllViews (NULL, HINT_ITEM_REMOVE, (CObject *)m_cOPCMgt.GetSelOPCGroup ());
	UpdateAllViews (NULL, HINT_ITEM_DELETE, (CObject *)&strSelItems);	//EVENT VIEW
	

}
//*
void CTYOPCClientDoc::OnOPCServerProperty() 
{
	// TODO: Add your command handler code here
	
	COPCRemoteMachine* pRemPC=m_cOPCMgt.GetSelOPCRemotePC ();
	COPCServer* pServer=m_cOPCMgt.GetSelOPCServer ();

	CDlgOPCServerProperty dlg(pRemPC,pServer);

	CString strName;
	BOOL    bConnect=FALSE;

	if(IDOK==dlg.DoModal ())
	{

		strName=dlg.m_strName ;
		bConnect=dlg.m_bConnect ;

		//等待处理...
		BeginWaitCursor();
		//判断是否重名
		if(strName!=pServer->GetName ())
		{
			if(!pRemPC->IsBeingName (strName))
				pRemPC->ModifyServerName (pServer->GetName (),strName);
		}

		//判断连接状态
		if(bConnect != pServer->IsConnected ())
		{
			if(bConnect)
				pServer->Connect ();
			else
				pServer->Disconnect ();
		}

		//改变OPCServer属性
		UpdateAllViews (NULL, HINT_SERVER_PROPERTY, (CObject *)m_cOPCMgt.GetSelOPCServer ());	

		//处理结束
		EndWaitCursor();

		SetModifiedFlag (TRUE);
	}
}
//*/
void CTYOPCClientDoc::OnOPCRemPCAdd() 
{
	// TODO: Add your command handler code here
	//调用OPCServer列表
	CDlgOPCServerList Dlg;

	Dlg.SetOPCBrowse (&m_cOPCMgt);

	if(IDOK==Dlg.DoModal ())
	{	//得到OPC服务器
//		CString strProgID=Dlg.m_strProgID;//Takebishi.Modbus.1
//调试
//		strProgID="Takebishi.Modbus.1";

//		CString strRemotePCName=Dlg.m_strRemotePCName;
//		strRemotePCName=LOACAL_PC_NAME;
		BeginWaitCursor();

		COPCServer* pOPCServer=new COPCServer;
		
		//OPC SERVER PC
		pOPCServer->m_strRemoteMachine =Dlg.m_strRemPC ;
		pOPCServer->m_strRemoteIP=Dlg.m_strIPAddr ;
		//OPC SERVER PROGID
		pOPCServer->m_strProgID=Dlg.m_strProgID;
		//OPC SERVER NAME
		pOPCServer->m_strName =Dlg.m_strOPCServerName ;
		//OPC SERVER VERSION
		pOPCServer->m_unOPCVersion =Dlg.m_unOPCVersion ;

		//检查是否已经存在远程计算机
		COPCRemoteMachine* pRemPC=NULL;
		if(!m_cOPCMgt.IsBeingRemPC (pOPCServer->m_strRemoteMachine,pRemPC))
		{
			pRemPC=new COPCRemoteMachine;
			pRemPC->AddOPCServer (pOPCServer);
			//OPC SERVER PC IP ADDRESS
			pRemPC->SetIPAddr (Dlg.m_strIPAddr); 
			pRemPC->SetName  (Dlg.m_strRemPC); 
			
			m_cOPCMgt.AddOPCRemPC (pRemPC);
			//更新视
			this->UpdateAllViews (NULL,HINT_REMPC_ADD,(CObject*)pRemPC);
		}
		else
		{
			pRemPC->AddOPCServer (pOPCServer);
		}

		//连接 OPC Server
		pOPCServer->Connect ();

		//更新视
		this->UpdateAllViews (NULL,HINT_SERVER_ADD,(CObject*)pOPCServer);

		//
		EndWaitCursor();

		SetModifiedFlag (TRUE);
	}
}

void CTYOPCClientDoc::OnOPCRemPCDel() 
{
	// TODO: Add your command handler code here
	BeginWaitCursor();
	//更新视
	this->UpdateAllViews (NULL,HINT_REMPC_REMOVE,(CObject*)m_cOPCMgt.GetSelOPCRemotePC ());

	//
	CString strRemPC=m_cOPCMgt.GetSelOPCRemotePC ()->GetName ();
	m_cOPCMgt.DelOPCRemPC (&strRemPC);
	//
	EndWaitCursor();
	
	SetModifiedFlag (TRUE);

}

DWORD CTYOPCClientDoc::GetSelBranch()
{
	return m_dwSelBranch;
}

void CTYOPCClientDoc::SetSelBranch(DWORD dwSelBranch)
{
	m_dwSelBranch=dwSelBranch;
}

void CTYOPCClientDoc::OnUpdateCmdUI(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
//	TRACE(_T("CTYOPCClientDoc::OnUpdateCmdUI(=%d)\n"),pCmdUI->m_nID);


	if(ID_OPCREMPC_ADD==pCmdUI->m_nID
		||ID_OPCSERVER_ADD==pCmdUI->m_nID
		)
	{
		pCmdUI->Enable (TRUE);
		return;
	}

	switch (m_dwSelBranch)
	{
	case SEL_BRANCH_NULL:		//什么没有选择
	{
		if(ID_OPCREMPC_ADD==pCmdUI->m_nID) 
			pCmdUI->Enable (TRUE);
		else
			pCmdUI->Enable (FALSE);
		break;
	}
	case SEL_BRANCH_LOACALPC:	//本地计算机一级
	{
		if(ID_OPCREMPC_ADD==pCmdUI->m_nID 
		|| ID_OPCSERVER_ADD==pCmdUI->m_nID
		|| ID_OPCREMPC_PROPER==pCmdUI->m_nID
		)
			pCmdUI->Enable (TRUE);
		else
			pCmdUI->Enable (FALSE);
		break;
	}
	case SEL_BRANCH_REMOTEPC:	//远程计算机一级
	{
		if(ID_OPCREMPC_ADD==pCmdUI->m_nID 
		|| ID_OPCREMPC_DEL==pCmdUI->m_nID
		|| ID_OPCSERVER_ADD==pCmdUI->m_nID
		|| ID_OPCREMPC_PROPER==pCmdUI->m_nID
		)
			pCmdUI->Enable (TRUE);
		else
			pCmdUI->Enable (FALSE);
		break;
	}
	//OPCSERVER
	case SEL_BRANCH_OPCSERVER:	//OPCSERVER
	{
		if((ID_OPCSERVER_BEGIN<=pCmdUI->m_nID 
		 &&	ID_OPCSERVER_END>=pCmdUI->m_nID)
		|| ID_OPCGROUP_ADD==pCmdUI->m_nID
		)
			pCmdUI->Enable (TRUE);
		else
			pCmdUI->Enable (FALSE);
		break;
	}
	//OPCGROUP
	case SEL_BRANCH_OPCGROUP:	//OPCGROUP
	{
		if((ID_OPCGROUP_BEGIN<=pCmdUI->m_nID 
		 &&	ID_OPCGROUP_END>=pCmdUI->m_nID)
		|| ID_OPCITEM_ADD==pCmdUI->m_nID
		)
			pCmdUI->Enable (TRUE);
		else
			pCmdUI->Enable (FALSE);
		break;
	}
	//OPCITEM
	case SEL_BRANCH_OPCITEM_NULL:	//OPCITEM
	{
		if(m_cOPCMgt.GetSelOPCGroup ()==NULL)
			pCmdUI->Enable (FALSE);
		else if(ID_OPCITEM_ADD==pCmdUI->m_nID)
			pCmdUI->Enable (TRUE);
		else
			pCmdUI->Enable (FALSE);
		break;
	}
	case SEL_BRANCH_OPCITEM_ONE:	//OPCITEM
	{
		pCmdUI->Enable (TRUE);
		break;
	}
	case SEL_BRANCH_OPCITEM_MORE:	//OPCITEM
	{
		switch(pCmdUI->m_nID)
		{
//		case ID_OPCITEM_ADD:
		case ID_OPCITEM_DEL:
		case ID_OPCITEM_SET_ACTIVE:
		case ID_OPCITEM_SET_INACTIVE:
			pCmdUI->Enable (TRUE);
			break;
		default:
			pCmdUI->Enable (FALSE);
			break;
		}
	}
	default:
		;
	}

}

void CTYOPCClientDoc::OnOPCItemAsync20Read() 
{
	// TODO: Add your command handler code here
	//1.得到选中项
	CStringArray strSelItems;
	UpdateAllViews (NULL, HINT_GETSEL_ITEM, (CObject *)&strSelItems);
	//2.异步读取数据
	m_cOPCMgt.GetSelOPCGroup ()->ReadAsync20 (strSelItems);
}

void CTYOPCClientDoc::OnOPCItemAsync20RefreshCache() 
{
	// TODO: Add your command handler code here
	m_cOPCMgt.GetSelOPCGroup ()->RefreshAsync20 (true);
}

void CTYOPCClientDoc::OnOPCItemAsync20RefreshDevice() 
{
	// TODO: Add your command handler code here
	m_cOPCMgt.GetSelOPCGroup ()->RefreshAsync20 (false);	
}

void CTYOPCClientDoc::OnOPCItemAsync20Write() 
{
	// TODO: Add your command handler code here
	//1.得到选中项
	CStringArray strSelItems;
	UpdateAllViews (NULL, HINT_GETSEL_ITEM, (CObject *)&strSelItems);
	//2.弹出修改对话框
	CDlgOPCItemWrite Dlg(AfxGetMainWnd ());
	Dlg.SetWriteItem (this,strSelItems);
	Dlg.DoModal ();
}

void CTYOPCClientDoc::OnOPCItemSetActive() 
{
	// TODO: Add your command handler code here
	//1.得到选中项
	CStringArray strSelItems;
	UpdateAllViews (NULL, HINT_GETSEL_ITEM, (CObject *)&strSelItems);
	
	m_cOPCMgt.GetSelOPCGroup ()->SetItemActiveState(strSelItems,true);

	SetModifiedFlag (TRUE);
}

void CTYOPCClientDoc::OnOPCItemSetInactive() 
{
	// TODO: Add your command handler code here
	//1.得到选中项
	CStringArray strSelItems;
	UpdateAllViews (NULL, HINT_GETSEL_ITEM, (CObject *)&strSelItems);

	m_cOPCMgt.GetSelOPCGroup ()->SetItemActiveState(strSelItems,false);

	SetModifiedFlag (TRUE);
}

/*
void CTYOPCClientDoc::OnOPCServerSetName() 
{
	// TODO: Add your command handler code here

	CString strName=m_cOPCMgt.GetSelOPCServer ()->GetName ();
	CDlgModifyName dlg(&strName);
	if(IDOK==dlg.DoModal())
	{
		strName=dlg.GetName();
		if(!m_cOPCMgt.GetSelOPCServer ()->IsBeingName (strName))
		{
			m_cOPCMgt.GetSelOPCServer ()->SetName (strName);
			UpdateAllViews (NULL, HINT_SERVER_RENAME, (CObject *)&strName);
		}
		else
		{
			CString strTip;
			strTip.Format (_T("[%s]已经存在\n请重新命名"),strName);
			AfxMessageBox (strTip, MB_OK| MB_ICONQUESTION);
		}
	}
}
//*/
/*
void CTYOPCClientDoc::OnOPCGroupSetName() 
{
	// TODO: Add your command handler code here
	CString strName=m_cOPCMgt.GetSelOPCGroup ()->GetName ();
	CDlgModifyName dlg(&strName);
	if(IDOK==dlg.DoModal())
	{
		strName=dlg.GetName();
		m_cOPCMgt.GetSelOPCGroup ()->SetName (strName);
		UpdateAllViews (NULL, HINT_GROUP_RENAME, (CObject *)&strName);
	}
}
//*/

//DEL void CTYOPCClientDoc::OnOPCItemSetName() 
//DEL {
//DEL 	// TODO: Add your command handler code here
//DEL 	//1.得到选中项
//DEL 	CStringArray strSelItems;
//DEL 	UpdateAllViews (NULL, HINT_GETSEL_ITEM, (CObject *)&strSelItems);
//DEL 	CString strSelItem;
//DEL 	for(int nIndex=0;nIndex<=strSelItems.GetUpperBound ();nIndex++)
//DEL 	{
//DEL 		strSelItem=strSelItems.GetAt (nIndex);
//DEL 		COPCItem* pItem=m_cOPCMgt.GetSelOPCGroup ()->GetItem (strSelItem);
//DEL 		if(pItem)
//DEL 		{
//DEL 			CString strTip=_T("ID:")+pItem->GetItemID ();
//DEL  			CDlgModifyName dlg(&pItem->GetAlias (),&strTip);
//DEL 			if(IDOK==dlg.DoModal())
//DEL 			{
//DEL 				CString strText=dlg.GetName();
//DEL 				if(!m_cOPCMgt.GetSelOPCGroup ()->IsBeingAlias (strText))
//DEL  					pItem->SetAlias (strText);
//DEL 				else
//DEL 				{
//DEL 					CString strTip;
//DEL 					strTip.Format ("%s 项已经存在[%s]组中",m_cOPCMgt.GetSelOPCGroup ()->GetName());
//DEL 
//DEL 					AfxMessageBox (strTip, MB_OK| MB_ICONQUESTION);
//DEL 				}
//DEL 			}
//DEL 		}
//DEL 	}
//DEL 	
//DEL }

void CTYOPCClientDoc::OnFilePrint() 
{
	// TODO: Add your command handler code here
	
}


void CTYOPCClientDoc::OnUpdateAutoOpenFile(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck (m_bAutoOpenFile);
}

void CTYOPCClientDoc::OnAutoOpenFile() 
{
	// TODO: Add your command handler code here
	m_bAutoOpenFile=!m_bAutoOpenFile;
	
}

void CTYOPCClientDoc::LoadDocument()
{
	try{
	m_bAutoOpenFile=AfxGetApp ()->GetProfileInt(lpszRegSection,lpszNameID,m_bAutoOpenFile);
	CString strFileName = AfxGetApp ()->GetProfileString(lpszRegSection, lpszName);
	if(m_bAutoOpenFile)
	{
		CString strTip;
		strTip.Format ("正在加载文件<%s>",strFileName);
		LogMsg(HINT_LOAD_PROJECT,(CObject *)&strTip);

		strFileName.TrimLeft ();
		strFileName.TrimRight ();
		if(!strFileName.IsEmpty ())
			this->OnOpenDocument (strFileName);
	}
	}catch(...)
	{}

}

void CTYOPCClientDoc::OnOPCRemPCProperty() 
{
	// TODO: Add your command handler code here
}

⌨️ 快捷键说明

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