123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #pragma once
- #include <atomic>
- #include "IODeviceWithSCF.tlh"
- #include "IODeviceWithSCF.tli"
- #include "DIOS.Dev.SYNBOX.Mould.hpp"
- #include "DIOS.Dev.MSGMould.hpp"
- #include "OEM.Collimator.h"
- #include "OEM.Mechanical.h"
- #define V2COM_HeartBeat_Enable 0
- 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;
- //-----------------------------------------------------------------------------
- // V2COMBoxDevice
- //-----------------------------------------------------------------------------
- namespace nDev = DIOS::Dev;
- namespace nsDetail = DIOS::Dev::Detail;
- class V2COMBoxDevice : public SYNBOXMould
- {
- using superGen = SYNBOXMould;
- public:
- V2COMBoxDevice(std::shared_ptr <IOEventCenter> center, nsSCF::SCF SCF, string configfile);
- ~V2COMBoxDevice();
- //add by wxx : 新增重连提醒
- void ReConnect(string &errorList); //true -> 开始重连处理;false -> 完成重连操作
- void FireErrorMessage(const bool Act, const int Code, const char* ResInfo = "");
- ResDataObject ResDYNConfig;
- ResDataObject m_SYNConfig; //driver's config file.
- protected:
- virtual nDev::RET_STATUS SetWS(std::string value) override;
- virtual nDev::RET_STATUS SetExpMode(std::string value) override;
- virtual nDev::RET_STATUS SetGeneratortoSyncStatus(int state) override;
- virtual nDev::RET_STATUS SetExpEnable() override;
- virtual nDev::RET_STATUS SetExpDisable() override;
- virtual nDev::RET_STATUS PrepareAcquisition() override;
- virtual nDev::RET_STATUS StartWindowRequest() override;
- virtual nDev::RET_STATUS SetExposureTimes(int nNum) override;
- virtual nDev::RET_STATUS StopWindowRequest() override;
- virtual nDev::RET_STATUS SetFrameRate(FLOAT frameRate) override;
- virtual nDev::RET_STATUS SetGenAECSignal(int signal) override;
- private:
- bool StartHardwareThread();
- static DWORD HardwareStatusThread(LPVOID pParam);
- void SendHeartBeat();
- HANDLE m_pHardwareThread;
- std::unique_ptr<nsDetail::MSGUnit> m_MSGUnit;
- atomic<int> m_iHeartBeats; //心跳统计
- atomic<bool> m_bConnectFlag; //连接标记
- void QueryInfo();
- 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);
- nDev::RET_STATUS SendBySCF(const char* chChannelID, bool bStatus);
- //nDev::RET_STATUS SendSPSBySCF(const char* chChannelID, int nCycle, int nPulse, int nWaitTime);
- //nDev::RET_STATUS SendSPEBySCF(const char* chChannelID, UCHAR cMode, UCHAR cEnable, int nWaitTime);
- //nDev::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 <IOEventCenter> EventCenter;
- int m_nGenSynStateSignal{ 0 }; //add by wxx:解决OT1信号在 配置 及 工作流中重复发送的问题
- bool m_bGenAECModeFlag{ false };
- public:
- void Register(Dispatch* Dispatch);
- void OnCallBack();
-
- int DealtheSignal(const char* channel, int state);
- void DealtheHB(const char* channel, int state);
- nDev::RET_STATUS HWSend(char* strCommand, int nTimeOut=200);
- virtual nDev::RET_STATUS SetFilter(int filter);
- virtual nDev::RET_STATUS SetCollimatorDev(OemCollimator* dev);
- virtual nDev::RET_STATUS SetMechDev(OemMechanical* dev);
- nDev::RET_STATUS SetGrid(unsigned int GridType);
- std::unique_ptr<OemCollimator> m_pCollDev;
- std::unique_ptr<OemMechanical> m_pMechDev;
- void DealReceiveData(char* data_can, int length_can_data);
- private:
- void FireNotify(std::string key, std::string context);
- bool m_bSetBaudOK;//not use now
- };
- }
|