// Crate.h : Declaration of the CCrate #pragma once #include "resource.h" // main symbols #include "sli6_ext.h" // sli6 lib #include "XCrate.h" #include "ILAMEvent_CP.H" // CCrate class ATL_NO_VTABLE CCrate : public CComObjectRootEx, public CComCoClass, public IDispatchImpl, public IConnectionPointContainerImpl, public CProxyILAMEvent { public: CCrate() : CrateId(0) , status(0) , error(false) , LamEnabled(false) { } DECLARE_REGISTRY_RESOURCEID(IDR_CRATE) DECLARE_CLASSFACTORY_SINGLETON(CCrate); BEGIN_COM_MAP(CCrate) COM_INTERFACE_ENTRY(ICrate) COM_INTERFACE_ENTRY(IConnectionPointContainer) END_COM_MAP() DECLARE_PROTECT_FINAL_CONSTRUCT() HRESULT FinalConstruct() { return S_OK; } void FinalRelease() { } private: // Идентификатор крейта int CrateId; // статус последней операции short status; // есть ли ошибка bool error; // включено ли событие по прерыванию от ЛАМ запроса bool LamEnabled; public: STDMETHOD(get_Q)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_X)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_status)(/*[out, retval]*/ short *pVal); STDMETHOD(ReadWord)(/*[in]*/int posN, /*[in]*/int subA, /*[out,retval]*/short* data); STDMETHOD(Close)(); STDMETHOD(Open)(/*[in]*/int CardN,/*[in]*/int CrateN); STDMETHOD(WriteWord)(/*[in]*/ int posN, /*[in]*/ int subA, /*[in]*/short data); STDMETHOD(get_LAMEnabled)(BOOL* pVal); STDMETHOD(put_LAMEnabled)(BOOL newVal); STDMETHOD(get_error)(BOOL* pVal); STDMETHOD(get_str_error)(BSTR* pVal); //CCrate(int CardN,int CrateN); BEGIN_CONNECTION_POINT_MAP(CCrate) CONNECTION_POINT_ENTRY(__uuidof(ILAMEvent)) END_CONNECTION_POINT_MAP() }; OBJECT_ENTRY_AUTO(__uuidof(Crate), CCrate)