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

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

?? opcclientdoc.cpp

?? opc client 工業(yè)自動(dòng)化控制過程的客戶端
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
	
	pCmdUI->Enable(group->opc_group.IsOk());
}



void OPCClientDoc::OnOpcConnect() 
{
	// TODO: Add your command handler code here
	if(current_server && !current_server->is_connected())
		current_server->connect();
}

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

void OPCClientDoc::OnOpcDisconnect() 
{
	// TODO: Add your command handler code here
	
}

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

//導(dǎo)出配置文件
void OPCClientDoc::OnFileExport() 
{
	// TODO: Add your command handler code here
	CFileDialog dialog(
		false, 
		NULL, 
		_T("cmx_opcclient_items.txt"),
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
		_T("CMX_OPCClient Configure File(*.txt)|*.txt|All Files (*.*)|*.*||"),
		NULL
		);
	if(dialog.DoModal() == IDOK){
		CString file_path_name = dialog.GetPathName();
		if(file_path_name.IsEmpty())
			return;
		
		CFile file;
		if(!file.Open(file_path_name, CFile::modeCreate | CFile::modeWrite))
			return;
		
		file.SeekToEnd();
		
		char* desc[10];
		desc[0] = "//*********************************************************//\r\n";
		desc[1] = "//*             CMX_OPCClient items configrue file        *//\r\n";
		desc[2] = "//*             Chen Maoxiang                             *//\r\n";
		desc[3] = "//*             EMail:chenmaoxiang@gmail.com              *//\r\n";
		desc[4] = "//*             MSN:cubeboxstudio@yahoo.com.cn            *//\r\n";
		desc[5] = "//*             QQ:125180837                              *//\r\n";
		desc[6] = "//*********************************************************//\r\n";
		
		
		for(int i = 0; i < 7; i++)
			file.Write(desc[i], strlen(desc[i]));
		
		char sz_data[MAX_PATH];

		Lock wait(&item_cs);
		POSITION server_pos = servers.GetHeadPosition();
		while(server_pos){
			COPCServer* server = servers.GetNext(server_pos);
			if(!server)
				continue;

			OPCServerInfo* info = server->get_server_info();
			ASSERT(info);
			CString node_name = info->m_NodeName;
			if(node_name.IsEmpty())
				node_name = _T("localhost");
			sprintf(sz_data, "\r\nNode Name: \t%s\r\n", node_name.GetBuffer(0));
			file.Write(sz_data, strlen(sz_data));
			memset(sz_data, 0, sizeof(sz_data));

			sprintf(sz_data, "Server Name: \t%s\r\n", info->m_ProgID.GetBuffer(0));
			file.Write(sz_data, strlen(sz_data));
			memset(sz_data, 0, sizeof(sz_data));

			sprintf(sz_data, "CLSID: \t\t{0X%x,0X%x,0X%x,{0X%02x,0X%02x,0X%02x,0X%02x,0X%02x,0X%02x,0X%02x,0X%02x}}\r\n",
				info->m_clsid.Data1,
				info->m_clsid.Data2,
				info->m_clsid.Data3,
				info->m_clsid.Data4[0],
				info->m_clsid.Data4[1],
				info->m_clsid.Data4[2],
				info->m_clsid.Data4[3],
				info->m_clsid.Data4[4],
				info->m_clsid.Data4[5],
				info->m_clsid.Data4[6],
				info->m_clsid.Data4[7]);
			for(size_t i = 0; i < strlen(sz_data); i++){
				sz_data[i] = toupper(sz_data[i]);
			}

			file.Write(sz_data, strlen(sz_data));
			memset(sz_data, 0, sizeof(sz_data));

			POSITION group_pos = server->groups.GetHeadPosition();
			while(group_pos){
				COPCGroup* group = server->groups.GetNext(group_pos);
				if(!group)
					continue;

				sprintf(sz_data, "\t%s\r\n", group->get_name().GetBuffer(0));
				file.Write(sz_data, strlen(sz_data));
				memset(sz_data, 0, sizeof(sz_data));

				POSITION item_pos = group->items.GetHeadPosition();
				while(item_pos){
					Item* item = group->items.GetNext(item_pos);
					if(!item)
						continue;

					sprintf(sz_data, "\t\t%s\r\n", item->name.GetBuffer(0));
					file.Write(sz_data, strlen(sz_data));
					memset(sz_data, 0, sizeof(sz_data));
				}
			}
			
		}
		
		
		desc[7] = "\r\n//*********************************************************//\r\n";
		desc[8] = "//                          End                            //\r\n";
		desc[9] = "//*********************************************************//\r\n";
		
		for(i = 7; i < 10; i++)
			file.Write(desc[i], strlen(desc[i]));
		file.Close();
	}

}

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

