#pragma once #include "ISwingController.h" namespace DIOS::Dev::Detail::MachineryECOM { struct RS232_PARAM; class TubeSwingController : public ISwingController { public: TubeSwingController(); ~TubeSwingController(); public: static std::string CLASSID(); 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 SetServoStatus(int svostatus) override; virtual void StopSwing() override; virtual void Swing(int direction, int steps, DWORD pwmperiod, float pulseDutyCycle = 0.0f) override; virtual void SetSwingOrientation(bool clockWise) override; protected: virtual void InitializeServo(); private: void ActivePWMMode(); void ServoOn(BOOL servoon); void DoWrite485(RS232_PARAM ¶m); private: ICommunicateEntity *m_communicate; int m_driveNumber; int m_pulseInOneCircle; float m_pulseDutyCycle; IServoDrive *m_servo; }; }