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

📄 opc clientdoc.h

📁 一个opc服务器
💻 H
字号:
//**************************************************************************
//
//  Copyright (c) FactorySoft, INC. 1996-1998, All Rights Reserved
//
//**************************************************************************
//
//  Filename   :  OPC ClientDoc.h
//  $Author    :  Jim Hansen
//
//  Description:  The OPC actions are mostly handled by this Doc.
//                class Item represents items in a group
//                class CAdviseSink is the interface that gets advise callbacks.
//
//**************************************************************************
#include "ConnectionPoint.h"

class Item : public CObject
{
public:
   Item() : quality(0), hServerHandle(0) {;}
   CString      name;
   COleVariant  value;
   WORD         quality;
   FILETIME     timestamp;
   OPCHANDLE    hServerHandle;
};

typedef CTypedPtrList<CObList, Item*> ItemList;

//**************************************************************************
class CAdviseSink : public IAdviseSink
{
public:
   CAdviseSink();
   ~CAdviseSink(void);

   STDMETHODIMP QueryInterface(REFIID, void**);
   STDMETHODIMP_(ULONG) AddRef(void);
   STDMETHODIMP_(ULONG) Release(void);

   STDMETHODIMP_(void)  OnDataChange(LPFORMATETC, LPSTGMEDIUM);
   STDMETHODIMP_(void)  OnViewChange(DWORD, LONG);
   STDMETHODIMP_(void)  OnRename(LPMONIKER);
   STDMETHODIMP_(void)  OnSave(void);
   STDMETHODIMP_(void)  OnClose(void);

   STDMETHODIMP_(void)  OnWriteComplete(LPFORMATETC, LPSTGMEDIUM);
protected:
   ULONG               m_cRef;
};

//**************************************************************************
class OPCClientDoc : public CDocument
{
protected: // create from serialization only
   
   DECLARE_DYNCREATE(OPCClientDoc)

// Attributes
public:
    void connect();
	void OnOpcAdditem();
	OPCClientDoc();
// Operations
public:
   ItemList items;
   void     Disconnect() {OnOpcDisconnect();}
   void     AddItem(LPCTSTR itemID, LPCTSTR accessPath, VARTYPE type);
   CString  GetErrorString(LPCTSTR description, HRESULT error);
   void     ReportError(LPCTSTR description, HRESULT error);
    void OnOpcRefresh();
// Overrides
   // ClassWizard generated virtual function overrides
   //{{AFX_VIRTUAL(OPCClientDoc)
   public:
   virtual BOOL OnNewDocument();
   virtual void Serialize(CArchive& ar);
   
   //}}AFX_VIRTUAL

// Implementation
public:
	void close();
   OPCClientDoc* m_pDocument();
   virtual ~OPCClientDoc();
#ifdef _DEBUG
   virtual void AssertValid() const;
   virtual void Dump(CDumpContext& dc) const;
#endif

    Item*           pCurrentItem;   // selected item in view
    HWND            hView;          // for updates
    OPCServer       opcServer;      // the connected server
    OPCGroupStateMgt opcGroup;      // the single group on this server
	DWORD           dwConnection1;
    DWORD           dwConnection2;
    OPCHANDLE       groupHandle;
    CAdviseSink*    testSink;

    // OPC 2.0 ConnectionPoint 
    OPCCallback*    callbackCP;
    OPCShutdown*    shutdownCP;
    DWORD           dwShutdownConnection;
    BOOL            usingCP;

    DWORD           transactionID;  // only used for asynchronous I/O
    CString         lastServer;
    CString         lastNode;

protected:
    // OPC 1.0 IDataObject
    

// Generated message map functions
protected:
   //{{AFX_MSG(OPCClientDoc)
   afx_msg void OnOpcConnect();
   afx_msg void OnUpdateOpcConnect(CCmdUI* pCmdUI);
   afx_msg void OnOpcDisconnect();
   afx_msg void OnUpdateOpcDisconnect(CCmdUI* pCmdUI);
   afx_msg void OnOpcServerstatus();
   afx_msg void OnUpdateOpcServerstatus(CCmdUI* pCmdUI);
   afx_msg void OnOpcGroupparameters();
   afx_msg void OnUpdateOpcGroupparameters(CCmdUI* pCmdUI);
   
   afx_msg void OnUpdateOpcAdditem(CCmdUI* pCmdUI);
   afx_msg void OnOpcItemProperties();
   afx_msg void OnUpdateOpcItemProperties(CCmdUI* pCmdUI);
   afx_msg void OnOpcItemattributes();
   afx_msg void OnUpdateOpcItemattributes(CCmdUI* pCmdUI);
   afx_msg void OnOpcWritevaluetoitem();
   afx_msg void OnUpdateOpcWritevaluetoitem(CCmdUI* pCmdUI);
   afx_msg void OnOpcReaditem();
   afx_msg void OnUpdateOpcReaditem(CCmdUI* pCmdUI);
   
   afx_msg void OnUpdateOpcRefresh(CCmdUI* pCmdUI);
   afx_msg void OnOpcRemoveitem();
   afx_msg void OnUpdateOpcRemoveitem(CCmdUI* pCmdUI);
	afx_msg void OnOpcTestSyncRead();
	afx_msg void OnUpdateOpcTestSyncRead(CCmdUI* pCmdUI);
	afx_msg void OnOpcMisc();
	
	//}}AFX_MSG
   DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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