#pragma once #include "DIOS.Dev.DAP.Mould.hpp" #include "IODeviceWithSCF.tlh" #include "IODeviceWithSCF.tli" #include "DIOS.Dev.MSGMould.hpp" #ifdef DIOSDEVGENDEMO_EXPORTS #define _DIOSDEVGENDEMO_API __declspec(dllexport) #else #define _DIOSDEVGENDEMO_API __declspec(dllimport) #endif namespace DIOS::Dev::Detail::DAP { //----------------------------------------------------------------------------- // PTWDAPDevice //----------------------------------------------------------------------------- namespace nDev = DIOS::Dev; class _DIOSDEVGENDEMO_API VACUE130DAP : public IODeviceWithSCF ,public DAPMould { using super = IODeviceWithSCF ; using superGen = DAPMould; public: VACUE130DAP(std::shared_ptr center, nsSCF::SCF SCF, string configfile); ~VACUE130DAP(); virtual std::string GetGUID() const override; RET_STATUS ClearDAP(); RET_STATUS QueryDAP(float& value); void OnCallBack(const char* strPackage, DWORD Length); void SubscribeSelf(dios_mqtt_connection* conn) override; private: RET_STATUS HWSend(char* strCommand, int nTimeOut =100); std::unique_ptr m_MSGUnit; ResDataObject m_DapConfig; std::string GetDynamicLibraryPath(); std::string GetFileVersion(std::string strFilePathName); void GetConfData(); string m_strCommunicateType{ "com" }; //指令 void ResetDap(); void TestDAP(); void QueryStatus(); void SetProtocol(); void GetMeanValue(); //发生器数据 float m_fPostKV{ 0.0 }; float m_fPostMAS{ 0.0 }; float m_fPostMA{ 0.0 }; float m_fPostMS{ 0.0 }; //遮光器数据 float m_fSID{ 0.0 }; float m_fXsize{ 0.0 }; float m_fYsize{ 0.0 }; virtual RET_STATUS SetGenCurrentSMState(std::string value) override; virtual RET_STATUS SetGenPostKV(const std::string value) override; virtual RET_STATUS SetGenPostMAS(const std::string value) override; virtual RET_STATUS SetGenPostMA(const std::string value) override; virtual RET_STATUS SetGenPostMS(const std::string value) override; virtual RET_STATUS SetCollSID(const std::string value) override; virtual RET_STATUS SetCollXSIZE(const std::string value) override; virtual RET_STATUS SetCollYSIZE(const std::string value) override; private: void Register(); public: protected: private: void FireNotify (std::string key, std::string context); }; } //----------------------------------------------------------------------------- // DAPDriver //----------------------------------------------------------------------------- namespace DIOS::Dev::Detail::DAP { class _DIOSDEVGENDEMO_API DAPDriver : public IODriverWithSCF { using super = IODriverWithSCF ; public: DAPDriver(); virtual ~DAPDriver(); public: virtual void Prepare () override; virtual bool DATA_ACTION Connect () override; virtual void Disconnect() override; virtual bool isConnected() const override; virtual void Dequeue (const char * Packet, DWORD Length) override; virtual void FireNotify (int code, std::string key, std::string content) override; virtual auto CreateDevice (int index)->std::unique_ptr override; virtual std::string DriverProbe () override; virtual std::string GetResource () override; virtual std::string DeviceProbe () override; private: static PACKET_RET callbackPackageProcess (const char* RecData, DWORD nLength, DWORD& PacketLength); bool m_bDemoConnected; // 在 DEMO 模式下, 调用过 Connect 吗? VACUE130DAP* m_pDevice {nullptr}; }; }