RADMotionModel.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include "IMotionModel.h"
  3. namespace DiosCtrlBox
  4. {
  5. class RADMotionStageArgs;
  6. class ITubeAngleController;
  7. class ITubeHeightController;
  8. class ISensorADController;
  9. class ISensorEncoderController;
  10. class RADMotionModel : public IMotionModel
  11. {
  12. public:
  13. RADMotionModel();
  14. ~RADMotionModel();
  15. public:
  16. virtual void ChangeStage(const std::string &stageName) override;
  17. virtual std::string GetStageName() override;
  18. virtual IMotionStageArgs *GetStageArgs() override;
  19. public:
  20. virtual void Initialize(IMachineryManager *machineryManager, IPositionManager *coordinates) override;
  21. virtual void LoadMachineryParams(ResDataObject &params) override;
  22. virtual void LoadModelParams(ResDataObject &params) override;
  23. virtual void SetTechnicalParams(ResDataObject &params) override;
  24. virtual void OnFeedbackMotionParams(ResDataObject &params) override;
  25. virtual BOOL GetMotionParams(ResDataObject &params) override;
  26. private:
  27. void OnMotionStage(const std::string &name);
  28. void OnStageClearParams();
  29. void OnStageStopMove();
  30. void OnStageCenterAdjust();
  31. void AlignTubeHeightToDetector();
  32. void RotateTubeToExposure();
  33. float GetExposureAngle();
  34. int JudgeDirectionInTubeHeightAxis(float current, float target);
  35. int JudgeDirectionInTubeAngleAxis(float current, float target);
  36. void MoveTubeHeight(int direction, float offset);
  37. void RotateTubeAngle(int direction, float offset);
  38. private:
  39. std::string m_StageName;
  40. RADMotionStageArgs *m_stageArgs;
  41. IPositionManager *m_coordinates;
  42. ITubeAngleController *m_motorTubeAngle;
  43. ITubeHeightController *m_motorTubeHeight;
  44. ISensorADController *m_adDetectorHeight;
  45. ISensorEncoderController *m_encoderTubeAngle;
  46. ISensorEncoderController *m_encoderTubeHeight;
  47. ResDataObject m_MachineryParams;
  48. ResDataObject m_technicalParams;
  49. };
  50. }