亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美成人精品二区三区99精品| 91麻豆精品国产自产在线| 亚洲欧美电影院| 欧美视频在线不卡| 国产在线看一区| 一区二区三区中文免费| 日韩色视频在线观看| www.日韩在线| 老司机精品视频在线| 1024成人网| 欧美成人国产一区二区| 91同城在线观看| 日韩精品一二三四| 久久老女人爱爱| 欧美嫩在线观看| 国产成人精品一区二区三区网站观看 | 精品国产乱码久久久久久免费| 国产99一区视频免费| 石原莉奈在线亚洲三区| 国产精品久久久久影视| 日韩美女在线视频| 欧美亚州韩日在线看免费版国语版| 激情小说欧美图片| 五月婷婷另类国产| 亚洲天堂成人网| 国产精品麻豆一区二区 | 精品对白一区国产伦| 色婷婷亚洲综合| 国产99一区视频免费| 蜜桃视频在线观看一区二区| 亚洲欧美另类小说| 国产精品美女久久久久久| 日韩精品一区二区三区swag| av亚洲精华国产精华精| 韩国精品一区二区| 捆绑紧缚一区二区三区视频| 亚洲成av人片在线观看无码| 亚洲色图清纯唯美| 国产欧美日韩另类视频免费观看| 欧美群妇大交群的观看方式| 色综合久久综合网欧美综合网 | 国产精品国产a级| 在线综合+亚洲+欧美中文字幕| 色婷婷国产精品综合在线观看| 国产成人免费网站| 精品一区二区三区免费播放| 三级一区在线视频先锋| 亚州成人在线电影| 亚洲午夜电影在线观看| 一区二区三区免费| 亚洲一区二区美女| 亚洲人成影院在线观看| 亚洲视频你懂的| 亚洲美女一区二区三区| 中文字幕在线观看不卡| 中文字幕日本乱码精品影院| 欧美国产日韩精品免费观看| 国产亚洲精品精华液| 欧美激情综合在线| 国产精品国产三级国产有无不卡 | 色综合欧美在线| 色综合天天综合狠狠| 91在线视频18| 色婷婷综合久色| 成人va在线观看| 91首页免费视频| 91高清在线观看| 欧美老女人第四色| 337p粉嫩大胆色噜噜噜噜亚洲| 2020国产精品久久精品美国| 国产日韩欧美精品一区| 国产精品高清亚洲| 一区二区三区在线免费观看| 亚洲午夜激情网站| 久久精品国产精品亚洲精品| 国产精品一卡二卡| 国产精品一卡二| 91香蕉视频在线| 欧美日韩夫妻久久| 精品福利一二区| 国产精品高潮久久久久无| 国产精品久久久久久久浪潮网站| 亚洲乱码国产乱码精品精的特点| 亚洲国产精品久久不卡毛片| 美女诱惑一区二区| 高清成人免费视频| 欧美中文字幕亚洲一区二区va在线| 欧美妇女性影城| 久久久久久久综合| 一色桃子久久精品亚洲| 日韩国产在线观看| 韩国欧美国产一区| 色八戒一区二区三区| 欧美成人三级在线| 中文字幕在线免费不卡| 天天射综合影视| 成人免费毛片高清视频| 欧美精品日韩精品| 国产精品传媒视频| 亚洲国产精品欧美一二99| 国产一区在线精品| 色老头久久综合| 精品播放一区二区| 成人欧美一区二区三区| 麻豆精品国产传媒mv男同 | 亚洲五码中文字幕| 国产夫妻精品视频| 欧美日本视频在线| 国产精品天干天干在线综合| 丝袜a∨在线一区二区三区不卡| 99免费精品在线| 久久久蜜臀国产一区二区| 国产在线一区二区综合免费视频| 91久久香蕉国产日韩欧美9色| 国产日产精品1区| 国内不卡的二区三区中文字幕| 91精品国模一区二区三区| 亚洲高清免费视频| 欧美艳星brazzers| 一区二区高清免费观看影视大全| av成人免费在线观看| 亚洲国产精品成人综合 | 午夜精品福利视频网站| 在线观看av一区| 一区二区三区在线播| 91免费观看在线| 亚洲免费在线视频| 色婷婷一区二区| 一区二区三区电影在线播| 色国产综合视频| 亚洲一区视频在线观看视频| 日本二三区不卡| 亚洲国产精品尤物yw在线观看| 色综合久久综合网97色综合| 亚洲欧洲制服丝袜| 99久久综合国产精品| 中文字幕一区二区三| 95精品视频在线| 亚洲欧美国产高清| 欧美日韩免费不卡视频一区二区三区| 一区二区三区在线观看视频| 在线一区二区三区四区五区| 午夜在线成人av| 欧美一区二区三区男人的天堂| 青青草97国产精品免费观看无弹窗版 | 中文字幕第一区二区| 99视频精品全部免费在线| 亚洲欧美日韩在线| 欧美少妇bbb| 蜜臀av在线播放一区二区三区 | 欧美日韩的一区二区| 奇米影视在线99精品| 久久久一区二区| 99久久精品免费精品国产| 亚洲夂夂婷婷色拍ww47| 欧美一区日本一区韩国一区| 久久av老司机精品网站导航| 久久精品视频免费| 色狠狠综合天天综合综合| 日本欧美肥老太交大片| 亚洲精品在线观| 一本一道久久a久久精品| 亚洲va欧美va天堂v国产综合| 日韩一区二区三区四区| 成人性视频网站| 亚洲午夜影视影院在线观看| 精品日韩在线一区| 97se狠狠狠综合亚洲狠狠| 五月综合激情网| 欧美国产一区在线| 欧美群妇大交群的观看方式| 国产精品一区一区三区| 亚洲一区免费视频| 久久久蜜桃精品| 欧美三级电影一区| 国产一区二区三区国产| 一区二区三区在线观看国产| 欧美va日韩va| 欧美亚洲丝袜传媒另类| 国产乱人伦精品一区二区在线观看 | 成人教育av在线| 午夜久久久影院| 中文av一区特黄| 欧美一区二区精品久久911| 99久久免费视频.com| 免费不卡在线视频| 中文字幕一区二区三区蜜月| 在线播放视频一区| av不卡一区二区三区| 蜜臀精品久久久久久蜜臀 | 视频一区欧美精品| 国产精品毛片久久久久久久| 4hu四虎永久在线影院成人| 大陆成人av片| 美女视频黄久久| 亚洲成a人片在线观看中文| 国产精品欧美精品| 精品国产成人系列| 在线不卡的av| 91电影在线观看|