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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? opcclientdoc.cpp

?? opc client 工業(yè)自動(dòng)化控制過程的客戶端
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
// OPCClientDoc.cpp : implementation of the OPCClientDoc class
//

#include "stdafx.h"
#include "CUS_OPCClient.h"
#include <comutil.h>

#include "OPCClientDoc.h"

#include "ServerDialog.h"
#include "GroupDialog.h"
#include "ItemDialog.h."
#include "writedialog.h"		//write dialog

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

OPCClientDoc* theDoc;
/////////////////////////////////////////////////////////////////////////////
// OPCClientDoc

IMPLEMENT_DYNCREATE(OPCClientDoc, CDocument)

BEGIN_MESSAGE_MAP(OPCClientDoc, CDocument)
	//{{AFX_MSG_MAP(OPCClientDoc)
	ON_COMMAND(ID_OPC_SERVER, OnOpcServer)
	ON_UPDATE_COMMAND_UI(ID_OPC_SERVER, OnUpdateOpcServer)
	ON_COMMAND(ID_OPC_GROUP, OnOpcGroup)
	ON_UPDATE_COMMAND_UI(ID_OPC_GROUP, OnUpdateOpcGroup)
	ON_COMMAND(ID_OPC_ITEM, OnOpcItem)
	ON_UPDATE_COMMAND_UI(ID_OPC_ITEM, OnUpdateOpcItem)
	ON_COMMAND(ID_OPC_CONNECT, OnOpcConnect)
	ON_UPDATE_COMMAND_UI(ID_OPC_CONNECT, OnUpdateOpcConnect)
	ON_COMMAND(ID_OPC_DISCONNECT, OnOpcDisconnect)
	ON_UPDATE_COMMAND_UI(ID_OPC_DISCONNECT, OnUpdateOpcDisconnect)
	ON_COMMAND(ID_FILE_EXPORT, OnFileExport)
	ON_COMMAND(ID_FILE_EXPORT_LOG, OnFileExportLog)
	ON_UPDATE_COMMAND_UI(ID_FILE_EXPORT_LOG, OnUpdateFileExportLog)
	ON_UPDATE_COMMAND_UI(ID_FILE_EXPORT, OnUpdateFileExport)
	ON_COMMAND(ID_ITEM_PROPERTIES, OnItemProperties)
	ON_UPDATE_COMMAND_UI(ID_ITEM_PROPERTIES, OnUpdateItemProperties)
	ON_COMMAND(ID_ITEM_REMOVE, OnItemRemove)
	ON_UPDATE_COMMAND_UI(ID_ITEM_REMOVE, OnUpdateItemRemove)
	ON_COMMAND(ID_ITEM_WRITE, OnItemWrite)
	ON_UPDATE_COMMAND_UI(ID_ITEM_WRITE, OnUpdateItemWrite)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// OPCClientDoc construction/destruction

OPCClientDoc::OPCClientDoc()
{
	// TODO: add one-time construction code here
	msg_hwnd = 0;
	data_hwnd = 0;

	current_server = 0;
	
	auto_open = FALSE;

	AfxOleLockApp();
	theDoc = this;
	
	// Everyone can connect back to IAdviseSink
	HRESULT hr = CoInitializeSecurity(NULL, -1, NULL, NULL,
		RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_IDENTIFY, NULL, EOAC_NONE, NULL);
	if (FAILED(hr)){
		//TRACE(_T("CoInitializeSecurity failed, %lx"), hr);
		theDoc->ReportError(_T("CoInitializeSecurity failed: "), hr);
	}

	/*
	handle_out = CreateFile(
		_T("CONOUT$"),
		GENERIC_WRITE,
		0,
		NULL,
		OPEN_ALWAYS,
		FILE_ATTRIBUTE_NORMAL,
		NULL);
		*/
}