void OPCClientDoc::OnFileExportLog() 
{
	// TODO: Add your command handler code here
	
}

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

void OPCClientDoc::OnItemProperties() 
{
	// TODO: Add your command handler code here
	
}

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

void OPCClientDoc::OnItemRemove() 
{
	// TODO: Add your command handler code here
	if(current_server && current_server->get_current_group()){
		COPCGroup* group = current_server->get_current_group();
		group->remove_item();
	}
}

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



void OPCClientDoc::OnItemWrite() 
{
	// TODO: Add your command handler code here
	if(current_server == NULL)
		return;

	CWriteDialog dialog;
	if(dialog.DoModal() == IDOK){
		CWaitCursor wait;
		HRESULT* errors = NULL;
	
		COPCGroup* group = current_server->get_current_group();
		if(group == NULL)
			return;
		Item* item = group->current_item;
		if(item == NULL)
			return;
		COleVariant value;
        value=Str2Variant(dialog.m_value,item->value.vt);
		DWORD transaction_id = 2;
		//(dialog.m_value);
		//value.ChangeType(item->value.vt);
	//	for (int i =0; i<51;i++)
	//	{
		//	value.ChangeType(VT_I2);
		//	value.intVal = i;//i;
			transaction_id=2;//要重新付初值
		if(dialog.m_async){		//異步寫入
			if(group->use_cp){	//使用連接點(diǎn)
				OPCAsyncIO2 async2;
				if(async2.Attach(group->opc_group) == S_OK){
					
					HRESULT hr = async2.Write(
						1,
						&item->hServerHandle,
						&value,
						transaction_id,
						&transaction_id,
						&errors);
					if(SUCCEEDED(hr)){
						if(FAILED(errors[0]))
							ReportError(_T("Async Write Error: "), errors[0]);

						CoTaskMemFree(errors);
					}
					else
						ReportError(_T("Async Write Error: "), hr);

					async2.Detach();
				}
			}
			else{		//無連接點(diǎn)
				OPCAsyncIO async;
				if(async.Attach(group->opc_group) == S_OK){
					HRESULT hr = async.Write(
					group->connection2	,//
						1,
						&item->hServerHandle,
						&value,
						&transaction_id,
						&errors);
					if(SUCCEEDED(hr)){
						if(FAILED(errors[0]))
							ReportError(_T("Async Write Error: "), errors[0]);

						CoTaskMemFree(errors);
					}
					else
						ReportError(_T("Async Write Error: "), hr);
					
					async.Detach();
				}
			}
		}
		else{				//同步寫入
            //OPCAsyncIO async;
			OPCSyncIO async;//同步不能為OPCAsyncIO
			if(async.Attach(group->opc_group) == S_OK){
				HRESULT hr = async.Write(
					1,
					&item->hServerHandle,
					&value,
					&errors);
				if(SUCCEEDED(hr)){
					if(FAILED(errors[0]))
						ReportError(_T("Sync Write Error: "), errors[0]);
					
					CoTaskMemFree(errors);
				}
				else
					ReportError(_T("Sync Write Error: "), hr);
				
				async.Detach();
			}
		}
	//	}
	}
}

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

