#pragma once #include #include "DIOS.Dev.IODevice.hpp" #include "DIOS.Dev.IODevice.Detail.hpp" #include "SYNBOX.BasicMoulds.hpp" #include "DriverConfigInfo.hpp" //#include "DriverConfigInfo.tli" #ifndef DIOSDEVSYNBOXDEVICEMOULD_EXPORTS #ifdef _WIN64 #ifdef _DEBUG #pragma comment(lib, "DIOS.Dev.SYNBOX.Mould64D.lib") #else #pragma comment(lib, "DIOS.Dev.SYNBOX.Mould64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "DIOS.Dev.SYNBOX.MouldD.lib") #else #pragma comment(lib, "DIOS.Dev.SYNBOX.MouldD.lib") #endif #endif #endif #ifdef DIOSDEVSYNBOXDEVICEMOULD_EXPORTS #define _DIOSDEVSYNBOXDEVICEMOULD_API __declspec(dllexport) #else #define _DIOSDEVSYNBOXDEVICEMOULD_API __declspec(dllimport) #endif #pragma warning (disable:4251) // warning C4251: class “DIOS::Dev::Detail::Generator::DoseUnit”需要有 dll 接口由 class“DIOS::Dev::Detail::Generator::SYNBOXMould”的客户端使用 namespace DIOS::Dev::Detail::SYNBOX { //----------------------------------------------------------------------------- // SYNBOXUnit //----------------------------------------------------------------------------- class _DIOSDEVSYNBOXDEVICEMOULD_API SYNBOXUnit : public IOLogicUnit { public: SYNBOXUnit() {}; virtual ~SYNBOXUnit() {}; public: std::unique_ptr m_HandSwitchState; std::unique_ptr m_GenSynState; std::unique_ptr m_GenExpectSynState; std::unique_ptr m_TotalExpNumber; std::unique_ptr m_CurrentExpNumber; std::unique_ptr m_DetectorState; std::unique_ptr m_DetectorWindowState; std::unique_ptr m_WS; std::unique_ptr m_ExpMode; }; //----------------------------------------------------------------------------- // SYNBOXMould //----------------------------------------------------------------------------- namespace nDev = DIOS::Dev; class _DIOSDEVSYNBOXDEVICEMOULD_API SYNBOXMould { public: SYNBOXMould (); ~SYNBOXMould (); protected: virtual void Register(Dispatch* Dispatch); private: //caoxue nDev::RET_STATUS JSSetValue_WORKSTATION(std::string in, std::string& out); nDev::RET_STATUS JSSetGeneratortoSyncStatus(std::string in, std::string& out); nDev::RET_STATUS JSSetExpEnable(std::string in, std::string& out); nDev::RET_STATUS JSSetExpDisable(std::string in, std::string& out); nDev::RET_STATUS JSPrepareAcquisition(std::string in, std::string& out); nDev::RET_STATUS JSStartWindowRequest(std::string in, std::string& out); nDev::RET_STATUS JSSetExposureTimes(std::string in, std::string& out); nDev::RET_STATUS JSStopWindowRequest(std::string in, std::string& out); nDev::RET_STATUS JSSetExpMode(std::string in, std::string& out); nDev::RET_STATUS JSSetFrameRate(std::string in, std::string& out); protected: virtual nDev::RET_STATUS SetWS(std::string value) = 0; virtual nDev::RET_STATUS SetExpMode(std::string value) = 0; virtual nDev::RET_STATUS SetGeneratortoSyncStatus(int state) = 0; virtual nDev::RET_STATUS SetExpEnable() = 0; virtual nDev::RET_STATUS SetExpDisable() = 0; virtual nDev::RET_STATUS PrepareAcquisition() = 0; virtual nDev::RET_STATUS StartWindowRequest() = 0; virtual nDev::RET_STATUS SetExposureTimes(int nNum) = 0; virtual nDev::RET_STATUS StopWindowRequest() = 0; virtual nDev::RET_STATUS SetFrameRate(FLOAT frameRate) = 0; protected: SYNBOXUnit m_SynBoxUnit; }; } namespace DIOS::Dev::Detail::SYNBOX { class _DIOSDEVSYNBOXDEVICEMOULD_API DriverMould : public DIOS::Dev::IODriver { public: DriverMould (); ~DriverMould (); virtual std::string GetGUID () const; protected: std::list m_ConfigInfo; }; }