OPCClientDoc::~OPCClientDoc()
{
	AfxOleUnlockApp();
	
	theDoc = 0;

	while(!messages.IsEmpty())
		delete messages.RemoveHead();

	while(!servers.IsEmpty())
		delete servers.RemoveHead();

	//if(handle_out != INVALID_HANDLE_VALUE)
	//	CloseHandle(handle_out);
}

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

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)
	
	if(!auto_open){
		auto_open = TRUE;
		//打開最近的文件
		OPCClientApp* app = (OPCClientApp*)AfxGetApp();
		CString file_name(app->GetProfileString(_T("Recent File List"), _T("File1")));
		
		if(!file_name.IsEmpty()){
			CFileException fe;
			LPCSTR lpszPathName = file_name.GetBuffer(0);
			CFile* file = GetFile(lpszPathName,
				CFile::modeRead|CFile::shareDenyWrite, 
				&fe);
			if (file != NULL){
				CArchive archive_file(
					file,
					CArchive::load|CArchive::bNoFlushOnDelete);
				archive_file.m_pDocument = this;
				archive_file.m_bForceFlat = FALSE;
				TRY{
					if(file->GetLength() != 0)
						Serialize(archive_file);
					
					archive_file.Close();
					ReleaseFile(file, FALSE);
				}
				CATCH_ALL(e){
					ReleaseFile(file, TRUE);
				}
				END_CATCH_ALL
			}
		}
	}
	else{
		if(AfxMessageBox("Disconnect all OPC Server and delete all data?", 
			MB_YESNO|MB_ICONQUESTION) != IDYES)
			return FALSE;

		Lock wait(&item_cs);
		
		current_server = NULL;
		while(!servers.IsEmpty())
			delete servers.RemoveHead();

		SetModifiedFlag(TRUE);
		UpdateAllViews(NULL, CLEAR_ALL, 0);
	}
	

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// OPCClientDoc serialization

void OPCClientDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
		int server_count = servers.GetCount();
		ar << server_count;
		POSITION pos = servers.GetHeadPosition();
		while(pos){
			COPCServer* server = servers.GetNext(pos);
			server->Serialize(ar);
		}
	}
	else
	{
		// TODO: add loading code here
		while(!servers.IsEmpty())
			delete servers.RemoveHead();

		int server_count = 0;
		ar >> server_count;
		while(server_count --){
			COPCServer* server = new COPCServer;
			if(server){
				server->Serialize(ar);
				current_server = server;

				servers.AddTail(server);
			}
		}

		UpdateAllViews(NULL, UPDATE_ALL, NULL);
	}
}

/////////////////////////////////////////////////////////////////////////////
// OPCClientDoc diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// OPCClientDoc commands

//報(bào)錯(cuò)
void OPCClientDoc::ReportError(Message *msg)
{
	if(msg != NULL)
		messages.AddTail(msg);

	if(msg_hwnd)
		PostMessage(msg_hwnd, WM_MESSAGE, 0, (LPARAM)msg);
}

//報(bào)錯(cuò)
void OPCClientDoc::ReportError(LPCSTR sz_err)
{
	Message* msg = new Message(sz_err);
	if(msg){
		messages.AddTail(msg);
		
		if(msg_hwnd)
			PostMessage(msg_hwnd, WM_MESSAGE, 0, (LPARAM)msg);
	}

	//	ReportError(msg);
	
}
//報(bào)錯(cuò)
void OPCClientDoc::ReportError(LPCSTR description, HRESULT hr)
{
	CString temp(description);
	temp += _T(" ");
	TCHAR msg[MAX_PATH * 5];
	memset(msg, 0, sizeof(msg));
	DWORD ret = FormatMessage(
		FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
		NULL,
		hr,
		MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
		msg,
		MAX_PATH,
		NULL);
	if(ret){
		for(size_t i = 0; i < sizeof(msg); i++)
			if(msg[i] == 13 || msg[i] == 10)
				msg[i] = 0;

		temp += msg;
	}
	else{
		LPWSTR pwstring = NULL;
		if(current_server && current_server->is_connected()){
			hr = current_server->GetErrorString(
				hr,
				LOCALE_SYSTEM_DEFAULT,
				&pwstring);
			if(SUCCEEDED(hr)){
				temp += pwstring;
				CoTaskMemFree(pwstring);
			}
			else
				temp += _T("OPC Server failed GetErrorString().");
		}
		else temp += _T("Unknown Error.");
	}

	ReportError(temp.GetBuffer(0));
}

