#include "stdafx.h" #include "IOInterfaceMapper.h" #include "DiosBoardCtrlParams.h" using namespace DIOS::Dev::Detail::MachineryECOM; unsigned char IOInterfaceMapper::ID_SYSTEM_RESET = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_SERVO_ON = (unsigned char)DO_ID_1; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_SERVO_ON = (unsigned char)(unsigned char)DO_ISO_ID_1;; unsigned char IOInterfaceMapper::ID_HAND_SWITCH_GEAR_FIRST = (unsigned char)DI_ID_1; unsigned char IOInterfaceMapper::ID_HAND_SWITCH_GEAR_SECOND = (unsigned char)DI_ID_2; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_PULSE = (unsigned char)DO_ID_2; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_DIRECTION = (unsigned char)DO_ID_3; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_AD = (unsigned char)AD_ID_1; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_AD = (unsigned char)AD_ID_3; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_ENCODER_AXIS_A = (unsigned char)ENCODER_AXIS_ID_1; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_ENCODER_AXIS_B = (unsigned char)ENCODER_AXIS_ID_2; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_ENCODER_AXIS_Z = (unsigned char)ENCODER_AXIS_ID_3; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_HIGH_LIMIT = 0x0; //待定义 unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_LOW_LIMIT = 0x0; //待定义 unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_HIGH_LIMIT = (unsigned char)DI_ID_3; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_LOW_LIMIT = (unsigned char)DI_ID_4; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_ENCODER_AXIS_A = (unsigned char)DI_ISO_ID_1; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_ENCODER_AXIS_B = (unsigned char)DI_ISO_ID_2; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_ENCODER_AXIS_Z = (unsigned char)DI_ISO_ID_3; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_DIRECTION = (unsigned char)DO_ISO_ID_2; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_PULSE = (unsigned char)DO_ISO_ID_3; unsigned char IOInterfaceMapper::ID_XRAYON_NOTIFY = (unsigned char)DI_ISO_ID_4; unsigned char IOInterfaceMapper::ID_POWER = (unsigned char)DO_ISO_ID_1; unsigned char IOInterfaceMapper::ID_DETECTOR_HEIGHT_AD = (unsigned char)AD_ID_2; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_ENCODER = (unsigned char)SEC_ID_1; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_ENCODER = (unsigned char)SEC_ID_2; unsigned char IOInterfaceMapper::ID_DETECTOR_HEIGHT_ENCODER = (unsigned char)SEC_ID_3; unsigned char IOInterfaceMapper::ID_SOFTWARE_CHAIN_INTERFACE_A = (unsigned char)SCL_ID_1; unsigned char IOInterfaceMapper::ID_SOFTWARE_CHAIN_INTERFACE_B = (unsigned char)SCL_ID_2; unsigned char IOInterfaceMapper::ID_EXPOSURE_TRIGGER = (unsigned char)EXPOSURE_CTRL_ID; unsigned char IOInterfaceMapper::ID_MCU = (unsigned char)MCU_CTRL_ID; unsigned char IOInterfaceMapper::ID_RS232 = (unsigned char)RS232_ID_1; unsigned char IOInterfaceMapper::ID_CAN = CAN_ID_1; unsigned short IOInterfaceMapper::ID_CAN_STDID_TUBE_CIRCULAR_ENCODER = 0x601; unsigned short IOInterfaceMapper::ID_CAN_STDID_TUBE_SWING_ENCODER = 0x602; unsigned char IOInterfaceMapper::ID_SYSTEM_RESET_SWING = 0x0; unsigned char IOInterfaceMapper::ID_SYSTEM_RESET_CIRCULAR = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_CONTROLLER_DIRECTION_1 = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_CONTROLLER_DIRECTION_2 = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_CONTROLLER_DIRECTION_1 = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_CONTROLLER_DIRECTION_2 = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_1 = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_2 = 0x0; unsigned char IOInterfaceMapper::ID_CARM_SCANNING_SWITCH = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_ANGLE_BRAKE = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_HEIGHT_BRAKE = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_BRAKE = 0x0; unsigned char IOInterfaceMapper::ID_FLUORO_SWITCH_OUT = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_LINE_MOTION_SWITCH_OUT = 0x0; unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_SERVO_ON = (unsigned char)DO_ID_1; //球管水平Servo On unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_PULSE = (unsigned char)DO_ID_2; //球管水平运动脉冲 unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_DIRECTION = (unsigned char)DO_ID_3; //球管水平运动方向 unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_AD = (unsigned char)AD_ID_1; //球管水平A/D unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_ENCODER_AXIS_A = (unsigned char)ENCODER_AXIS_ID_1; //球管水平编码器A轴 unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_ENCODER_AXIS_B = (unsigned char)ENCODER_AXIS_ID_2; //球管水平编码器B轴 unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_ENCODER_AXIS_Z = (unsigned char)ENCODER_AXIS_ID_3; //球管水平编码器Z轴 unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_ENCODER = (unsigned char)SEC_ID_1; //球管水平编码器 unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_LEFT_LIMIT = 0x0; //球管水平左限位 unsigned char IOInterfaceMapper::ID_TUBE_HORIZONTAL_RIGHT_LIMIT = 0x0; //球管水平右限位 unsigned char IOInterfaceMapper::ID_DETECTOR_HORIZONTAL_AD = 0x0; //探测器水平AD数据 unsigned char IOInterfaceMapper::ID_DETECTOR_HORIZONTAL_ENCODER = 0x0; //探测器水平编码器数据 void IOInterfaceMapper::Load(const std::string &configFile) { //To load mapper config file to overried the IDs definition if needed. try { HANDLE hFind = NULL; WIN32_FIND_DATA FindFileData; hFind = FindFirstFile(configFile.c_str(), &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { throw new exception("Load file failed"); } FindClose(hFind); ResDataObject pinConfig; ResDataObject pindefines; if (pinConfig.loadFile(configFile.c_str())) { if (pinConfig.GetFirstOf("CONFIGURATION") >= 0) { pindefines = pinConfig["CONFIGURATION"]; DoMapPinsToInterfaceID(pindefines); } } else { throw new exception("Load file failed"); } } catch (exception *e) { if(gdriverLog) gdriverLog->Error("[IOInterfaceMapper][Load]->[Exception][{$}][{$}]", configFile.c_str(),e->what()); } } void IOInterfaceMapper::DoMapPinsToInterfaceID(ResDataObject &pindefines) { ID_SYSTEM_RESET = (unsigned char)atoi(pindefines["ID_SYSTEM_RESET"]); ID_TUBE_HEIGHT_SERVO_ON = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_SERVO_ON"]); ID_TUBE_ANGLE_SERVO_ON = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_SERVO_ON"]); ID_HAND_SWITCH_GEAR_FIRST = (unsigned char)atoi(pindefines["ID_HAND_SWITCH_GEAR_FIRST"]); ID_HAND_SWITCH_GEAR_SECOND = (unsigned char)atoi(pindefines["ID_HAND_SWITCH_GEAR_SECOND"]); ID_TUBE_HEIGHT_PULSE = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_PULSE"]); ID_TUBE_HEIGHT_DIRECTION = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_DIRECTION"]); ID_TUBE_HEIGHT_AD = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_AD"]); ID_TUBE_ANGLE_AD = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_AD"]); ID_TUBE_HEIGHT_ENCODER_AXIS_A = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_ENCODER_AXIS_A"]); ID_TUBE_HEIGHT_ENCODER_AXIS_B = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_ENCODER_AXIS_B"]); ID_TUBE_HEIGHT_ENCODER_AXIS_Z = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_ENCODER_AXIS_Z"]); ID_TUBE_HEIGHT_HIGH_LIMIT = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_HIGH_LIMIT"]); ID_TUBE_HEIGHT_LOW_LIMIT = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_LOW_LIMIT"]); ID_TUBE_ANGLE_HIGH_LIMIT = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_HIGH_LIMIT"]); ID_TUBE_ANGLE_LOW_LIMIT = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_LOW_LIMIT"]); ID_TUBE_ANGLE_ENCODER_AXIS_A = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_ENCODER_AXIS_A"]); ID_TUBE_ANGLE_ENCODER_AXIS_B = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_ENCODER_AXIS_B"]); ID_TUBE_ANGLE_ENCODER_AXIS_Z = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_ENCODER_AXIS_Z"]); ID_TUBE_ANGLE_DIRECTION = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_DIRECTION"]); ID_TUBE_ANGLE_PULSE = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_PULSE"]); ID_XRAYON_NOTIFY = (unsigned char)atoi(pindefines["ID_XRAYON_NOTIFY"]); ID_POWER = (unsigned char)atoi(pindefines["ID_POWER"]); ID_DETECTOR_HEIGHT_AD = (unsigned char)atoi(pindefines["ID_DETECTOR_HEIGHT_AD"]); ID_TUBE_HEIGHT_ENCODER = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_ENCODER"]); ID_TUBE_ANGLE_ENCODER = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_ENCODER"]); ID_DETECTOR_HEIGHT_ENCODER = (unsigned char)atoi(pindefines["ID_DETECTOR_HEIGHT_ENCODER"]); ID_SOFTWARE_CHAIN_INTERFACE_A = (unsigned char)atoi(pindefines["ID_SOFTWARE_CHAIN_INTERFACE_A"]); ID_SOFTWARE_CHAIN_INTERFACE_B = (unsigned char)atoi(pindefines["ID_SOFTWARE_CHAIN_INTERFACE_B"]); ID_EXPOSURE_TRIGGER = (unsigned char)atoi(pindefines["ID_EXPOSURE_TRIGGER"]); ID_MCU = (unsigned char)atoi(pindefines["ID_MCU"]); ID_RS232 = (unsigned char)atoi(pindefines["ID_RS232"]); if (pindefines.GetFirstOf("ID_SYSTEM_RESET_SWING") >= 0) { ID_SYSTEM_RESET_SWING = (unsigned char)atoi(pindefines["ID_SYSTEM_RESET_SWING"]); } if (pindefines.GetFirstOf("ID_SYSTEM_RESET_CIRCULAR") >= 0) { ID_SYSTEM_RESET_CIRCULAR = (unsigned char)atoi(pindefines["ID_SYSTEM_RESET_CIRCULAR"]); } if (pindefines.GetFirstOf("ID_TUBE_HEIGHT_CONTROLLER_DIRECTION_1") >= 0) { ID_TUBE_HEIGHT_CONTROLLER_DIRECTION_1 = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_CONTROLLER_DIRECTION_1"]); } if (pindefines.GetFirstOf("ID_TUBE_HEIGHT_CONTROLLER_DIRECTION_2") >= 0) { ID_TUBE_HEIGHT_CONTROLLER_DIRECTION_2 = (unsigned char)atoi(pindefines["ID_TUBE_HEIGHT_CONTROLLER_DIRECTION_2"]); } if (pindefines.GetFirstOf("ID_TUBE_ANGLE_CONTROLLER_DIRECTION_1") >= 0) { ID_TUBE_ANGLE_CONTROLLER_DIRECTION_1 = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_CONTROLLER_DIRECTION_1"]); } if (pindefines.GetFirstOf("ID_TUBE_ANGLE_CONTROLLER_DIRECTION_2") >= 0) { ID_TUBE_ANGLE_CONTROLLER_DIRECTION_2 = (unsigned char)atoi(pindefines["ID_TUBE_ANGLE_CONTROLLER_DIRECTION_2"]); } if (pindefines.GetFirstOf("ID_CARM_SCANNING_SWITCH") >= 0) { ID_CARM_SCANNING_SWITCH = (unsigned char)atoi(pindefines["ID_CARM_SCANNING_SWITCH"]); } if (pindefines.GetFirstOf("ID_CAN") >= 0) { ID_CAN = (unsigned char)atoi(pindefines["ID_CAN"]); } if (pindefines.GetFirstOf("ID_CAN_STDID_TUBE_CIRCULAR_ENCODER") > 0) { ID_CAN_STDID_TUBE_CIRCULAR_ENCODER = (unsigned short)atoi(pindefines["ID_CAN_STDID_TUBE_CIRCULAR_ENCODER"]); } if (pindefines.GetFirstOf("ID_CAN_STDID_TUBE_SWING_ENCODER") > 0) { ID_CAN_STDID_TUBE_SWING_ENCODER = (unsigned short)atoi(pindefines["ID_CAN_STDID_TUBE_SWING_ENCODER"]); } if (pindefines.GetFirstOf("ID_TUBE_ANGLE_BRAKE") > 0) { ID_TUBE_ANGLE_BRAKE = (unsigned short)atoi(pindefines["ID_TUBE_ANGLE_BRAKE"]); } if (pindefines.GetFirstOf("ID_TUBE_HEIGHT_BRAKE") > 0) { ID_TUBE_HEIGHT_BRAKE = (unsigned short)atoi(pindefines["ID_TUBE_HEIGHT_BRAKE"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_BRAKE") > 0) { ID_TUBE_HORIZONTAL_BRAKE = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_BRAKE"]); } if (pindefines.GetFirstOf("ID_FLUORO_SWITCH_OUT") > 0) { ID_FLUORO_SWITCH_OUT = (unsigned short)atoi(pindefines["ID_FLUORO_SWITCH_OUT"]); } if (pindefines.GetFirstOf("ID_TUBE_LINE_MOTION_SWITCH_OUT") > 0) { ID_TUBE_LINE_MOTION_SWITCH_OUT = (unsigned short)atoi(pindefines["ID_TUBE_LINE_MOTION_SWITCH_OUT"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_1") > 0) { ID_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_1 = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_1"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_2") > 0) { ID_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_2 = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_CONTROLLER_DIRECTION_2"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_SERVO_ON") > 0) { ID_TUBE_HORIZONTAL_SERVO_ON = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_SERVO_ON"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_PULSE") > 0) { ID_TUBE_HORIZONTAL_PULSE = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_PULSE"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_DIRECTION") > 0) { ID_TUBE_HORIZONTAL_DIRECTION = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_DIRECTION"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_AD") > 0) { ID_TUBE_HORIZONTAL_AD = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_AD"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_ENCODER_AXIS_A") > 0) { ID_TUBE_HORIZONTAL_ENCODER_AXIS_A = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_ENCODER_AXIS_A"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_ENCODER_AXIS_B") > 0) { ID_TUBE_HORIZONTAL_ENCODER_AXIS_B = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_ENCODER_AXIS_B"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_ENCODER_AXIS_Z") > 0) { ID_TUBE_HORIZONTAL_ENCODER_AXIS_Z = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_ENCODER_AXIS_Z"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_ENCODER") > 0) { ID_TUBE_HORIZONTAL_ENCODER = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_ENCODER"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_LEFT_LIMIT") > 0) { ID_TUBE_HORIZONTAL_LEFT_LIMIT = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_LEFT_LIMIT"]); } if (pindefines.GetFirstOf("ID_TUBE_HORIZONTAL_RIGHT_LIMIT") > 0) { ID_TUBE_HORIZONTAL_RIGHT_LIMIT = (unsigned short)atoi(pindefines["ID_TUBE_HORIZONTAL_RIGHT_LIMIT"]); } if (pindefines.GetFirstOf("ID_DETECTOR_HORIZONTAL_AD") > 0) { ID_DETECTOR_HORIZONTAL_AD = (unsigned short)atoi(pindefines["ID_DETECTOR_HORIZONTAL_AD"]); } if (pindefines.GetFirstOf("ID_DETECTOR_HORIZONTAL_ENCODER") > 0) { ID_DETECTOR_HORIZONTAL_ENCODER = (unsigned short)atoi(pindefines["ID_DETECTOR_HORIZONTAL_ENCODER"]); } }