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

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

?? tyopcclientdoc0.cpp

?? OPC Client 源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// TYOPCClientDoc.cpp : implementation of the CTYOPCClientDoc class
//

#include "stdafx.h"
#include "TYOPCClient.h"

#include "TYOPCClientDoc.h"
//
#include "DlgOPCServerList.h"
#include "DlgOPCGroup.h"
#include "DlgOPCItemAdd.h"
#include "DlgOPCItemWrite.h"
#include "DlgModifyName.h"

#include "DlgOPCServerProperty.h"

#include "DlgPropertyOPCItem.h"

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


static	LPCTSTR lpszRegSection	= _T("Atuo Open File");
static	LPCTSTR lpszName	= _T("Name");
static	LPCTSTR lpszNameID	= _T("NameID");

/////////////////////////////////////////////////////////////////////////////
// CTYOPCClientDoc

IMPLEMENT_DYNCREATE(CTYOPCClientDoc, CDocument)

BEGIN_MESSAGE_MAP(CTYOPCClientDoc, CDocument)
	//{{AFX_MSG_MAP(CTYOPCClientDoc)
	ON_COMMAND(ID_OPCREMPC_ADD, OnOPCRemPCAdd)
	ON_COMMAND(ID_OPCREMPC_DEL, OnOPCRemPCDel)
	ON_COMMAND(ID_OPCSERVER_ADD, OnOPCServerAdd)
	ON_COMMAND(ID_OPCSERVER_DEL, OnOPCServerDel)
	ON_COMMAND(ID_OPCSERVER_PROPER, OnOPCServerProperty)
	ON_COMMAND(ID_OPCGROUP_ADD, OnOPCGroupAdd)
	ON_COMMAND(ID_OPCGROUP_DEL, OnOPCGroupDel)
	ON_COMMAND(ID_OPCITEM_ADD, OnOPCItemAdd)
	ON_COMMAND(ID_OPCITEM_DEL, OnOPCItemDel)
	ON_COMMAND(ID_OPCITEM_ASYNC20_READ, OnOPCItemAsync20Read)
	ON_COMMAND(ID_OPCITEM_ASYNC20_REFRESH_CACHE, OnOPCItemAsync20RefreshCache)
	ON_COMMAND(ID_OPCITEM_ASYNC20_REFRESH_DEVICE, OnOPCItemAsync20RefreshDevice)
	ON_COMMAND(ID_OPCITEM_ASYNC20_WRITE, OnOPCItemAsync20Write)
	ON_COMMAND(ID_OPCITEM_SET_ACTIVE, OnOPCItemSetActive)
	ON_COMMAND(ID_OPCITEM_SET_INACTIVE, OnOPCItemSetInactive)
	ON_COMMAND(ID_OPCGROUP_PROPER, OnOPCGroupProperty)
	ON_COMMAND(ID_OPCITEM_PROPER, OnOPCGroupProperty)
	ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
//	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_AUTO_OPENFILE, OnAutoOpenFile)
	ON_UPDATE_COMMAND_UI(ID_AUTO_OPENFILE, OnUpdateAutoOpenFile)
	//}}AFX_MSG_MAP
	ON_UPDATE_COMMAND_UI_RANGE (ID_OPC_MSG_BEGIN, ID_OPC_MSG_END, OnUpdateCmdUI)

END_MESSAGE_MAP()

BEGIN_DISPATCH_MAP(CTYOPCClientDoc, CDocument)
	//{{AFX_DISPATCH_MAP(CTYOPCClientDoc)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//      DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()

// Note: we add support for IID_ITYOPCClient to support typesafe binding
//  from VBA.  This IID must match the GUID that is attached to the 
//  dispinterface in the .ODL file.

// {5DFE6B9D-82D3-429C-B302-501F528CC46F}
static const IID IID_ITYOPCClient =
{ 0x5dfe6b9d, 0x82d3, 0x429c, { 0xb3, 0x2, 0x50, 0x1f, 0x52, 0x8c, 0xc4, 0x6f } };

BEGIN_INTERFACE_MAP(CTYOPCClientDoc, CDocument)
	INTERFACE_PART(CTYOPCClientDoc, IID_ITYOPCClient, Dispatch)
END_INTERFACE_MAP()



/////////////////////////////////////////////////////////////////////////////
// CTYOPCClientDoc construction/destruction

CTYOPCClientDoc::CTYOPCClientDoc()
{
	// TODO: add one-time construction code here

	EnableAutomation();

	AfxOleLockApp();
	m_dwSelBranch=SEL_BRANCH_NULL;

	m_bAutoOpenFile=FALSE;
}

