#pragma once #include "IOInterfaceMapper.h" namespace DIOS::Dev::Detail::MachineryECOM { class ICommunicateEntity; class ICommunicate { public: ICommunicate(); virtual ~ICommunicate(); public: virtual void OnCommunicationEstablished(ICommunicateEntity *communicate) = 0; virtual void LoadCommunicationInterfaceIDs(std::map &interfaceIds); virtual void AttachCommunicateID(int interfaceID); virtual int GetInterfaceID(const std::string &key); protected: int m_communicateInterfaceID; std::map m_functionIds; }; //以下定义通信接口 ID 与功能键映射的键值 const std::string ID_TUBE_HEIGHT_SERVO_ON = "ID_TUBE_HEIGHT_SERVO_ON"; const std::string ID_TUBE_ANGLE_SERVO_ON = "ID_TUBE_ANGLE_SERVO_ON"; const std::string ID_COMMUNICATE_INTERFACE = "ID_COMMUNICATE_INTERFACE"; const std::string ID_HAND_SWITCH_GEAR_FIRST = "ID_HAND_SWITCH_GEAR_FIRST"; //一级手闸 const std::string ID_HAND_SWITCH_GEAR_SECOND = "ID_HAND_SWITCH_GEAR_SECOND"; //二级手闸 const std::string ID_TUBE_HEIGHT_PULSE = "ID_TUBE_HEIGHT_PULSE"; //球管垂直运动脉冲 const std::string ID_TUBE_HEIGHT_DIRECTION = "ID_TUBE_HEIGHT_DIRECTION"; //球管垂直运动方向 const std::string ID_TUBE_HEIGHT_AD = "ID_TUBE_HEIGHT_AD"; //球管高度AD数据 const std::string ID_TUBE_ANGLE_AD = "ID_TUBE_ANGLE_AD"; //球管角度AD数据 const std::string ID_TUBE_HEIGHT_ENCODER_AXIS_A = "ID_TUBE_HEIGHT_ENCODER_AXIS_A"; //球管高度编码器A轴 const std::string ID_TUBE_HEIGHT_ENCODER_AXIS_B = "ID_TUBE_HEIGHT_ENCODER_AXIS_B"; //球管高度编码器B轴 const std::string ID_TUBE_HEIGHT_ENCODER_AXIS_Z = "ID_TUBE_HEIGHT_ENCODER_AXIS_Z"; //球管高度编码器Z轴 const std::string ID_TUBE_ANGLE_HIGH_LIMIT = "ID_TUBE_ANGLE_HIGH_LIMIT"; //球管旋转上限位 const std::string ID_TUBE_ANGLE_LOW_LIMIT = "ID_TUBE_ANGLE_LOW_LIMIT"; //球管旋转下限位 const std::string ID_TUBE_ANGLE_ENCODER_AXIS_A = "ID_TUBE_ANGLE_ENCODER_AXIS_A"; //球管旋转编码器A轴 const std::string ID_TUBE_ANGLE_ENCODER_AXIS_B = "ID_TUBE_ANGLE_ENCODER_AXIS_B"; //球管旋转编码器B轴 const std::string ID_TUBE_ANGLE_ENCODER_AXIS_Z = "ID_TUBE_ANGLE_ENCODER_AXIS_Z"; //球管旋转编码器Z轴 const std::string ID_TUBE_ANGLE_DIRECTION = "ID_TUBE_ANGLE_DIRECTION"; //球管角度方向 const std::string ID_TUBE_ANGLE_PULSE = "ID_TUBE_ANGLE_PULSE"; //球管角度脉冲 const std::string ID_XRAYON_NOTIFY = "ID_XRAYON_NOTIFY"; //发生器射线指示 const std::string ID_POWER = "ID_POWER"; //5V电源 const std::string ID_DETECTOR_HEIGHT_AD = "ID_DETECTOR_HEIGHT_AD"; //探测器高度AD数据 const std::string ID_TUBE_HEIGHT_ENCODER = "ID_TUBE_HEIGHT_ENCODER"; //球管高度编码器 const std::string ID_TUBE_ANGLE_ENCODER = "ID_TUBE_ANGLE_ENCODER"; //球管角度编码器 const std::string ID_DETECTOR_HEIGHT_ENCODER = "ID_DETECTOR_HEIGHT_ENCODER"; //探测器高度编码器 const std::string ID_SOFTWARE_CHAIN_INTERFACE_A = "ID_SOFTWARE_CHAIN_INTERFACE_A"; //连锁器接口A const std::string ID_SOFTWARE_CHAIN_INTERFACE_B = "ID_SOFTWARE_CHAIN_INTERFACE_B"; //连锁器接口B const std::string ID_EXPOSURE_TRIGGER = "ID_EXPOSURE_TRIGGER"; //同步盒信号端口触发 const std::string ID_MCU = "ID_MCU"; //MCU const std::string ID_RS232 = "ID_RS232"; //RS232/485 const std::string ID_TUBE_HEIGHT_HIGH_LIMIT = "ID_TUBE_HEIGHT_HIGH_LIMIT"; //球管高度上限位 const std::string ID_TUBE_HEIGHT_LOW_LIMIT = "ID_TUBE_HEIGHT_LOW_LIMIT"; //球管高度下限位 const std::string ID_CAN = "ID_CAN"; //can const std::string ID_TUBE_ANGLE_BRAKE = "ID_TUBE_ANGLE_BRAKE"; //球管旋转刹车信号 const std::string ID_TUBE_HEIGHT_BRAKE = "ID_TUBE_HEIGHT_BRAKE"; //球管垂直刹车信号 const std::string ID_TUBE_HORIZONTAL_BRAKE = "ID_TUBE_HORIZONTAL_BRAKE"; //球管水平刹车信号 const std::string ID_FLUORO_SWITCH_OUT = "ID_FLUORO_SWITCH_OUT"; //脚闸信号输出 const std::string ID_TUBE_LINE_MOTION_SWITCH_OUT = "ID_TUBE_LINE_MOTION_SWITCH_OUT";//球管水平和垂直运动切换开关 const std::string ID_TUBE_HORIZONTAL_SERVO_ON = "ID_TUBE_HORIZONTAL_SERVO_ON"; //球管水平Servo On const std::string ID_TUBE_HORIZONTAL_PULSE = "ID_TUBE_HORIZONTAL_PULSE"; //球管水平运动脉冲 const std::string ID_TUBE_HORIZONTAL_DIRECTION = "ID_TUBE_HORIZONTAL_DIRECTION"; //球管水平运动方向 const std::string ID_TUBE_HORIZONTAL_AD = "ID_TUBE_HORIZONTAL_AD"; //球管水平A/D const std::string ID_TUBE_HORIZONTAL_ENCODER_AXIS_A = "ID_TUBE_HORIZONTAL_ENCODER_AXIS_A"; //球管水平编码器A轴 const std::string ID_TUBE_HORIZONTAL_ENCODER_AXIS_B = "ID_TUBE_HORIZONTAL_ENCODER_AXIS_B"; //球管水平编码器B轴 const std::string ID_TUBE_HORIZONTAL_ENCODER_AXIS_Z = "ID_TUBE_HORIZONTAL_ENCODER_AXIS_Z"; //球管水平编码器Z轴 const std::string ID_TUBE_HORIZONTAL_ENCODER = "ID_TUBE_HORIZONTAL_ENCODER"; //球管水平编码器 const std::string ID_TUBE_HORIZONTAL_LEFT_LIMIT = "ID_TUBE_HORIZONTAL_LEFT_LIMIT"; //球管水平左限位 const std::string ID_TUBE_HORIZONTAL_RIGHT_LIMIT = "ID_TUBE_HORIZONTAL_RIGHT_LIMIT"; //球管水平右限位 const std::string ID_DETECTOR_HORIZONTAL_AD = "ID_DETECTOR_HORIZONTAL_AD"; //探测器高度AD数据 const std::string ID_DETECTOR_HORIZONTAL_ENCODER = "ID_DETECTOR_HORIZONTAL_ENCODER"; //探测器高度AD数据 }