//添加OPCServer
void OPCClientDoc::OnOpcServer() 
{
	// TODO: Add your command handler code here
	CServerDialog dialog;
	if(dialog.DoModal() == IDOK){
		OPCServerInfo* info = new OPCServerInfo(*dialog.GetServerInfo());

		
		COPCServer* server = new COPCServer;
		if(!server)
			return;
		
		server->SetServerInfo(info);
		server->connect();
		
		current_server = server;
		servers.AddTail(server);

		UpdateAllViews(NULL, ADD_SERVER, (CObject*)server);

		SetModifiedFlag(TRUE);
	}

	
	
}

void OPCClientDoc::OnUpdateOpcServer(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void OPCClientDoc::OnOpcGroup() 
{
	// TODO: Add your command handler code here
	int group_count = current_server->groups.GetCount();
	group_count ++;
	CGroupDialog dialog(group_count);
	if(dialog.DoModal() == IDOK){
		COPCGroup* group = new COPCGroup(current_server);
		if(group){
			group->set_name(dialog.group_name);
			group->set_update_rate(dialog.update_rate);
			group->set_dead_band(dialog.dead_band);
			group->set_time_bias(dialog.time_bias);
			group->set_local_id(dialog.local_id);
			group->set_active(dialog.active);
			
			group->parent = current_server;
			current_server->add_group(group);

			SetModifiedFlag(TRUE);
		}
	}
}

void OPCClientDoc::OnUpdateOpcGroup(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(current_server && current_server->is_connected());
}

void OPCClientDoc::OnOpcItem() 
{
	// TODO: Add your command handler code here
	CItemDialog dialog(current_server->get_opc_server());
	if(dialog.DoModal() == IDOK){
		SetModifiedFlag(TRUE);
	}
}

void OPCClientDoc::OnUpdateOpcItem(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(current_server == NULL){
		pCmdUI->Enable(false);
		return;
	}

	COPCGroup* group = current_server->get_current_group();
	if(group == NULL){
		pCmdUI->Enable(false);
		return;
	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
裸体歌舞表演一区二区| 亚洲丝袜美腿综合| 日韩高清欧美激情| 欧美美女黄视频| 婷婷六月综合网| 日韩三级视频中文字幕| 秋霞电影网一区二区| 日韩女优毛片在线| 激情综合网av| 国产精品网友自拍| 91在线观看地址| 亚洲成人在线网站| 欧美一区二区在线视频| 色婷婷精品大在线视频| 亚洲人成网站在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲精品ww久久久久久p站| 欧亚洲嫩模精品一区三区| 五月天久久比比资源色| 欧美不卡一区二区三区四区| 国产成人免费在线| 亚洲蜜臀av乱码久久精品蜜桃| 欧美日韩在线播放一区| 狠狠色综合播放一区二区| 国产日韩综合av| 91成人在线免费观看| 日韩国产高清在线| 国产精品网曝门| 欧美日韩精品一区二区三区| 美国一区二区三区在线播放| 欧美国产综合色视频| 欧美中文字幕一区二区三区| 开心九九激情九九欧美日韩精美视频电影| 久久亚洲精精品中文字幕早川悠里| 波多野结衣一区二区三区| 亚洲一区在线观看网站| 久久综合色之久久综合| 91久久奴性调教| 国产在线看一区| 亚洲人被黑人高潮完整版| 日韩午夜在线影院| 99国产一区二区三精品乱码| 免费高清在线一区| 亚洲裸体xxx| 日韩欧美国产综合| 日本伦理一区二区| 国产黑丝在线一区二区三区| 午夜精品一区二区三区免费视频 | 久久久久高清精品| 欧美主播一区二区三区| 国产精品一区二区视频| 亚洲一区在线观看免费观看电影高清| 亚洲精品在线电影| 欧美日韩国产色站一区二区三区| 国产酒店精品激情| 日本午夜一区二区| 一二三四社区欧美黄| 国产欧美日韩不卡免费| 欧美日本在线播放| 色综合久久99| 成人深夜福利app| 久久精品久久99精品久久| 亚洲午夜成aⅴ人片| 麻豆一区二区三| 亚洲国产中文字幕在线视频综合| 国产精品久久毛片| 久久精品综合网| 精品福利在线导航| 91麻豆精品国产| 欧美日韩国产高清一区二区| 91免费视频网址| 91亚洲精华国产精华精华液| 国产精品99久久久久久似苏梦涵 | 欧美一区二区三区免费在线看 | 欧美成人性战久久| 欧美一区二区三区性视频| 欧美日韩亚洲综合在线| 欧美性色黄大片| 在线观看视频一区二区欧美日韩| 99re在线精品| 97精品国产露脸对白| 成人教育av在线| 成人综合在线观看| 成人av影院在线| 99久久久免费精品国产一区二区| 国产福利91精品一区| 国产精品一区久久久久| 国产乱一区二区| 成人一级黄色片| www.色精品| 色综合久久综合| 欧美性生活一区| 欧美精品一卡两卡| 日韩欧美成人激情| 天天av天天翘天天综合网色鬼国产| 亚洲精品免费视频| 亚洲成人av免费| 日韩中文字幕一区二区三区| 日韩精品电影一区亚洲| 七七婷婷婷婷精品国产| 蜜桃av一区二区在线观看| 国产一区二区三区免费看| 成人午夜电影小说| 日本精品一级二级| 91精品在线观看入口| 欧美精品一区二区三区蜜臀| 国产欧美一二三区| 亚洲久本草在线中文字幕| 亚洲一卡二卡三卡四卡| 久久www免费人成看片高清| 国产91色综合久久免费分享| 91麻豆精品视频| 日韩一级视频免费观看在线| 国产女同性恋一区二区| 亚洲欧洲国产日韩| 青青草国产精品97视觉盛宴| 国产麻豆精品在线| 日本电影欧美片| 久久伊人蜜桃av一区二区| 亚洲男人的天堂在线观看| 日本中文字幕不卡| 波多野结衣精品在线| 日韩一区二区免费视频| 国产精品国产成人国产三级 | 国产精品综合在线视频| 色综合激情久久| 久久综合久久综合久久| 一区二区三区不卡视频| 久久成人免费网| 色狠狠色狠狠综合| 久久久久久久久久久久电影| 亚洲一区二区av在线| 国产精品一二三四五| 欧美性大战久久| 国产精品国模大尺度视频| 日本成人超碰在线观看| 91浏览器入口在线观看| 国产视频一区在线观看| 日韩和欧美一区二区| 成人在线综合网| 日韩免费在线观看| 久久蜜桃一区二区| 蜜桃av一区二区三区| 欧美在线综合视频| 中文字幕一区二区三区乱码在线| 免费成人你懂的| 欧美日免费三级在线| 亚洲天天做日日做天天谢日日欢| 国内精品第一页| 在线综合亚洲欧美在线视频| 一区二区三区 在线观看视频| 处破女av一区二区| 久久综合久久综合久久综合| 免费视频一区二区| 884aa四虎影成人精品一区| 一区二区高清在线| 国产a区久久久| 久久综合色8888| 久久精品国产999大香线蕉| 欧美乱妇15p| 亚洲午夜精品网| 色偷偷一区二区三区| 国产精品日日摸夜夜摸av| 国产成人精品一区二| 2021久久国产精品不只是精品| 免费在线成人网| 欧美一区二区日韩一区二区| 爽爽淫人综合网网站| 欧美年轻男男videosbes| 亚洲国产欧美一区二区三区丁香婷| 91麻豆国产在线观看| 亚洲视频在线一区观看| 色综合天天综合网国产成人综合天 | 亚洲图片另类小说| 91污片在线观看| 亚洲美女视频一区| 在线观看三级视频欧美| 亚洲一区二区精品3399| 欧美日韩成人在线一区| 午夜天堂影视香蕉久久| 91精品国产色综合久久久蜜香臀| 日韩精品一二三| 日韩欧美亚洲国产另类| 黄色精品一二区| 中文字幕成人av| 91丨porny丨户外露出| 亚洲综合视频网| 欧美放荡的少妇| 国内精品免费**视频| 国产精品丝袜黑色高跟| 91看片淫黄大片一级在线观看| 亚洲男女一区二区三区| 欧美三级日韩三级| 老司机午夜精品| 亚洲国产经典视频| 在线免费亚洲电影| 青青青爽久久午夜综合久久午夜| www国产精品av| 91一区在线观看| 日本成人在线网站|