⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 validateitemdlg.cpp

📁 此为Insight opc client InfoServerExplorer源程序
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////
//
//  OPC DataAccess VC++ Client:	ValidateItemDlg.cpp
//								(Source File)
//
/////////////////////////////////////////////////////////////////////////////
//
//          Author: Raphael Imhof
//    Initial Date: 2/24/99
//       $Workfile: ValidateItemDlg.cpp $
//       $Revision: 1 $
//           $Date: 7/27/99 5:23p $
//   Target System: Microsoft Windows NT 4.0
//     Environment: Visual C++ 5.0 / OPC DataAccess 1.0/2.0
//         Remarks: 
//
/////////////////////////////////////////////////////////////////////////////
//
//     Description: implementation of the CValidateItemDlg class.
//					Item Validation dialog.
//					
//
/////////////////////////////////////////////////////////////////////////////
//
//  History of Changes     (Please remove very old comments and blank lines!)
//            $Log: /IDK/OPCServer/clients/VC++/InfoServerExplorer/ValidateItemDlg.cpp $
// 
// 1     7/27/99 5:23p Imhof
// 
// 1     7/27/99 5:19p Imhof
// 
// 3     2/24/99 2:02p Imhof
// Added ValidateItem option and support
// 
// 2     2/24/99 11:34a Imhof
// Creation.
// 
//  $Nokeywords:$ (To avoid useless search while checking in.)
/////////////////////////////////////////////////////////////////////////////
//  Copyright (C) 1998, Siemens Building Technologies, Inc. Landis Division
//
// SIEMENS BUILDING TECHNOLOGIES, INC. IS PROVIDING THE FOLLOWING
// EXAMPLES OF CODE AS SAMPLE ONLY.
//
// SIEMENS BUILDING TECHNOLOGIES, INC.  MAKES NO REPRESENTATIONS
// OR WARRANTIES OF ANY KIND  WITH RESPECT TO THE VALIDTY OF THE 
// CODES   OR   DESIRED   RESULTS   AND   DISCLAIMS   ALL   SUCH 
// REPRESENTATIONS   AND   WARRANTIES,  INCLUDING  FOR  EXAMPLE, 
// WARRANTIES  OF  MERCHANTABILITY  AND FITNESS FOR A PARTICULAR 
// PURPOSE.    SIEMENS  BUILIDNG  TECHNOLOGIES,  INC.  DOES  NOT 
// REPRESENT  OR  WARRANT  THAT  THE  FOLLOWING CODE SAMPLES ARE 
// ACCURATE, VALID, COMPLETE OR CURRENT.
//
/////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "global.h"
#include "infoserverexplorer.h"
#include "ValidateItemDlg.h"
#include "opcerror.h"

#include "IOPCItemMgt.h"

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

/////////////////////////////////////////////////////////////////////////////
// CValidateItemDlg dialog


CValidateItemDlg::CValidateItemDlg(CGroup* pGroup, CWnd* pParent /*=NULL*/)
	: CDialog(CValidateItemDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CValidateItemDlg)
	m_sTag = _T("");
	m_sNativeDataType = _T("");
	m_sResult = _T("");
	m_sAccessRights = _T("");
	//}}AFX_DATA_INIT

	m_pGroup = pGroup;
}


void CValidateItemDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CValidateItemDlg)
	DDX_Control(pDX, IDC_ITEM_TYPE, m_cbRequestedDataType);
	DDX_Text(pDX, IDC_ITEM_TAG, m_sTag);
	DDX_Text(pDX, IDC_NATIVE_DATA_TYPE, m_sNativeDataType);
	DDX_Text(pDX, IDC_VALIDATE_RESULTS, m_sResult);
	DDX_Text(pDX, IDC_ACCESS_RIGHTS, m_sAccessRights);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CValidateItemDlg, CDialog)
	//{{AFX_MSG_MAP(CValidateItemDlg)
	ON_BN_CLICKED(IDC_VALIDATE, OnValidate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CValidateItemDlg message handlers

void CValidateItemDlg::OnValidate()
{
	UpdateData(TRUE);

	USES_CONVERSION;

	HRESULT			res;
	CIOPCItemMgt	opcItemMgt(m_pGroup->GetInterface());
	OPCITEMDEF		ItemArray[1];
	OPCITEMRESULT*	pValidationResults;
	HRESULT			*pErrorValidate;

	ItemArray[0].szItemID = A2OLE(m_sTag);
	ItemArray[0].szAccessPath = A2OLE("");
	ItemArray[0].bActive = FALSE;
	ItemArray[0].hClient = NULL; //item doesn't exist yet in the group, possibly only in the cache
	ItemArray[0].dwBlobSize = 0;
	ItemArray[0].pBlob = NULL;
	/*
		if VT_EMPTY: ValidateItem returns native type
		otherwise it checks if requested data type is possible
	*/
	ItemArray[0].vtRequestedDataType = DataTypeSelectionToVartype(m_cbRequestedDataType.GetCurSel());

	m_sNativeDataType = _T("Undefined");
	m_sResult = _T("Undefined");
	m_sAccessRights = _T("Undefined");

	res = opcItemMgt.ValidateItems(1, ItemArray, FALSE , &pValidationResults, &pErrorValidate);
	if(SUCCEEDED(res))
	{
		if(SUCCEEDED(pErrorValidate[0]))
		{
			//result
			m_sResult = _T("Item found OK.");

			//access rights
			switch(pValidationResults[0].dwAccessRights)
			{
				case OPC_READABLE: m_sAccessRights = _T("Read"); break; //read only
				case OPC_WRITEABLE: m_sAccessRights = _T("Write"); break; //write
				case OPC_WRITEABLE|OPC_READABLE: m_sAccessRights = _T("Read-Write"); break; //readwrite
			}

			//data type
			if(!VartypeToDataTypeString(pValidationResults[0].vtCanonicalDataType, m_sNativeDataType))
			{
				m_sNativeDataType = _T("Undefined");
			}
		}
		else if(pErrorValidate[0] == OPC_E_BADTYPE)
		{
			//result
			m_sResult = _T("Item found OK.");

			//access rights
			switch(pValidationResults[0].dwAccessRights)
			{
				case OPC_READABLE: m_sAccessRights = _T("Read"); break; //read only
				case OPC_WRITEABLE: m_sAccessRights = _T("Write"); break; //write
				case OPC_WRITEABLE|OPC_READABLE: m_sAccessRights = _T("Read-Write"); break; //readwrite
			}

			m_sNativeDataType = _T("Requested data type is unsupported.");
		}
		else
		{
			//result
			m_sResult = _T("Item not found.");

			((CInfoServerExplorerApp*)AfxGetApp())->DisplayText(_T("CIOPCItemMgt::ValidateItems()"), pErrorValidate[0]);
		}

		((CInfoServerExplorerApp*)AfxGetApp())->DisplayText(_T("CIOPCItemMgt::ValidateItems() was successful."));
		
		CoTaskMemFree(pErrorValidate);
		CoTaskMemFree(pValidationResults);
	}
	else
	{
		((CInfoServerExplorerApp*)AfxGetApp())->DisplayText(_T("CIOPCItemMgt::ValidateItems()"), res);
	}


	UpdateData(FALSE);
}

BOOL CValidateItemDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_cbRequestedDataType.SetCurSel(VartypeToDataTypeSelection(VT_EMPTY));

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -