#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 { //获取日志配置路径 _DIOSDEVSYNBOXDEVICEMOULD_API string GetProcessDirectory(); //获取配置文件中指定模块的版本号 _DIOSDEVSYNBOXDEVICEMOULD_API bool GetVersion(string& version, HMODULE hMyModule); _DIOSDEVSYNBOXDEVICEMOULD_API bool GetVersion(string& version, ResDataObject& config); _DIOSDEVSYNBOXDEVICEMOULD_API bool GetVersion(string& version); _DIOSDEVSYNBOXDEVICEMOULD_API void TransJsonText(ResDataObject& config); //----------------------------------------------------------------------------- // SYNBOXUnit //----------------------------------------------------------------------------- class _DIOSDEVSYNBOXDEVICEMOULD_API SYNBOXUnit : public IOLogicUnit { public: SYNBOXUnit() {}; virtual ~SYNBOXUnit() {}; public: std::unique_ptr m_SynBoxState; std::unique_ptr m_WS; std::unique_ptr m_ExpMode; std::unique_ptr m_GenSynState; std::unique_ptr m_GridStatue; std::unique_ptr m_HandSwitchState; std::unique_ptr m_TotalExpNumber; std::unique_ptr m_CurrentExpNumber; std::unique_ptr m_DetectorState; std::unique_ptr m_DetectorWindowState; std::unique_ptr m_GenExpFrameRate; std::unique_ptr m_GenExpTimes; }; //----------------------------------------------------------------------------- // SYNBOXMould //----------------------------------------------------------------------------- namespace nDev = DIOS::Dev; class _DIOSDEVSYNBOXDEVICEMOULD_API SYNBOXMould { public: SYNBOXMould (); ~SYNBOXMould (); protected: virtual void Register(Dispatch* Dispatch); protected: virtual RET_STATUS Reset() { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS SetWS(std::string value) = 0; virtual RET_STATUS SetExpMode(std::string value) = 0; virtual RET_STATUS SetGeneratortoSyncStatus(int state) = 0; virtual RET_STATUS SetExpEnable() = 0; virtual RET_STATUS SetExpDisable() = 0; virtual RET_STATUS PrepareAcquisition() = 0; virtual RET_STATUS StartWindowRequest() = 0; virtual RET_STATUS SetExposureTimes(int nNum) = 0; virtual RET_STATUS StopWindowRequest() = 0; virtual RET_STATUS SetFrameRate(FLOAT frameRate) = 0; virtual RET_STATUS SetValue_PPS(FLOAT fluframerate) { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS SetGenAECSignal(int signal) { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS SimulateFootSwitchSignal(int signal) { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS SimulateHandSwitchSignal(int signal) { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS SetDirectSignal(string channel, bool state) { return RET_STATUS::RET_SUCCEED; }; virtual RET_STATUS ActiveSyncMode(_tSyncModeArgs value) { return RET_STATUS::RET_SUCCEED; }; 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; virtual string GetConnectDLL(string& ConfigFileName); virtual ResDataObject GetConnectParam(string& ConfigFileName); protected: std::list m_ConfigInfo; }; }