#pragma once #include "ISensorEncoderController.h" namespace DIOS::Dev::Detail::MachineryECOM { struct CAN_PARAM; class SensorEncoderCArmYiDongController : public ISensorEncoderController { public: SensorEncoderCArmYiDongController(); ~SensorEncoderCArmYiDongController(); public: static std::string CLASSID(); public: virtual void Initialize(const std::string &name) override; virtual void OnCommunicationEstablished(ICommunicateEntity *communicate) override; virtual int GetCurrentEncoderValue() override; virtual void LoadAxisInterfaceID(int id_axis_a, int id_axis_b, int id_axis_z) override; virtual void BindABAxis() override; virtual void BindZAxis() override; virtual void UnBindZAxis() override; virtual void ActiveAutoNotifyWhenZClear(bool active) override; virtual void ActiveExposureTrigger(int triggerID) override; virtual void ActiveRotateTrigger(int triggerID) override; virtual void SetExposureTrigger(int encoderValue) override; virtual void SetRotateTrigger(int encoderValue) override; virtual void ClearTrigger() override; private: bool MakeSensorValueReadCanPacket(CAN_PARAM *canParm); int ParseSensorValueFromCanPacket(CAN_PARAM *canParm); private: ICommunicateEntity *m_communicate; }; }