CTYOPCClientDoc::~CTYOPCClientDoc()
{
	AfxOleUnlockApp();

	CString strFileName=GetPathName ();

	AfxGetApp ()->WriteProfileString(lpszRegSection, lpszName, strFileName.operator LPCTSTR());
	AfxGetApp ()->WriteProfileInt (lpszRegSection,lpszNameID, m_bAutoOpenFile);
}

BOOL CTYOPCClientDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)
	UpdateAllViews (NULL, HINT_NEW_DOCUMENT, NULL);	
	m_dwSelBranch=SEL_BRANCH_NULL;
	m_cOPCMgt.DelAll();
	
	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CTYOPCClientDoc serialization

void CTYOPCClientDoc::Serialize(CArchive& ar)
{
	//
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// 打開文件------關閉舊文件
		UpdateAllViews (NULL, HINT_OPEN_DOCUMENT, NULL);	
		m_dwSelBranch=SEL_BRANCH_NULL;
		m_cOPCMgt.DelAll();

	}
	m_cOPCMgt.Serialize (ar);


}

/////////////////////////////////////////////////////////////////////////////
// CTYOPCClientDoc diagnostics

#ifdef _DEBUG
void CTYOPCClientDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CTYOPCClientDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CTYOPCClientDoc commands

//選擇OPC服務器
void CTYOPCClientDoc::OnOPCServerConnect() 
{
	// TODO: Add your command handler code here
	m_cOPCMgt.GetSelOPCServer ()->Connect ();

	SetModifiedFlag (TRUE);
}

void CTYOPCClientDoc::SetSelOPC(COPCRemoteMachine* pOPCRM,COPCServer *pOPCServer,COPCGroup* pOPCGroup)
{
//	if(m_cOPCMgt.GetSelOPCGroup ()!=pOPCGroup)
//		UpdateAllViews (NULL,HINT_GROUP_SELECT,(CObject*)pOPCGroup);

	m_cOPCMgt.SetSelOPC(pOPCRM,pOPCServer,pOPCGroup);
}

void CTYOPCClientDoc::SetSelOPCItem(CStringArray& strSelOPCItem)
{
	m_strSelOPCItem.RemoveAll ();
	m_strSelOPCItem.Append (strSelOPCItem);
}

void CTYOPCClientDoc::OnOPCServerAdd() 
{
	//調用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 ;
		//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); 
			
			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::OnOPCGroupAdd() 
{
	// TODO: Add your command handler code here
	// interface:
	CDlgOPCGroup dlg(m_cOPCMgt.GetSelOPCServer ());

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

		COPCServer* pOPCServer=m_cOPCMgt.GetSelOPCServer ();

		CString	strGroupName;
		FLOAT	fDeadband;
		DWORD	dwLanguageID;
		DWORD	dwUpdateRate;
		long	lTimeBias;
		BOOL	bActive;

		strGroupName=dlg.GetOPCGroupName ();
		dlg.GetOPCGroupState(
			dwUpdateRate,
			bActive,
			lTimeBias,
			fDeadband,
			dwLanguageID);

		int nAddOK=pOPCServer->AddGroup(
			strGroupName,
			lTimeBias,			//時差(時間差)
			fDeadband,			//死區(百分數表示)
			dwUpdateRate,		//更新速率
			dwLanguageID,		//語言
			bActive				//是否活動狀態
			);

		//更新相關視圖
		this->UpdateAllViews (NULL,HINT_GROUP_ADD,(CObject*)pOPCServer->GetSelGroup ());
		//
		EndWaitCursor();

		SetModifiedFlag (TRUE);

	}
	
}


void CTYOPCClientDoc::OnOPCGroupProperty() 
{
	// TODO: Add your command handler code here
	CDlgOPCGroup dlg(m_cOPCMgt.GetSelOPCServer ());
	COPCGroup* pGroup=m_cOPCMgt.GetSelOPCGroup ();
	ASSERT(pGroup);

	//設定標題
	dlg.SetCaption (_T("組屬性"));

	//設定組名
	dlg.SetOPCGroupName (pGroup->GetName ());

	//設定組狀態
	dlg.SetOPCGroupState(
		pGroup->GetUpdateRate (),	//更新速率
		pGroup->IsActive (),		//是否活動狀態
		pGroup->GetTimeBias (),		//時差(時間差)
		pGroup->GetDeadband (),		//死區(百分數表示)
		pGroup->GetLanguageID ());	//語言

	if (dlg.DoModal () == IDOK)
	{
		CString	strGroupName;
		FLOAT	fDeadband;
		DWORD	dwLanguageID;
		DWORD	dwUpdateRate;
		long	lTimeBias;
		BOOL	bActive;

		//等待處理...
		BeginWaitCursor();

		strGroupName=dlg.GetOPCGroupName ();

		if(strGroupName!=pGroup->GetName ())
		{
			pGroup->SetName(strGroupName);
			//通知樹視刷新
			UpdateAllViews (NULL, HINT_GROUP_RENAME, (CObject *)&strGroupName);
		}
		//
		DWORD* pUpdateRate=NULL;
		LONG* pTimeBias=NULL;
		FLOAT* pDeadband=NULL;
		BOOL* pActive=NULL;

		strGroupName=dlg.GetOPCGroupName ();
		dlg.GetOPCGroupState(
			dwUpdateRate,
			bActive,
			lTimeBias,
			fDeadband,
			dwLanguageID);

		if(dwUpdateRate!=pGroup->GetUpdateRate ())
			pUpdateRate=&dwUpdateRate;
		if(lTimeBias!=pGroup->GetTimeBias ())
			pTimeBias=&lTimeBias;
		if(fDeadband!=pGroup->GetDeadband ())
			pDeadband=&fDeadband;
		if(bActive!=pGroup->IsActive ())
			pActive=&bActive;

		if(pUpdateRate
			||pTimeBias
			||pDeadband
			||pActive)
		{
			pGroup->SetState (pUpdateRate,
							pActive,
							pTimeBias,
							pDeadband
							);
			//通知樹視刷新
			UpdateAllViews (NULL, HINT_GROUP_SET_STATE, (CObject *)pGroup);
		}

		//處理結束
		EndWaitCursor();

		SetModifiedFlag (TRUE);

	}


}

