📄 libopc.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 + -