#pragma once #include #pragma region DEFINITION //探测器异步事件状态 enum ENUM_PANEL_EVENT_STATE { PANEL_EVENT_END_OK = 0, PANEL_EVENT_END_ERROR = 1, PANEL_EVENT_START = 2, PANEL_EVENT_SUCCESS = 3, PANEL_EVENT_END = 4, PANEL_EVENT_BEGIN = 5, PANEL_EVENT_TIMEOUT = 6 }; enum ENUM_EXPOSE_STATUS { DOSE_ACCEPT = 0, DOSE_TOO_HIGH = 1, DOSE_TOO_LOW = 2, DOSE_OBJECT = 3 }; //控制模块给DPC模块反馈的信息类型 typedef enum { EVT_LEVEL_CONFIGURATION = 0x00, EVT_LEVEL_INFORMATOION = 0x01, EVT_LEVEL_STATUS = 0x02, EVT_LEVEL_DATA = 0x03, EVT_LEVEL_WARNING = 0x04, EVT_LEVEL_ERROR = 0x05, } CcosEventLevel; typedef enum { EVT_CONF_PANEL_SERIAL = 0x00, EVT_CONF_RAW_WIDTH = 0x01, EVT_CONF_RAW_HIGHT = 0x02, EVT_CONF_RAW_BITS = 0x03, EVT_CONF_PIXELSPACE = 0x04, EVT_CONF_PREVIEW_WIDTH = 0x05, EVT_CONF_PREVIEW_HIGHT = 0x06, EVT_CONF_MODULE_TYPE = 0x07, EVT_CONF_MODULE_IP = 0x08, EVT_CONF_MODULE_SN = 0x09, EVT_CONF_FIRWARE_UPDATE = 0x0A, EVT_CONF_PART_NUMBER = 0x0B, EVT_CONF_BATTERY_SN = 0x0C, EVT_CONF_WIFI_SSID = 0x0D, EVT_CONF_IFBOARD = 0x0E, EVT_CONF_DATECODE = 0x0F, EVT_CONF_LIFETIME = 0x10, } CcosEventConfigID; typedef enum { EVT_INFO_POWER_ON = 0x00, EVT_INFO_BATTERY_CAPACITY = 0x01, EVT_INFO_BATTERY_TEMPERATURE = 0x02, EVT_INFO_BATTERY_CHARGES = 0x03, EVT_INFO_WIFI_DATARATE = 0x04, EVT_INFO_WIFI_CHANNEL = 0x05, EVT_INFO_WIFI_SIGNALPOWER = 0x06, EVT_INFO_WIFI_NOISEPOWER = 0x07, EVT_INFO_FIRMWARE = 0x08, EVT_INFO_SHOCKSENSOR_INFO = 0x09, EVT_INFO_CALIBRATIOIN_TIME = 0x0A, EVT_INFO_FPVOLTAGE = 0x0B, EVT_INFO_CALIBRATIOIN_TIMEL = 0x0C, //长曝光模式 } CcosEventInfoID; typedef enum { EVT_STATUS_INIT = 0x00, EVT_STATUS_MOTION = 0x01, EVT_STATUS_UPDATE_FIRMWARE = 0x02, EVT_STATUS_SELFTEST = 0x03, EVT_STATUS_DETECTORSHARE = 0x04, EVT_STATUS_SINGLEINIT = 0x05, EVT_STATUS_SELECTPANEL = 0x06, EVT_STATUS_PANEL = 0x07, EVT_STATUS_CALIBRATIOIN = 0x08, EVT_STATUS_SAVECALIB = 0x09, EVT_STATUS_SAVEDEFECT = 0x0A, EVT_STATUS_ACQUISITION = 0x0B, EVT_STATUS_SINGLEEXP = 0x0C, EVT_STATUS_IMAGEPENDING = 0x0D, EVT_STATUS_TEMPERATURE = 0x0E, EVT_STATUS_WIFI = 0x0F, EVT_STATUS_BATTERY_VALUE = 0x10, EVT_STATUS_BATTERY_CHARGING = 0x11, EVT_STATUS_SHOCK_SENSOR = 0x12, EVT_STATUS_HALL_SENSOR = 0x13, EVT_STATUS_PING = 0x14, EVT_STATUS_PMSNOTOPEN = 0x15, EVT_STATUS_RESTOREFILES = 0x16, EVT_STATUS_LASTERROR = 0x17, EVT_STATUS_RESET = 0x18, } CcosEventStatusID; typedef enum { EVT_DATA_RAW_IMAGE = 0x00, EVT_DATA_PREVIEW_IMAGE = 0x01, EVT_DATA_DOSEPARAM = 0x02, } CcosEventDataID; typedef enum { EVT_ERR_COMMUNICATE = 0x00, EVT_ERR_EXP_REQUEST = 0x01, EVT_ERR_GET_IMAGE = 0x02, EVT_ERR_MAX_NUMBER = 0x03, EVT_ERR_SN_NOTINLIST = 0x04, EVT_ERR_POWER_OFF = 0x05, EVT_ERR_INIT_FAILED = 0x06, } CcosEventErrorID; enum ENUM_PANEL_RESET { PANEL_RESET_BEGIN = 1, // PANEL_RESET_OK = 2, // PANEL_RESET_ERROR = 3 }; //探测器状态 enum ENUM_PANEL_STATUS { PANEL_CLOSE = 0, PANEL_STANDBY = 1, PANEL_READY_EXP = 2, PANEL_XWINDOW_ON = 3, PANEL_XWINDOW_OFF = 4, PANEL_START_TRANSMIT = 5, PANEL_END_TRANSMIT = 6, PANEL_START_ACQ = 7, PANEL_END_ACQ = 8, PANEL_EXP_END_TIMEOUT = 9, PANEL_OFFSET_CAL = 10, PANEL_OFFSET_FINISH = 11, PANEL_GAIN_CAL = 12, PANEL_GAIN_FINISH = 13, PANEL_DEFECT_CAL = 14, PANEL_DEFECT_FINISH = 15, PANEL_AEC_PRE_END = 16, PANEL_INIT = 21, PANEL_SLEEP = 22, PANEL_GET_IMAGE = 23, PANEL_GAIN_PREPARE = 24, PANEL_GAIN_READY_EXP = 25, PANEL_CONNECT = 26, PANEL_DISCONNECT = 27 }; enum { NOCAL, CAL_START, CAL_CONFIRM, CAL_REJECT, CAL_ABORT, CAL_END }; /*** * 加载探测器模式配置(不同探测器根据需要增删改) ***/ struct DetModeInfoStruct { int nLogicMode; int nImageWidth; int nImageHeight; int nWidthOffset; int nHeightOffset; int nRawImgWidth; int nRawImgHeight; int nPhySizeInfoBit; //探测器位数 int nSensitivity; //单位: ugy bool bPreviewEnable; int nPreviewWidth; int nPreviewHeight; int nPixelPitch; int nSyncType; int nXwindow; int nIsSaveRaw; int nRotateAngle; int nBinningDx; int nBinningDy; int nGainValue; int nFrequency; int nFrameCount; int nWorkStation; DetModeInfoStruct() { nLogicMode = 0; nImageWidth = 0; nImageHeight = 0; nWidthOffset = 0; nHeightOffset = 0; nRawImgWidth = 0; nRawImgHeight = 0; nPhySizeInfoBit = 0; nSensitivity = 0; bPreviewEnable = false; nPreviewWidth = 0; nPreviewHeight = 0; nPixelPitch = 0; nSyncType = 0; nXwindow = 0; nIsSaveRaw = 0; nRotateAngle = 0; nBinningDx = 0; nBinningDy = 0; nGainValue = 0; nFrequency = 0; nFrameCount = 0; nWorkStation = 0; } }; /*** * 加载探测器校正配置 ***/ struct DetCalibNodeInfo { int nImgCount; //当前计量点需要曝光的次数 float fDose; DetCalibNodeInfo() { nImgCount = 0; fDose = 0.0f; } }; struct DetCalibInfo { int nDetCalibNodeCount; DetCalibNodeInfo* pDetCalibNodeInfo; DetCalibInfo() { nDetCalibNodeCount = 0; } }; struct DeviceIndexStruct { bool bInitOK; bool bConnectStatus; string strPanelSerial; string strCalibrationDate; string strCalibrationTime; int nMaxImgHeight; int nMaxImgWidth; int nSyncMode; int nDoseOfEXI; int nWifiWarning; int nWifiLimit; int nBatteryWarning; int nBatteryLimit; float fTemperLowLimit; float fTemperMinWarn; float fTemperMaxWarn; float fTemperMaxLimit; float fCalibTemperature; float fCalibTemperature1; float fCalibTemperature2; int nForceGridSuppress; int nGridSuppressed; float fGridSuppressParam1; float fGridSuppressParam2; float fGridSuppressParam3; float fGridSuppressParam4; float fGridSuppressParam5; float fGridSuppressParam6; float fGridSuppressParam7; float fGridSuppressParam8; float fGridSuppressParam9; float fFactorEXI2UGY; //探测器EXI -> UGY 转换系数 std::string strDeviceName; //探测器名称 float fAmplificationFactor; float fSid; float fSod; int nDetModeCount; DetModeInfoStruct* pDetModeInfoStruct; DetCalibInfo stDetCalibInfo; DeviceIndexStruct() { bInitOK = false; bConnectStatus = false; nMaxImgHeight = 0; nMaxImgWidth = 0; nSyncMode = 0; nDoseOfEXI = 0; nDetModeCount = 0; strPanelSerial = ""; strCalibrationDate = "1970/01/01"; strCalibrationTime = "00:00:00"; nWifiWarning = 0; nWifiLimit = 0; nBatteryWarning = 0; nBatteryLimit = 0; fTemperLowLimit = 0.0; fTemperMinWarn = 0.0; fTemperMaxWarn = 0.0; fTemperMaxLimit = 0.0; fCalibTemperature = 0.0; fCalibTemperature1 = 0.0; fCalibTemperature2 = 0.0; //fCurrentTemperValue = 0.0; //nCurrentWifiValue = -1; //nCurrentBatteryValue = 0; nForceGridSuppress = 0; nGridSuppressed = 0; fGridSuppressParam1 = 0.0; fGridSuppressParam2 = 0.0; fGridSuppressParam3 = 0.0; fGridSuppressParam4 = 0.0; fGridSuppressParam5 = 0.0; fGridSuppressParam6 = 0.0; fGridSuppressParam7 = 0.0; fGridSuppressParam8 = 0.0; fGridSuppressParam9 = 0.0; fFactorEXI2UGY = 0.0; strDeviceName = ""; //探测器名称 fAmplificationFactor = 0.0f; fSid = 0.0f; fSod = 0.0f; } DeviceIndexStruct& operator= (const DeviceIndexStruct& copySource) { bInitOK = copySource.bInitOK; bConnectStatus = copySource.bConnectStatus; nMaxImgHeight = copySource.nMaxImgHeight; nMaxImgWidth = copySource.nMaxImgWidth; nSyncMode = copySource.nSyncMode; nDoseOfEXI = copySource.nDoseOfEXI; nDetModeCount = copySource.nDetModeCount; nWifiWarning = copySource.nWifiWarning; nWifiLimit = copySource.nWifiLimit; nBatteryWarning = copySource.nBatteryWarning; nBatteryLimit = copySource.nBatteryLimit; fTemperLowLimit = copySource.fTemperLowLimit; fTemperMinWarn = copySource.fTemperMinWarn; fTemperMaxWarn = copySource.fTemperMaxWarn; fTemperMaxLimit = copySource.fTemperMaxLimit; fCalibTemperature = copySource.fCalibTemperature; fCalibTemperature1 = copySource.fCalibTemperature1; fCalibTemperature2 = copySource.fCalibTemperature2; nForceGridSuppress = copySource.nForceGridSuppress; nGridSuppressed = copySource.nGridSuppressed; fGridSuppressParam1 = copySource.fGridSuppressParam1; fGridSuppressParam2 = copySource.fGridSuppressParam2; fGridSuppressParam3 = copySource.fGridSuppressParam3; fGridSuppressParam4 = copySource.fGridSuppressParam4; fGridSuppressParam5 = copySource.fGridSuppressParam5; fGridSuppressParam6 = copySource.fGridSuppressParam6; fGridSuppressParam7 = copySource.fGridSuppressParam7; fGridSuppressParam8 = copySource.fGridSuppressParam8; fGridSuppressParam9 = copySource.fGridSuppressParam9; fFactorEXI2UGY = copySource.fFactorEXI2UGY; strDeviceName = copySource.strDeviceName;//探测器名称 // 拷贝的逻辑实现,避免浅复制问题 return *this; } }; typedef enum { FD_INIT_NULL = -1, FD_INIT_FAILED = 0, FD_INIT_SUCCESS = 1, }fd_init_status; enum { GRID_CONF_AUTO = 0, GRID_CONF_YES = 1, GRID_CONF_NO = 2, }; enum { GRID_STATE_ERROR = -3, GRID_STATE_PARAM_ERROR = -2, GRID_STATE_PARAM_NULL = -1, GRID_STATE_NO = 0, GRID_STATE_VERTICAL = 1, GRID_STATE_HORIZONTAL = 2, }; enum TEMP_STATUS { TEMP_NORMAL = 0, TEMP_WARNING, //1 TEMP_TOO_HIGH, //2 TEMP_TOO_LOW, //3 }; enum APP_STATUS { APP_STATUS_IDLE = 0, APP_STATUS_WORK_BEGIN, //1 APP_STATUS_WORK_END, //2 APP_STATUS_DETSHARE_BEGIN, //3 APP_STATUS_DETSHAR_END, //4 APP_STATUS_CAL_BEGIN, //5 APP_STATUS_CAL_END, // 6 APP_STATUS_WORK_IN_SENSITIVITY, //7 APP_STATUS_MAX, }; #pragma endregion DEFINITION