void CTYOPCClientDoc::OnOPCItemAdd() 
{
	// TODO: Add your command handler code here
	COPCGroup* pSelGroup=NULL;

	// Get pointer to server that selected group belongs to:
//	COPCServer *pServer = pSelGroup->GetParentServer ();
//	ASSERT (pServer != NULL);
	
	//調試使用
	if(NULL==m_cOPCMgt.GetSelOPCGroup())
		m_cOPCMgt.AddOPCGroup("opc01",TRUE);


	// Create an item add dialog.  Pass it a pointer to the group object
	// items are to be added to, and the associated OPC Server's browser
	// interface:
	CDlgOPCItemAdd dlg (m_cOPCMgt.GetSelOPCServer ());

	// Show as modal dialog.  If user hits "OK", we need to add items to 
	// project:
	if (dlg.DoModal () == IDOK)
		{
		//等待處理...
		BeginWaitCursor();

		//得到新增加的數據項
		CObArray* pAddItems=dlg.GetAddItems();

		COPCGroup * pGroup=m_cOPCMgt.GetSelOPCServer ()->GetSelGroup();
		ASSERT(pGroup);
		pGroup->AddItem(pAddItems);
		//處理結束
		EndWaitCursor();

		UpdateAllViews (NULL, HINT_ITEM_ADD, pAddItems);

		SetModifiedFlag (TRUE);
		//
/*		// Get the number of items to add specified in dialog:
		int cnItems = dlg.GetItemCount ();

		// If number of items is non-zero, then add them to project:
		if (cnItems > 0)
			{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产伦精品一区二区三区在线观看| 欧美一级理论片| 国产精品自拍三区| 久草这里只有精品视频| 久久激五月天综合精品| 激情文学综合插| 精品一区二区三区久久| 国产激情精品久久久第一区二区 | 国产精品99精品久久免费| 蜜桃在线一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 美国十次了思思久久精品导航| 日产国产欧美视频一区精品 | 国产精品1024| 99热99精品| 欧美最猛性xxxxx直播| 欧美日韩国产首页在线观看| 欧美一级免费大片| 久久亚洲精精品中文字幕早川悠里| 久久免费看少妇高潮| 国产精品你懂的| 一区二区三区成人在线视频 | 欧美tk—视频vk| 久久精品免费在线观看| 亚洲视频中文字幕| 日韩黄色免费电影| 国产乱一区二区| 色美美综合视频| 日韩一二三四区| 亚洲天堂免费在线观看视频| 婷婷综合在线观看| 盗摄精品av一区二区三区| 色8久久人人97超碰香蕉987| 欧美一区二区成人6969| 中文字幕精品综合| 奇米影视7777精品一区二区| 成人免费视频免费观看| 欧美一区二区精品在线| 1000精品久久久久久久久| 免费人成黄页网站在线一区二区 | 午夜成人免费视频| 国产suv精品一区二区三区| 欧美丝袜丝交足nylons图片| www亚洲一区| 日韩在线一二三区| 99久久精品免费看| 精品久久人人做人人爰| 亚洲影视在线播放| 大尺度一区二区| 日韩小视频在线观看专区| 亚洲黄色在线视频| 国产麻豆日韩欧美久久| 欧美日韩国产一级| 一区二区三区四区视频精品免费| 国产福利一区二区三区在线视频| 精品污污网站免费看| 亚洲欧美区自拍先锋| 国产一区二区女| 日韩美一区二区三区| 亚洲电影一区二区三区| 色综合婷婷久久| 中文字幕巨乱亚洲| 国产成人综合自拍| 精品99999| 捆绑调教一区二区三区| 欧美一区二区性放荡片| 亚洲一区在线电影| 在线免费观看日本欧美| 亚洲激情一二三区| 色女孩综合影院| 亚洲一卡二卡三卡四卡五卡| 一道本成人在线| 一区二区三区四区乱视频| 色综合久久久久| 一区二区三区免费看视频| 色综合久久久久综合| 亚洲一区二区欧美激情| 欧美性受xxxx黑人xyx| 亚洲天堂精品视频| 91麻豆精品一区二区三区| 国产精品国产三级国产专播品爱网| 国产成人精品影视| 中文字幕乱码一区二区免费| 国产麻豆视频精品| 欧美高清在线视频| 91麻豆国产香蕉久久精品| 亚洲蜜臀av乱码久久精品| 欧洲精品一区二区| 亚洲一区二区三区在线| 91一区二区在线| 亚洲国产精品人人做人人爽| 欧美日韩极品在线观看一区| 麻豆成人在线观看| 日本一区二区视频在线| 91亚洲精华国产精华精华液| 一卡二卡三卡日韩欧美| 欧美一区二区人人喊爽| 福利电影一区二区三区| 国产日韩亚洲欧美综合| 91热门视频在线观看| 亚洲午夜精品久久久久久久久| 在线观看不卡视频| 裸体健美xxxx欧美裸体表演| 国产拍欧美日韩视频二区| 色欲综合视频天天天| 亚洲美腿欧美偷拍| 欧美一级高清片| 国产福利一区二区三区| 一区二区三区小说| 欧美xxxx在线观看| 91丨九色丨蝌蚪富婆spa| 日韩精品国产精品| 国产欧美一区二区三区网站 | 久久精品国产久精国产| 中文字幕亚洲视频| 欧美一区二区三区白人| 99视频一区二区三区| 亚洲444eee在线观看| 精品理论电影在线| 欧美图区在线视频| 成人精品国产免费网站| 毛片av一区二区三区| 一区二区三区波多野结衣在线观看| 亚洲精品一区二区三区在线观看 | 亚洲乱码国产乱码精品精小说 | 首页亚洲欧美制服丝腿| 久久久久97国产精华液好用吗 | 国产一区二区三区最好精华液 | www成人在线观看| 欧美亚洲国产一卡| www.日韩av| 免费高清不卡av| 亚洲欧洲综合另类在线| 中文字幕第一区二区| 精品久久久影院| 日韩午夜中文字幕| 欧美精品在线视频| 色狠狠av一区二区三区| eeuss鲁片一区二区三区在线看| 久久99精品国产麻豆不卡| 日韩中文欧美在线| 亚洲va韩国va欧美va| 亚洲综合免费观看高清完整版 | 欧美精品一区在线观看| 91精品国产aⅴ一区二区| 欧美三级中文字幕| 色狠狠桃花综合| 在线观看视频一区| 在线日韩一区二区| 欧美午夜精品一区二区三区| 91福利在线免费观看| 91福利在线看| 欧美日韩在线观看一区二区 | 久久久亚洲高清| 久久综合给合久久狠狠狠97色69| 日韩一二三四区| 精品国产乱码久久久久久久| 欧美精品一区二区三区蜜臀| 久久久久久久性| 中文字幕不卡的av| 日韩毛片精品高清免费| 亚洲最大色网站| 亚洲aⅴ怡春院| 久久99国产精品麻豆| 国产在线乱码一区二区三区| 91美女在线视频| 欧美二区三区的天堂| 日韩精品一区二区三区在线播放 | 亚洲一区二区三区国产| 午夜久久久久久电影| 精品无人码麻豆乱码1区2区| 国产老肥熟一区二区三区| 99riav久久精品riav| 欧美揉bbbbb揉bbbbb| 精品美女在线观看| 中文字幕在线不卡视频| 亚洲一级不卡视频| 狠狠色狠狠色综合系列| bt7086福利一区国产| 欧美精品xxxxbbbb| 欧美激情综合在线| 亚洲午夜免费视频| 国产福利一区在线观看| 色综合久久综合网| 精品久久五月天| 亚洲精品精品亚洲| 紧缚捆绑精品一区二区| 一本高清dvd不卡在线观看| 欧美一区二区在线视频| 亚洲人成影院在线观看| 精品制服美女久久| 在线免费观看日本欧美| 国产日韩欧美激情| 午夜亚洲福利老司机| 高清不卡在线观看| 日韩视频一区二区| 亚洲一区日韩精品中文字幕| 国产一区二区女| 欧美一区二区三区喷汁尤物| 麻豆国产欧美日韩综合精品二区|