COleVariant OPCClientDoc::Str2Variant(CString valuestr,unsigned short vtype)
{
      VARIANT itmV;
	  char *pBuff=valuestr.GetBuffer(0);
	  itmV.vt=vtype;
        switch(itmV.vt )
		{
		case VT_I1:
		case VT_UI1:		// BYTE
			itmV.bVal =(BYTE)atoi(pBuff);
			break;
		case VT_I2:			// SHORT
			itmV.iVal=atoi(pBuff);
			break;
		case VT_UI2:		// UNSIGNED SHORT
			itmV.uiVal =(USHORT)atoi(pBuff);
			break;
		case VT_I4:			// LONG
			itmV.lVal= atol(pBuff);
			break;
		case VT_UI4:		// UNSIGNED LONG
			itmV.ulVal =(ULONG)atol(pBuff);
			break;
		case VT_INT:		// INTEGER
			itmV.intVal =atoi(pBuff);
			break;
		case VT_UINT:		// UNSIGNED INTEGER
			itmV.uintVal =( USHORT)atoi(pBuff);
			break;
		case VT_R4:			// FLOAT
			itmV.fltVal =(float)atof(pBuff);
			break;
		case VT_R8:			// DOUBLE
			itmV.dblVal =atof(pBuff);
			break;
		case VT_BSTR:		//BSTR
			VariantClear((VARIANT *)&itmV.bstrVal);//SysAllocString((BSTR)
			itmV.bstrVal =_com_util::ConvertStringToBSTR(pBuff);
			itmV.vt=VT_BSTR;
			break;
		case VT_BOOL:
			if(!stricmp("TRUE",pBuff))
		    	itmV.boolVal=TRUE;
			else
				itmV.boolVal=FALSE;
			break;
		case VT_DATE:
		//	VariantTimeToSystemTime (itmV.date, &st);
		//	ct = st;
		//	cs = ct.Format ("%H:%M:%S %d %b %Y");
		//	strncpy (buf, cs, 200);
		//	return;
			break;
        default:
		//	return;
            break;
		}
       return itmV;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费高清| 91久久香蕉国产日韩欧美9色| 国产欧美精品日韩区二区麻豆天美| 9久草视频在线视频精品| 日本成人在线一区| 亚洲欧美日韩人成在线播放| 欧美mv和日韩mv的网站| 日本高清不卡视频| 粉嫩蜜臀av国产精品网站| 日韩精品一二三| 亚洲综合一二区| 亚洲欧洲性图库| 久久久99精品免费观看| 欧美一区二区三区精品| 欧美怡红院视频| 一本大道av伊人久久综合| 国产成人免费视| 国产在线视频一区二区三区| 日韩高清一区在线| 亚洲v精品v日韩v欧美v专区| 亚洲乱码中文字幕综合| 中文字幕av一区二区三区| 久久久精品天堂| 26uuu精品一区二区| 欧美一区二区三区喷汁尤物| 欧美老肥妇做.爰bbww视频| 91在线免费看| 91麻豆swag| 91丨九色porny丨蝌蚪| www.成人在线| 99精品国产热久久91蜜凸| 成人激情校园春色| 成人综合婷婷国产精品久久免费| 韩国精品主播一区二区在线观看 | 蜜桃视频在线观看一区| 亚洲图片欧美综合| 中文字幕五月欧美| 久久亚洲精品小早川怜子| 久久久久久一二三区| 久久精品综合网| 欧美国产日韩亚洲一区| 欧美极品aⅴ影院| 中文字幕中文字幕一区| 亚洲欧美电影院| 一区二区三区免费在线观看| 亚洲一级片在线观看| 爽爽淫人综合网网站| 午夜精品免费在线观看| 奇米影视一区二区三区| 韩国欧美一区二区| 成人美女视频在线观看18| 99久久精品费精品国产一区二区| 91美女视频网站| 91精品欧美久久久久久动漫 | 亚洲综合在线五月| 亚洲国产一区二区视频| 奇米影视在线99精品| 国产精品自在在线| 成人国产电影网| 欧美亚洲一区二区三区四区| 91精品久久久久久蜜臀| 久久久久久久久久电影| 亚洲蜜臀av乱码久久精品 | 成人福利视频网站| 91免费精品国自产拍在线不卡| 欧美综合天天夜夜久久| 日韩精品专区在线影院观看| 日本一区二区三区四区在线视频 | 国产伦精品一区二区三区在线观看| 夫妻av一区二区| 在线观看av不卡| 精品国精品国产尤物美女| 欧美激情中文不卡| 亚洲国产成人91porn| 久久草av在线| 色欧美日韩亚洲| 2023国产一二三区日本精品2022| 日本一区二区三区四区在线视频| 亚洲综合偷拍欧美一区色| 久久精品国产精品亚洲综合| 99免费精品视频| 欧美一区二区三区视频免费| 国产精品嫩草99a| 日韩成人精品在线观看| www..com久久爱| 精品少妇一区二区| 一区二区三区在线看| 狠狠色丁香久久婷婷综| 91福利区一区二区三区| 久久综合色婷婷| 亚洲成av人片在线观看| fc2成人免费人成在线观看播放| 欧美久久久久久久久久| 亚洲日本乱码在线观看| 国产自产2019最新不卡| 欧美日韩中文精品| 国产欧美一区二区三区沐欲| 午夜久久久久久久久| 成人免费视频一区| 日韩精品专区在线影院观看| 一区二区三区免费看视频| 国产成人免费在线观看不卡| 91精品午夜视频| 亚洲综合视频在线| av中文字幕在线不卡| 久久亚洲精华国产精华液 | 亚洲亚洲人成综合网络| 成人免费精品视频| 久久久久久久综合| 蜜桃av一区二区三区| 欧美精品在线观看播放| 亚洲制服丝袜一区| 色哟哟日韩精品| 国产精品久线观看视频| 国产成人在线影院| 久久一区二区视频| 精品一区二区三区蜜桃| 91精品国产综合久久久久久漫画| 亚洲欧美激情小说另类| 91丨九色丨黑人外教| 国产精品国产自产拍高清av | 日本va欧美va瓶| 欧美日韩一区二区三区四区| 一区二区三区中文字幕在线观看| 成人亚洲精品久久久久软件| 久久久久亚洲蜜桃| 国产黄色精品视频| 久久久久一区二区三区四区| 国内精品伊人久久久久影院对白| 欧美一级搡bbbb搡bbbb| 男人的天堂久久精品| 91精品国产福利| 日本不卡视频一二三区| 日韩一区二区精品葵司在线| 日韩电影免费一区| 91精品国产91久久久久久最新毛片| 亚洲成人先锋电影| 91精品国产综合久久精品麻豆| 丝袜美腿亚洲综合| 日韩一区二区在线播放| 麻豆成人在线观看| 亚洲精品一区二区三区99| 九九**精品视频免费播放| 国产亚洲一二三区| 波多野结衣91| 亚洲精品中文在线| 欧美影院一区二区| 日本va欧美va精品发布| 精品精品国产高清a毛片牛牛| 韩国毛片一区二区三区| 国产欧美精品一区二区三区四区| 成人a免费在线看| 一区二区久久久久久| 欧美喷水一区二区| 精久久久久久久久久久| 国产精品三级电影| 91精彩视频在线观看| 日韩1区2区日韩1区2区| 久久综合色婷婷| 91在线视频免费观看| 午夜久久久久久久久久一区二区| 日韩欧美国产成人一区二区| 国产成人亚洲综合色影视| 亚洲蜜桃精久久久久久久| 欧美精品日韩一区| 国产成人av一区二区三区在线观看| 中文字幕在线观看不卡| 在线播放欧美女士性生活| 国产一区二区三区最好精华液| 国产精品传媒视频| 欧美福利电影网| 国产精品1区2区3区在线观看| 亚洲欧美日韩国产成人精品影院| 欧美日韩精品欧美日韩精品 | 国产精选一区二区三区| 亚洲精品视频一区| 精品久久久久一区| 91亚洲精华国产精华精华液| 日本系列欧美系列| 亚洲欧美一区二区视频| 欧美一级二级在线观看| 99视频有精品| 日本欧洲一区二区| 亚洲丝袜制服诱惑| 精品福利在线导航| 欧美亚洲另类激情小说| 国产精品一二三四| 亚洲午夜精品网| 国产精品美女久久福利网站| 欧美一区二区三区性视频| av午夜精品一区二区三区| 免费国产亚洲视频| 一区二区三区四区av| 久久久久国产精品厨房| 欧美一区二区在线不卡| 一本色道亚洲精品aⅴ| 国产精品一区二区无线| 同产精品九九九| 伊人一区二区三区| 国产精品欧美经典|