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

📄 libopc.h

📁 自动化领域的软件标准通讯接口OPC的封装
💻 H
字号:
#if !defined(_LIBOPC_H_)
#define _LIBOPC_H_




#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

//***********************************************************************

#include "opc.h"
#include "opcerror.h"
#include <atlbase.h>
#include <afxtempl.h>

// Maximum Group that can be created is 3
// Maximum Name size is 128
const int _OPC_MAX_GROUP = 3 ;
const int _OPC_MAX_NAME = 256 ;

// For future use with CObject
typedef CTypedPtrList<CObList, CItem*> ItemList ;

class CErrors
{
public:
	HRESULT pErrors ;
	wchar_t	cName[_OPC_MAX_NAME] ;
} ;

class CGroup
{
public:
	int m_nGroupNo;
	DWORD m_NoOfItems ;
	wchar_t m_szGrpName[_OPC_MAX_NAME] ;
	OPCHANDLE m_GroupHandle ;
};

class CAppServerInit
{
public:
	 CAppServerInit () 
	 {
		 OPCInitialize ();
	 } ;
	~CAppServerInit () 
	{
		OPCUninitialize () ;
	} ;
	HRESULT OPCInitialize(bool ThreadType = TRUE)
	{
		if (ThreadType)
			return CoInitializeEx (NULL, COINIT_MULTITHREADED);
		else
			return CoInitialize (NULL);
	}
	void OPCUninitialize () 
	{
		CoUninitialize () ;
	} 

private:
} ;

class CAppServer : public CAppServerInit
{
public:
	CAppServer () ;
	~CAppServer ();
	CAppServer(wchar_t* svrName, wchar_t* svrType) ;
	CAppServer (const CAppServer &rhs) ;
	CAppServer& operator=(const CAppServer &rhs) ;

// Operations
public:
	HRESULT OPCConnect() ;
	HRESULT OPCConnect(wchar_t* svrName, wchar_t* svrType);
	HRESULT OPCDisconnect () ;
	HRESULT OPCAddGroup (LPWSTR szGrpName) ;
	HRESULT OPCAddTags (wchar_t* ItemIDs[], DWORD NoOfItems, OPCHANDLE ClientHandles[],
						OPCHANDLE ServerHandles[], CErrors* pErr, int &nErr) ;
	HRESULT OPCReadTags (CItem* pValues, DWORD NoOfItems, OPCHANDLE ServerHandles[],int &nErr) ;
	HRESULT OPCWriteTags(CItem* pValues, DWORD NoOfItems, OPCHANDLE ServerHandles[],int &nErr) ;
	int OPCChangeGroup(LPWSTR szGrpName);

	HRESULT OPCRemoveItems (LPWSTR szGrpName, DWORD NoOfItems, OPCHANDLE ServerHandles[], HRESULT pErr[]) ;
	HRESULT OPCRemoveGroup (LPWSTR szGrpName) ;
	HRESULT BrowseServerAddressSpace (LPWSTR *pName, unsigned long* cnt);

	bool IsOK () const;
// Attributes
public:
	wchar_t m_wstrServerName[_OPC_MAX_NAME] ;
	wchar_t m_wstrServerType[_OPC_MAX_NAME] ;
private:
	int AddGroupName(LPWSTR szGrpName, CGroup &GrpNum);
	int CheckGroupName(LPWSTR szGrpName, CGroup &GrpNum);
	void ReadDataValues(CItem* pValues, OPCITEMSTATE* pItemState, DWORD index) ;
	OPCHANDLE m_GroupHandle ;
	int m_nGroupNo ;	// Global variable, always indicates the current group number in operation
	int m_nTotalGroups ;// Total Number of Groups
	CGroup GroupNumber[_OPC_MAX_GROUP] ;

	CComQIPtr<IOPCServer, &IID_IOPCServer> m_pIOPCServer ;
	CComQIPtr<IOPCSyncIO, &IID_IOPCSyncIO> m_pIOPCSyncIO ;
	CComQIPtr<IOPCGroupStateMgt, &IID_IOPCGroupStateMgt> m_pIOPCGroupStateMgt[_OPC_MAX_GROUP] ;

	void OPCpErrors (HRESULT* pErrors, int NoOfItems) ;


} ;


#endif _LIBOPC_H_ 

⌨️ 快捷键说明

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