123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #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<string, bool> m_MapChannelState;
- map<string, Sync_Element_t>m_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 <IOEventCenter> center, nsSCF::SCF SCF);
- ~DynBoxDevice();
- ResDataObject ResDYNConfig;
- protected:
- // 由工作流调用
- virtual RET_STATUS SetWS(std::string value) override;
- virtual RET_STATUS SetExpMode(std::string value) override; //设置曝光模式,signalrad或者series 可以通过模式设定决策读取同步盒不同曝光模式下的配置文件
- 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<nsDetail::MSGUnit> 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); //发送设置PWM参数的指令 频率脉宽
- RET_STATUS SendSPEBySCF(const char* chChannelID, UCHAR cMode, UCHAR cEnable, int nWaitTime); //发送使能PWM参数生效的指令(让TIC信号开始发送)
- 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); //根据盒子收到的信号,把状态传递到上层。
- int SetSignal(const char* name, int state); // 发送信号给到硬件
- void ClearSignal(); //把所有配置在out的指令都按照不生效都下发一遍
- int SetPWMState(bool state); //使能pwm参数
- int SetPWM(float fpps); //设置pwm参数
- int SetAreaType(); //设置曝光模式
- int m_nCurrentExpTimes{ 0 };
- DYNHeader_t m_DYNMap;
- bool m_bINEEnable{ false };
- int m_nExpTimes{ -1 };
- std::string m_strSYNMode;
- bool m_nInExpState{ false };
- DWORD m_wStartEXPTime;
- bool m_bClear{ false };
- nsSCF::SCF m_SCF;
- std::shared_ptr <IOEventCenter> EventCenter;
- public:
- void Register(Dispatch* Dispatch);
- void OnCallBack();
- int DealtheSignal(const char* channel, int state); // 处理信号
- //3DDR因手闸连在机架上,所以使用特殊方法模拟收到手闸信号
- RET_STATUS SimulateHandSwitchSignal(string channel, int state);
- // add by lsy 是否由同步盒更新出线状态(X-RAYOUT)
- bool m_bSynUpdataGenerStatus{ false };
- float m_DefaultExpFrameRate;
- int m_DefaultExpTimes;
- private:
- void FireNotify(std::string key, std::string context);
- //
- string m_strPreExpMode;
- bool m_bSendXindowOnMessage{ false };
- bool m_bSendXindowOffMessage{ false };
- int SetFootSwitchStatus(int signal);
- //int m_nWindosOnNum{ 0 };
- //int m_nWindosOffNum{ 0 };
- };
- }
|