123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #include "stdafx.h"
- #include "SensorEncoderController.h"
- #include "ICommunicateEntity.h"
- using namespace DIOS::Dev::Detail::MachineryECOM;
- SensorEncoderController::SensorEncoderController()
- :m_communicate(nullptr),
- m_id_axis_a(0),
- m_id_axis_b(0),
- m_id_axis_z(0)
- {
- }
- SensorEncoderController::~SensorEncoderController()
- {
- }
- std::string SensorEncoderController::CLASSID()
- {
- return "78B76591-E8B3-4058-9353-D46D4700C6F5";
- }
- void SensorEncoderController::Initialize(const std::string &name)
- {
- SetName(name);
- }
- void SensorEncoderController::OnCommunicationEstablished(ICommunicateEntity *communicate)
- {
- m_communicate = communicate;
- }
- int SensorEncoderController::GetCurrentEncoderValue()
- {
- if (m_communicateInterfaceID < 0 || !m_communicate)
- {
- return INVALID_ENCODER_VALUE;
- }
-
- int retry = 0;
- SEC_PARAM param;
- while (retry++ < 5)
- {
- if (m_communicate->SEC_Ctrl(OP_READ, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_NONE, param) >= 0)
- {
- if (param.encoder_value.encoder_value_int != 0)
- {
- return param.encoder_value.encoder_value_int;
- }
- }
- }
- return INVALID_ENCODER_VALUE;
- }
- void SensorEncoderController::LoadAxisInterfaceID(int id_axis_a, int id_axis_b, int id_axis_z)
- {
- m_id_axis_a = id_axis_a;
- m_id_axis_b = id_axis_b;
- m_id_axis_z = id_axis_z;
- }
- void SensorEncoderController::BindABAxis()
- {
- if (!m_communicate)
- {
- return;
- }
- SEC_PARAM param;
- param.a_axis_bind_id = (unsigned char)m_id_axis_a;
- param.b_axis_bind_id = (unsigned char)m_id_axis_b;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_DELTE, param);
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_A_B_AXIS_BIND, param);
- }
- void SensorEncoderController::BindZAxis()
- {
- SEC_PARAM param;
- param.use_ad_assistent = 0;
- param.z_axis_bind_id = (unsigned char)m_id_axis_z;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_Z_AXIS_BIND, param);
- }
- void SensorEncoderController::UnBindZAxis()
- {
- SEC_PARAM param;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_Z_AXIS_BIND_CANCEL, param);
- }
- void SensorEncoderController::ActiveAutoNotifyWhenZClear(bool active)
- {
- SEC_PARAM param;
- param.z_axis_clear_notify_switch = active ? SEC_Z_NOTIFY_SW_ON : SEC_Z_NOTIFY_SW_OFF;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_Z_AXIS_CLEAR_NOTIFY, param);
- }
- void SensorEncoderController::ActiveExposureTrigger(int triggerID)
- {
- SEC_PARAM param;
- param.associate_id = (unsigned char)triggerID;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_ASSOCIATE_CH1_SET, param);
- }
- void SensorEncoderController::ActiveRotateTrigger(int triggerID)
- {
- SEC_PARAM param;
- param.associate_id = (unsigned char)triggerID;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_ASSOCIATE_CH2_SET, param);
- }
- void SensorEncoderController::SetExposureTrigger(int encoderValue)
- {
- SEC_PARAM param;
- param.associate_value.associate_value_int = encoderValue;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_ASSOCIATE_CH1_TABLE_SET, param);
- }
- void SensorEncoderController::SetRotateTrigger(int encoderValue)
- {
- SEC_PARAM param;
- param.associate_value.associate_value_int = encoderValue;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_ASSOCIATE_CH2_TABLE_SET, param);
- }
- void SensorEncoderController::ClearTrigger()
- {
- SEC_PARAM param;
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_ASSOCIATE_CH1_TABLE_CLEAR, param);
- m_communicate->SEC_Ctrl(OP_SET, (SEC_ID)m_communicateInterfaceID, SEC_ATTR_ASSOCIATE_CH2_TABLE_CLEAR, param);
- }
|