#pragma once #include "IOInterfaceMapper.h" namespace DiosCtrlBox { 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 }