#pragma once #include "ITubeHeightController.h" namespace DIOS::Dev::Detail::MachineryECOM { struct RS232_PARAM; class TubeHeightController : public ITubeHeightController { public: TubeHeightController(); ~TubeHeightController(); public: static std::string CLASSID(); public: virtual void Initialize(const std::string &name) override; virtual void AttachServoDrive(IServoDrive *servodrive) override; virtual void SetPulseOneCircle(unsigned short pulseonecircle) override; virtual void SetPulseDutyCycle(float dutyCycle) override; virtual void OnCommunicationEstablished(ICommunicateEntity *communicate) override; virtual void StopMove() override; virtual void Move(int direction, int steps, int pwmperiod, float pulseDutyCycle = 0.0f) override; virtual void SetServoStatus(int svostatus) override; protected: virtual void InitializeServo(); private: void DoWrite485(RS232_PARAM ¶m); void ServoOn(BOOL servoon); void SetDirection(int direction); void ClearServoDriveWarning(); bool IsBrakeOpening(); private: ICommunicateEntity *m_communicate; int m_driveNumber; int m_pulseInOneCircle; float m_pulseDutyCycle; IServoDrive *m_servo; }; }