📄 tyopcclientdoc.cpp
字号:
// 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 + -