TomoExamHandler.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #pragma once
  2. #include "ITomoExamHandler.h"
  3. namespace DIOS::Dev::Detail::MachineryECOM
  4. {
  5. class TomoMotionStage;
  6. class IMotionStageArgs;
  7. enum TOMO_LOGIC_GATE_CHANNEL
  8. {
  9. TLG_CHANNEL_RESET = 0x000,
  10. TLG_CHANNEL_HANDSWITCH_READY = 0x001,
  11. TLG_CHANNEL_MOTION_READY = 0x010,
  12. TLG_CHANNEL_EXPOSURE_READY = 0x100,
  13. TLG_CHANNEL_PERFORM_READY = 0x111,
  14. };
  15. class TomoExamHandler : public ITomoExamHandler
  16. {
  17. public:
  18. TomoExamHandler();
  19. ~TomoExamHandler();
  20. public:
  21. virtual void OnModelLoaded(IMotionModelManager *modelManager) override;
  22. virtual void OnCoordinatesLoaded(IPositionManager *coordinates) override;
  23. virtual void OnMotionEvent(const std::string &motionEventName) override;
  24. virtual RET_STATUS OnSelectExamMode(const char *pExamKey) override;
  25. virtual RET_STATUS OnSetTechParamsInfo(ResDataObject &pParam) override;
  26. virtual RET_STATUS OnFrameAcq() override;
  27. virtual RET_STATUS OnMoveMech(FLOAT pos) override;
  28. virtual RET_STATUS OnBlindRotateMech(FLOAT Angle) override;
  29. virtual RET_STATUS OnRotateMech(FLOAT Angle) override;
  30. virtual RET_STATUS OnActionMech(FLOAT Pos, FLOAT Angle) override;
  31. virtual RET_STATUS OnStopMech() override;
  32. virtual RET_STATUS OnStartMove(DOF_MECH mech, int nOrientation) override;
  33. virtual RET_STATUS OnStopMove(DOF_MECH mech) override;
  34. virtual RET_STATUS OnGetTomoResults(ResDataObject &resultAngle, ResDataObject &resultHeight) override;
  35. virtual RET_STATUS OnRecalculateTomoMotionParam() override;
  36. virtual RET_STATUS OnFramePrep() override;
  37. virtual RET_STATUS OnFrameError() override;
  38. virtual RET_STATUS OnFrameRecover() override;
  39. virtual RET_STATUS OnSeqError() override;
  40. virtual RET_STATUS OnSetFrameRate(FLOAT frameRate) override;
  41. virtual void OnHandSwitchGearFirstPressed() override;
  42. virtual void OnHandSwitchGearFirstReleased() override;
  43. virtual void OnHandSwitchGearSecondPressed() override;
  44. virtual void OnHandSwitchGearSecondReleased() override;
  45. virtual void OnPWMOffset(PWMOffsetPacket *pwmoff) override;
  46. virtual void OnXrayOn() override;
  47. virtual void OnXrayOff() override;
  48. virtual void OnTubeAngleEncoder(EncoderPacket *tubeangleEncoder) override;
  49. virtual void OnTubeHeightEncoder(EncoderPacket *tubeheightEncoder) override;
  50. virtual RET_STATUS OnWorkstationSwitch(const char* pWorkstation) override;
  51. private:
  52. void ChangeMotionModelStage(const std::string& stageName);
  53. BOOL ParseTechnicalParams(ResDataObject &paramIn, ResDataObject &paramOut);
  54. void NotifyTechParamsToDriver(ResDataObject &tomoTechnicals);
  55. void UpdateTomoTriggerGate(TOMO_LOGIC_GATE_CHANNEL channel);
  56. void OnTomoTriggerGateChanged(int gateStatus);
  57. void DoPerformTomo();
  58. BOOL IsMovingEnable();
  59. private:
  60. HAND_SWITCH_STATUS m_handSwitchState;
  61. BOOL m_modelLoaded;
  62. IPositionManager *m_postionManager;
  63. IMotionModelManager *m_modelManager;
  64. int m_tomoLogicGate;
  65. };
  66. }