#pragma once #include "IODeviceWithSCF.tlh" #include "IODeviceWithSCF.tli" #include "DIOS.Dev.SYNBOX.Mould.hpp" #include "DIOS.Dev.MSGMould.hpp" namespace DIOS::Dev::Detail::SYNBOX { typedef struct Sync_Element_s { string strIO; string strSyncName; string pFun; int EnableState; int DisableState; }Sync_Element_t; typedef struct DYNHeader_s { map m_MapChannelState; mapm_SyncList; }DYNHeader_t; //----------------------------------------------------------------------------- // DynBoxDevice //----------------------------------------------------------------------------- namespace nDev = DIOS::Dev; namespace nsDetail = DIOS::Dev::Detail; class DynBoxDevice : public SYNBOXMould { using superGen = SYNBOXMould; public: DynBoxDevice(std::shared_ptr center, nsSCF::SCF SCF); ~DynBoxDevice(); ResDataObject ResDYNConfig; // GENERATOR_RAD_OFF, // GENERATOR_RAD_PREPARE, // GENERATOR_RAD_READY, // GENERATOR_RAD_XRAYON, // GENERATOR_RAD_XRAYOFF, bool m_bSendRadOff{ true }; bool m_bSendRadPrepare{ true }; bool m_bSendRadReady{ true }; bool m_bSendRadXrayOn{ true }; bool m_bSendRadXrayOff{ true }; bool m_bSendXwindowOn{ true }; bool m_bSendXwindowOff{ true }; protected: virtual RET_STATUS SetWS(std::string value) override; virtual RET_STATUS SetExpMode(std::string value) override; virtual RET_STATUS SetGeneratortoSyncStatus(int state) override; virtual RET_STATUS SetExpEnable() override; virtual RET_STATUS SetExpDisable() override; virtual RET_STATUS PrepareAcquisition() override; virtual RET_STATUS StartWindowRequest() override; virtual RET_STATUS SetExposureTimes(int nNum) override; virtual RET_STATUS StopWindowRequest() override; virtual RET_STATUS SetFrameRate(FLOAT frameRate) override; virtual RET_STATUS SetGenAECSignal(int signal) override; virtual RET_STATUS SimulateFootSwitchSignal(int signal) override; virtual RET_STATUS SetValue_PPS(FLOAT fluframerate) override; private: std::unique_ptr m_MSGUnit; private: //int ChartoInt(char uc); //int CalChecksum(const char* cCmd, int nCmdSize); //bool FormatCmd(char* cCmd, int& nSize); //bool CmdtoString(const char* cCmd, int nCmdSize, string& strCmd); RET_STATUS SendBySCF(const char* chChannelID, bool bStatus); //RET_STATUS SendSPSBySCF(const char* chChannelID, int nCycle, int nPulse, int nWaitTime); //RET_STATUS SendSPEBySCF(const char* chChannelID, UCHAR cMode, UCHAR cEnable, int nWaitTime); //RET_STATUS SendSMSBySCF(const char* cExpMode, const char* cExpCount, int nWaitTime); int DealReceiveData(string sCmdID, const char* pData, int Datalen); int NotifySignal(const char* name, int state); void ClearSignal(); int SetSignal(const char* name, int state); //int SetPWMState(bool state); int SetPWM(float fpps); //int SetAreaType(); int m_nCurrentExpTimes{ 0 }; DYNHeader_t m_DYNMap; bool m_bINEEnable{ false }; int m_nExpTimes{ -1 }; std::string m_strSYNMode{"SYN0"}; bool m_nInExpState{ false }; DWORD m_wStartEXPTime; bool m_bClear{ false }; nsSCF::SCF m_SCF; std::shared_ptr EventCenter; public: void Register(Dispatch* Dispatch); void OnCallBack(); int DealtheSignal(const char* channel, int state); private: void FireNotify(std::string key, std::string context); void RefreshSignal(); void ResetPanelPreSignal(void); void ResetPanelReqSignal(void); void ResetGenExpSignal(void); }; }