2000TBoxDevice.hpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #pragma once
  2. #include "IODeviceWithSCF.tlh"
  3. #include "IODeviceWithSCF.tli"
  4. #include "DIOS.Dev.SYNBOX.Mould.hpp"
  5. #include "DIOS.Dev.MSGMould.hpp"
  6. namespace DIOS::Dev::Detail::SYNBOX
  7. {
  8. typedef struct Sync_Element_s
  9. {
  10. string strIO;
  11. string strSyncName;
  12. string pFun;
  13. int EnableState;
  14. int DisableState;
  15. }Sync_Element_t;
  16. typedef struct DYNHeader_s
  17. {
  18. map<string, bool> m_MapChannelState;
  19. map<string, Sync_Element_t>m_SyncList;
  20. }DYNHeader_t;
  21. //-----------------------------------------------------------------------------
  22. // DynBoxDevice
  23. //-----------------------------------------------------------------------------
  24. namespace nDev = DIOS::Dev;
  25. namespace nsDetail = DIOS::Dev::Detail;
  26. class DynBoxDevice : public SYNBOXMould
  27. {
  28. using superGen = SYNBOXMould;
  29. public:
  30. DynBoxDevice(std::shared_ptr <IOEventCenter> center, nsSCF::SCF SCF, string configfile);
  31. ~DynBoxDevice();
  32. ResDataObject ResDYNConfig;
  33. // GENERATOR_RAD_OFF,
  34. // GENERATOR_RAD_PREPARE,
  35. // GENERATOR_RAD_READY,
  36. // GENERATOR_RAD_XRAYON,
  37. // GENERATOR_RAD_XRAYOFF,
  38. bool m_bSendRadOff{ true };
  39. bool m_bSendRadPrepare{ true };
  40. bool m_bSendRadReady{ true };
  41. bool m_bSendRadXrayOn{ true };
  42. bool m_bSendRadXrayOff{ true };
  43. bool m_bSendXwindowOn{ true };
  44. bool m_bSendXwindowOff{ true };
  45. protected:
  46. virtual RET_STATUS SetWS(std::string value) override;
  47. virtual RET_STATUS SetExpMode(std::string value) override;
  48. virtual RET_STATUS SetGeneratortoSyncStatus(int state) override;
  49. virtual RET_STATUS SetExpEnable() override;
  50. virtual RET_STATUS SetExpDisable() override;
  51. virtual RET_STATUS PrepareAcquisition() override;
  52. virtual RET_STATUS StartWindowRequest() override;
  53. virtual RET_STATUS SetExposureTimes(int nNum) override;
  54. virtual RET_STATUS StopWindowRequest() override;
  55. virtual RET_STATUS SetFrameRate(FLOAT frameRate) override;
  56. virtual RET_STATUS SetGenAECSignal(int signal) override;
  57. virtual RET_STATUS SimulateFootSwitchSignal(int signal) override;
  58. virtual RET_STATUS SetValue_PPS(FLOAT fluframerate) override;
  59. virtual RET_STATUS ActiveSyncMode(_tSyncModeArgs value) override;
  60. private:
  61. std::unique_ptr<nsDetail::MSGUnit> m_MSGUnit;
  62. private:
  63. //int ChartoInt(char uc);
  64. //int CalChecksum(const char* cCmd, int nCmdSize);
  65. //bool FormatCmd(char* cCmd, int& nSize);
  66. //bool CmdtoString(const char* cCmd, int nCmdSize, string& strCmd);
  67. RET_STATUS SendBySCF(const char* chChannelID, bool bStatus);
  68. //RET_STATUS SendSPSBySCF(const char* chChannelID, int nCycle, int nPulse, int nWaitTime);
  69. //RET_STATUS SendSPEBySCF(const char* chChannelID, UCHAR cMode, UCHAR cEnable, int nWaitTime);
  70. //RET_STATUS SendSMSBySCF(const char* cExpMode, const char* cExpCount, int nWaitTime);
  71. int DealReceiveData(string sCmdID, const char* pData, int Datalen);
  72. int NotifySignal(const char* name, int state);
  73. void ClearSignal();
  74. int SetSignal(const char* name, int state);
  75. //int SetPWMState(bool state);
  76. int SetPWM(float fpps);
  77. //int SetAreaType();
  78. int m_nCurrentExpTimes{ 0 };
  79. DYNHeader_t m_DYNMap;
  80. bool m_bINEEnable{ false };
  81. int m_nExpTimes{ -1 };
  82. std::string m_strSYNMode{"SYN0"};
  83. bool m_nInExpState{ false };
  84. DWORD m_wStartEXPTime;
  85. bool m_bClear{ false };
  86. nsSCF::SCF m_SCF;
  87. std::shared_ptr <IOEventCenter> EventCenter;
  88. _tSyncModeArgs m_cfgCurrentWSSYN; //当前选中的工作位和对应的同步模式
  89. public:
  90. void Register(Dispatch* Dispatch);
  91. int DealtheSignal(const char* channel, int state);
  92. private:
  93. void FireNotify(std::string key, std::string context);
  94. void ResetPanelPreSignal(void);
  95. void ResetPanelReqSignal(void);
  96. void ResetGenExpSignal(void);
  97. };
  98. }