CBCTMotionModel.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #pragma once
  2. #include "IMotionModel.h"
  3. namespace DIOS::Dev::Detail::MachineryECOM
  4. {
  5. class CBCTMotionStageArgs;
  6. class ICircularController;
  7. class ISwingController;
  8. class ISensorEncoderController;
  9. class IExposureController;
  10. class IOutputController;
  11. class CBCTMotionModel : public IMotionModel
  12. {
  13. public:
  14. CBCTMotionModel();
  15. ~CBCTMotionModel();
  16. public:
  17. virtual void ChangeStage(const std::string &stageName) override;
  18. virtual std::string GetStageName() override;
  19. virtual IMotionStageArgs *GetStageArgs() override;
  20. public:
  21. virtual void Initialize(IMachineryManager *machineryManager, IPositionManager *coordinates) override;
  22. virtual void LoadMachineryParams(ResDataObject &params) override;
  23. virtual void LoadModelParams(ResDataObject &params) override;
  24. virtual void SetTechnicalParams(ResDataObject &params) override;
  25. virtual void OnFeedbackMotionParams(ResDataObject &params) override;
  26. virtual BOOL GetMotionParams(ResDataObject &params) override;
  27. virtual void SwitchScanningComponents(int nSwitch) override;
  28. virtual void SwitchWorkstation(string ws) override;
  29. private:
  30. void OnMotionStage(const std::string &stageName);
  31. void MotionStageClearParams();
  32. void MotionStageCalculateParams();
  33. void MotionStageSetCBCTMotionSlice();
  34. void MotionStageMovetoEndPos();
  35. void MotionStageMovetoStartPos();
  36. void MotionStageErrorStop();
  37. void MotionStageErrorRecover();
  38. void TubeSwingToStartPostion();
  39. void TubeCircularToStartPosition();
  40. int JudgeDirectionInTubeSwingAxis(float current, float target);
  41. void RotateTubeSwing(int direction, float offset, float spd = 0.0f);
  42. int JudgeDirectionInTubeHeightAxis(float current, float target);
  43. void MoveTubeCircular(int direction, float offset, float spd = 0.0f);
  44. void OnStartExposure();
  45. void OnStopExposure();
  46. private:
  47. std::string m_StageName;
  48. CBCTMotionStageArgs *m_stageArgs;
  49. IPositionManager *m_coordinates;
  50. IMachineryManager *m_machineryManager;
  51. ICircularController *m_circular;
  52. ISwingController *m_swing;
  53. ISensorEncoderController *m_circularencoder;
  54. ISensorEncoderController *m_swingencoder;
  55. IExposureController *m_exposure;
  56. IOutputController* m_fluoroSwitch;
  57. ResDataObject m_MachineryParams;
  58. ResDataObject m_ModelParams;
  59. ResDataObject m_TechnicalParams;
  60. float m_startPos;
  61. float m_endPos;
  62. std::vector<float> m_exposureTriggerSlice;
  63. std::vector<int> m_FeedbackTubeCircularEncoders;
  64. bool m_bUseCARMRotationScanning; //false:滑轨滑动扫描 true:轴向转动扫描
  65. };
  66. }