#pragma once #define DETECTOR_MODEL_DEF_API #define DETECTOR_MODEL_DEF_C_API extern "C" #include "CcosLock.h" #include "ResDataObject.h" #define OEM_IF #define OEM_NOTIFY #define MAX_STRING 1024 static const char* IMAGE_DEADLINE_TOP = "DeadLineTop"; static const char* IMAGE_DEADLINE_LEFT = "DeadLineLeft"; static const char* IMAGE_DEADLINE_RIGHT = "DeadLineRight"; static const char* IMAGE_DEADLINE_BOTTOM = "DeadLineBottom"; //typedef enum _Packet_Cmd { // PACKET_CMD_NONE = -1, // PACKET_CMD_OPEN, // PACKET_CMD_CLOSE, // PACKET_CMD_GET, // PACKET_CMD_UPDATE, // PACKET_CMD_ADD, // PACKET_CMD_DEL, // PACKET_CMD_EXE, // PACKET_CMD_DATA, // PACKET_CMD_MSG, // PACKET_CMD_ONLINE,//设备掉线后重新注册到Root // PACKET_CMD_MAX // //}PACKET_CMD; //属性Action typedef enum _AttrAction { ATTRACTION_GET, ATTRACTION_SET, ATTRACTION_ADD, ATTRACTION_DEL, ATTRACTION_UPDATE, ATTRACTION_DATA, ATTRACTION_MSG, ATTRACTION_MAX }ATTRACTION; // //typedef enum _Ret_Status { // RET_THREAD_INVALID = -4,//the calling thread is not owner // RET_INVALID = -3,//the handle is invalid // RET_NOSUPPORT = -2,//device not support // RET_TIMEOUT = -1,//超时(无接收命令) // RET_FAILED = 0,//执行命令失败 // RET_PENDING,//设备有接收命令,但无反馈(在一定时间内无反馈情况) // RET_SUCCEED,//设备执行命令成功 // RET_ONGOING,//设备执行命令已经完成,但是没有达成目标. // RET_FINISHED,//设备执行命令已经完成,且有达成目标. // RET_WARNING //}RET_STATUS; typedef enum ZSKK_FPD_State { ECOM_FPD_STATE_NOT_INI = 0, ECOM_FPD_STATE_ERR, ECOM_FPD_STATE_STANDBY, ECOM_FPD_STATE_PREPARE, ECOM_FPD_STATE_READY, ECOM_FPD_STATE_SLEEP, ECOM_FPD_STATE_SHUTDOWN, ECOM_FPD_STATE_EXIT }ZSKK_FPD_STATE; //------------------------采集命令相关----------------------------------------------------BEGIN #define CcosExpireAcqCmd ("ExpireAcqCmd") typedef enum _Ccos_Expire_Acq_Cmd { CCOS_EXPIRE_ACQ_ON, CCOS_EXPIRE_ACQ_OFF, CCOS_EXPIRE_ACQ_MAX }EXPIRE_ACQ_CMD; //------------------------采集命令相关----------------------------------------------------END //------------------------手闸相关----------------------------------------------------BEGIN //因为现在没有发生器的模型定义,所以先把手闸相关的定义放到此处 #define CcosGeneratorSwitch ("GENERATORHSWITCH") typedef enum _Ccos_Generator_Switch { GENERATOR_SWITCH_OFF, GENERATOR_SWITCH_PREPARE, GENERATOR_SWITCH_EXP, GENERATOR_SWITCH_MAX }GENERATOR_SWITCH; //------------------------手闸相关----------------------------------------------------END //------------------------Status相关----------------------------------------------------BEGIN #define CcosDetectorExpectOp ("DetectorExpectOp") typedef enum _Ccos_Detector_ExpectOp { DETECTOR_EXPECT_NONE, DETECTOR_EXPECT_ACQ, DETECTOR_EXPECT_STOP, DETECTOR_EXPECT_MAX }DETECTOR_EXPECTOP; #define CcosDetectorWorkStatus ("DetectorWorkStatus") typedef enum _Ccos_Detector_WorkStatus { DETECTOR_WORK_ACQUIRE, DETECTOR_WORK_CALIBRATE, DETECTOR_WORK_MAX }DETECTOR_WORK_STATUS; #define CcosDetectorStatus ("DetectorStatus") typedef enum _Ccos_Detector_Status { DETECTOR_STATUS_SHUTDOWN, DETECTOR_STATUS_INIT, DETECTOR_STATUS_SLEEP, DETECTOR_STATUS_WAKEUP,//低能耗,能工作 DETECTOR_STATUS_STANDBY,//高能耗,能采集 //DETECTOR_STATUS_ACQ_WAIT,//在STANDBY状态,执行ACQ Action且没到ACQ状态 DETECTOR_STATUS_ACQ, //DETECTOR_STATUS_STANDBY_WAIT,//在ACQ状态,执行StopAcq Action且没到STANDBY状态 DETECTOR_STATUS_CALIB, //校正状态 DETECTOR_STATUS_ERROR, DETECTOR_STATUS_MAX }DETECTOR_STATUS; typedef enum ENUM_SHARE_EVENT_STATE_ { PANEL_CONNECT_ERROR = 0, PANEL_ATTACH_START = 1, PANEL_CONNECT_OK = 2, PANEL_DISCONNECT_SUCCESS = 3, PANEL_DISCONNECT_ERROR = 4, PANEL_ATTACH_OVER = 5, PANEL_ATTACH_FAILED = 6, PANEL_ATTACH_NULL = 7, PANEL_ATTACH_FAILED_WITH_IMG = 8, PANEL_ATTACH_NEWSN = 9, PANEL_ATTACH_FAILED_WITHOUT_PERMISSION = 10, PANEL_START_STOREDIMAGE = 11, PANEL_END_STOREDIMAGE = 12, PANEL_EXPORT_AUTONUMOUS_FINISH = 13 }DETECTOR_SHARE_STATUS; #define CcosEcomFPDState ("EcomFPDState") #define CcosDetectorAttach ("DetectorAttach") #define CcosDetectorAttachedFlag ("FPDAttached") #define CcosDetectorConnectStatus ("DetectorConnectStatus") typedef enum _Ccos_Detector_Connect_Status { DETECTOR_CONNECT_ERROR = 0, DETECTOR_ATTACH_START = 1, DETECTOR_CONNECT_OK = 2, DETECTOR_DISCONNECT_SUCCESS = 3, DETECTOR_DISCONNECT_ERROR = 4, DETECTOR_ATTACH_OVER = 5, DETECTOR_ATTACH_FAILED = 6, DETECTOR_ATTACH_NULL = 7, DETECTOR_CONNECT_MAX }DETECTOR_CONNECT_STATUS; #define CcosDetectorInitialStatus ("DetectorInitialStatus") typedef enum _Ccos_Detector_Ini_Status { DETECTOR_INI_START = 0, DETECTOR_INI_SUCCESS = 1, DETECTOR_INI_FAILED = 2, DETECTOR_INI_MAX }DETECTOR_INI_STATUS; #define CcosDetectorUpdateFWStatus ("DetectorUpdateFWStatus") typedef enum _Ccos_Detector_UFW_Status { DETECTOR_UFW_ERROR = 0, DETECTOR_UFW_SUCCESS = 1, DETECTOR_UFW_START = 2, DETECTOR_UFW_ERROR_BATTERY = 3, DETECTOR_UFW_ERROR_OMIT = 4, DETECTOR_UFW_MAX }DETECTOR_UFW_STATUS; //------------------------Status相关----------------------------------------------------END //------------------------IMAGE相关----------------------------------------------------BEGIN typedef enum Image_View_Type { IMAGE_FULL = 0, IMAGE_PREVIEW, IMAGE_AEC_PREVIEW, IMAGE_CAL }IMAGE_VIEW_TYPE; #define CcosImageInfo ("ImageInfo") #define CcosImageFul ("ImageFull") #define CcosImagePrev ("ImagePrev") typedef enum Xray_Image_Type { XRAY_IMAGE_DARK = 0, XRAY_IMAGE_XRAYED, XRAY_IMAGE_ANY, XRAY_IMAGE_MAX }XRAY_IMAGE_TYPE; //图像类型:IMAGE_VIEW_TYPE //图像类型Support:Yes,No //用例 : fullimage+yes/no,previmage+yes/no #define CcosImageType ("ImageType") #define CcosImageViewType ("ImageViewType") #define CcosImageViewTypeSupprt ("ImageViewTypeSupprt") #define CcosImageHeight ("ImageHeight") #define CcosImageWidth ("ImageWidth") #define CcosImageBits ("ImageBits") #define CcosImageBlockSize ("ImageBlockSize") #define CcosImagePixelSpacing ("ImagePixelSpacing") #define CcosImageFPDSensitivity ("FPDSensitivity") #define CcosImageFPDCoef ("FPDCoef") #define CcosImageTargetEXI ("TargetEXI") #define CcosImageLeftTrim ("ImageLeftTrim") #define CcosImageRightTrim ("ImageRightTrim") #define CcosImageTopTrim ("ImageTopTrim") #define CcosImageBottomTrim ("ImageBottomTrim") #define CcosImageReady ("ImageReady") #define CcosImageFetchFlag ("ImageFetchFlag") //所有图像的通用属性 class DETECTOR_MODEL_DEF_API ImageInfoEx : public ExJsonDataObject { //TypeSupport:此类图像是否支持 //ImageType:Full or Prev //ImageWidth,ImageHeight,ImageBit //ImageFetchFlag:可否Fetch进行取图 //ImageReady:是否Ready // public: ImageInfoEx(); virtual ~ImageInfoEx(); }; //------------------------Gain相关----------------------------------------------------BEGIN //增益 /* 设置:按照比率保存,Gain没有线性的设置,据我目测只有多个档位选择. Gain的获取对外公开,Gain的设置不对外公开,只对OEM和DPC层公开,所以内部根据档位进行直接设置. 而档位的设置,放到DPC模块中的采集模式列表中. */ #define CcosGainTitle ("GAIN") class DETECTOR_MODEL_DEF_API GainInfoEx : public ResDataObject { public: GainInfoEx(); virtual ~GainInfoEx(); }; //------------------------Gain相关----------------------------------------------------END //------------------------ZOOM相关----------------------------------------------------BEGIN #define CcosZoomTitle ("ZOOM") #define CcosZoomX1 ("ZoomX1") #define CcosZoomY1 ("ZoomY1") #define CcosZoomX2 ("ZoomX2") #define CcosZoomY2 ("ZoomY2") #define CcosFullZoomX ("FullZoomX") #define CcosFullZoomY ("FullZoomY") class DETECTOR_MODEL_DEF_API ZoomInfoEx : public ExJsonDataObject { public: ZoomInfoEx(); virtual ~ZoomInfoEx(); }; //------------------------ZOOM相关----------------------------------------------------END //------------------------BINNING相关----------------------------------------------------BEGIN #define CcosBinningTitle ("BINNING") #define CcosBinningX ("BinningX") #define CcosBinningY ("BinningY") class DETECTOR_MODEL_DEF_API BinningInfoEx : public ExJsonDataObject { public: BinningInfoEx(); virtual ~BinningInfoEx(); }; //------------------------BINNING相关----------------------------------------------------END //------------------------AcqMode相关----------------------------------------------------BEGIN /* 关于AcqModeName: 用3个关键字描述,High(Low)Resolution,High(Low)FrameRate,High(Low)Dose. 一般情况HighResolution,必跟LowFrameRate,增益可以二选一High(Low)Dose. 一般情况LowResolution,跟HighFrameRate,增益LowDose. 其他情况,自行脑补... 策略上尽量都保持High最好,优先级 HighResolution > LowDose > HighFrameRate */ #define CcosAcqModeName ("AcqModeName") #define CcosAcqMode ("AcqMode") //采集模式 1-RAD 2-TOMO //------------------------Seq相关----------------------------------------------------BEGIN //#define XwindowTitle ("XWINDOW") #define CcosXwindowSize ("XwindowSize") #define CcosXwindowStatus ("XwindowStatus") typedef enum _Xwindow_Status { XWINDOW_OFF, XWINDOW_ON, XWINDOW_MAX }XWINDOW_STATUS; #define CcosSyncMode ("SyncMode") typedef enum _Sync_Mode { SYNC_MANUAL, SYNC_SOFTWARE, SYNC_HARDWARE, //带ECOM同步盒的硬同步 SYNC_AED, SYNC_HARDWARE_DIRECT, //探测器、发生器直连的硬同步 SYNC_MAX }SYNC_MODE; #define CcosHardwareTriggerMode ("HardwareTriggerMode") typedef enum _Hardware_Trigger_Mode { HW_TRIGGER_NONE, HW_TRIGGER_INTERNAL, HW_TRIGGER_EXTERNAL, HW_TRIGGER_MAX }HARDWARE_TRIGGER_MODE; #define CcosImageReadingStatus ("ImageReadingStatus") //addbyys20200410 曝光过程中探测器反馈的有图像的状态。 //目前用于涛影项目,缩短第一二两次曝光的时间间隔 #define CcosFPDReadyStatus ("FPDReadyStatus") //addbyys20200526 探测器采集Ready的状态。 //目前用于涛影项目,拼接检查第一帧完毕后发这个消息告知子系统探测器状态 //------------------------Seq相关----------------------------------------------------END #define CcosFrameRate ("FrameRate") #define CcosDoseRange ("DoseRange") #define CcosSensitivity ("Sensitivity") class DETECTOR_MODEL_DEF_API AcqModeInfoEx : public ResDataObject { //no key!!!!!,所以继承的是ResDataObject //ModeName //ZOOMX,ZOOMY //BINNINGX,BINNINGY //Width,Height,Bits //Trim(L,R,T,B) //Xwindow Size //FrameRate //Gain //doseRange //Sensitivity public: AcqModeInfoEx(); virtual ~AcqModeInfoEx(); }; #define AcqModeListTitle ("AcqModeList") class DETECTOR_MODEL_DEF_API AcqModeInfoListEx : public ExJsonDataObject { //normal key //1:AcqModeInfoEx1 //2:AcqModeInfoEx2 //3:AcqModeInfoEx3 //4:AcqModeInfoEx4 public: AcqModeInfoListEx(); virtual ~AcqModeInfoListEx(); }; #define CcosAcqModeIdx ("AcqModeIdx") #define CcosLoopCount ("LoopCount") typedef enum _TYPE_LOOPCOUNT { TYPE_LOOP_INFINITE = -1, TYPE_LOOP_NONE = 0, TYPE_LOOP_ONE = 1, TYPE_LOOP_TWO = 2, TYPE_LOOP_THREE = 3, //... }TYPE_LOOPCOUNT; #define CcosCorrStrategy ("CorrStrategy") /* 校正策略: 高2位Byte用于FrameCount : 1 --- 16 低2位Byte用于FrameType(16BIT) : 0代表Dark,1代表Xray 例: 低 -------------> 高 0x00030004, 0010 0000 ... 1100 0000 ... FrameCount3,FrameType DDX 采集3张,头两张为Dark,第三张为Xray. */ #define CcosFPDCurExamModeKey ("CurExamMode") class DETECTOR_MODEL_DEF_API ExamModeInfoEx : public ResDataObject { //no key!!!!!,所以继承的是ResDataObject //AcqModeIdx //Xwindow Size //FrameRate //CorrStrategy //LoopCount public: ExamModeInfoEx(); virtual ~ExamModeInfoEx(); }; #define CcosFPDExamModeListTitle ("ExamModeList") class DETECTOR_MODEL_DEF_API ExamModeInfoListEx : public ExJsonDataObject { //normal key //key : info //1 : AcqModeInfoEx1 //2 : AcqModeInfoEx2 //3 : AcqModeInfoEx3 //4 : AcqModeInfoEx4 public: ExamModeInfoListEx(); virtual ~ExamModeInfoListEx(); DWORD GetIdxKeyForNew(); }; //------------------------AcqMode相关----------------------------------------------------END //------------------------CalibrationInfo相关----------------------------------------------------BEGIN #define CalibrationInfo ("CalibrationInfo") #define CalibrationType ("CalibrationType") #define ValidCorrectionMap ("ValidCorrectionMap") #define CorrectionType ("CorrectionType") #define CorrectionFlag ("CorrectionFlag") #define DarkMapEffectiveTime ("DarkMapEffectiveTime") #define XrayMapEffectiveTime ("XrayMapEffectiveTime") #define RequestedFrameRate ("RequestedFrameRate") #define RequestedDose ("RequestedDose") //#define CalibrationStatus ("CalibrationStatus") #define CalibrationFrameFetchFlag ("CalibrationFrameFetchFlag") //#define CalibrationProgress ("CalibrationProgress") #define AutoDarkCalibrationStatus ("AutoDarkCalibrationStatus") typedef enum _Ccos_Calibration_Mode { CCOS_CALIBRATION_MODE_ECOM = 0, CCOS_CALIBRATION_MODE_OEM = 1, CCOS_CALIBRATION_MODE_MAX } CCOS_CALIBRATION_MODE; typedef enum _Ccos_AutoDarkCalibration_Status { CCOS_AUTODARKCALIBRATION_STATUS_START, CCOS_AUTODARKCALIBRATION_STATUS_END, CCOS_AUTODARKCALIBRATION_STATUS_MAX }CCOS_AUTODARKCALIBRATION_STATUS; typedef enum _Ccos_Calibration_Type { CCOS_CALIBRATION_TYPE_NONE, CCOS_CALIBRATION_TYPE_DARK, CCOS_CALIBRATION_TYPE_XRAY, CCOS_CALIBRATION_TYPE_MAX }CCOS_CALIBRATION_TYPE; typedef enum _Ccos_Correction_Type { CCOS_CORRECTION_OP_NONE, CCOS_CORRECTION_OP_OFFSET, CCOS_CORRECTION_OP_GAIN, CCOS_CORRECTION_OP_DEFECT = 4, CCOS_CORRECTION_OP_GATELINE = 8, CCOS_CORRECTION_OP_DARK_NONE = 16, CCOS_CORRECTION_OP_DARK_OFFSET = 32, CCOS_CORRECTION_OP_DARK_GAIN = 64, CCOS_CORRECTION_OP_DARK_DEFECT = 128, CCOS_CORRECTION_OP_DARK_GATELINE = 256, CCOS_CORRECTION_OP_MAX }CCOS_CORRECTION_TYPE; typedef enum _Ccos_Calibration_Status { CCOS_CALIBRATION_STATUS_ERROR, CCOS_CALIBRATION_STATUS_STANDBY, CCOS_CALIBRATION_STATUS_ACTIVE, CCOS_CALIBRATION_STATUS_RUNNING, CCOS_CALIBRATION_STATUS_PAUSE, CCOS_CALIBRATION_STATUS_PREPARE, CCOS_CALIBRATION_STATUS_MAX }CCOS_CALIBRATION_STATUS; /* 状态变迁: -------------------------------------------- ↓ ↑ Standby --Active--> (Active) --StartCali--> Running ------> (Pause) ↑ ↓ ---------------------------- */ typedef enum _Ccos_Calibration_FrameFetch { CCOS_CALIBRATION_FRAMEFETCH_NONE, CCOS_CALIBRATION_FRAMEFETCH_ONLY, CCOS_CALIBRATION_FRAMEFETCH_CONFIRM, CCOS_CALIBRATION_FRAMEFETCH_MAX }CCOS_CALIBRATION_FRAMEFETCH; class DETECTOR_MODEL_DEF_API CalibrationDataInfo : public ExJsonDataObject,public CcosLock { //Key:CalibrationInfo //CalibrationType:NONE,DARK,XRAY //CorrectionFlag:YET:1,NO:0 //CorrectionType:OFFSET | GAIN | DEFECT //ValidCorrectionMap:OFFSET | GAIN | DEFECT //RequestedFrameRate:FLOAT //real frame rate //RequestedDose:FLOAT //exi //CalibrationStatus:ERROR,STANDBY,ACTIVE,RUNNING,PAUSE. //CalibrationFrameFetchFlag:NONE,FETCHONLY,FETCHCONFIRM. //CalibrationProgress:DWORD //0 - 100% //DarkMapEffectiveTime //XrayMapEffectiveTime //use time64_t point out the uneffective tm public: CalibrationDataInfo(); virtual ~CalibrationDataInfo(); }; //------------------------Ccos Configuration UI 相关----------------------------------------------------BEGIN //--------- Attribute -----------// #define DetectorAttribute ("Attribute") #define DetectorVender ("DetectorVender") #define DetectorModel ("DetectorModel") #define DetectorDescription ("Description") #define DetectorSerialNumber ("SerialNumber") #define WiredIP ("WiredIP") #define WirelessIP ("WirelessIP") #define LocalIP ("LocalIP") #define SyncType ("SyncType") #define FPDWorkStation ("WorkStation") //table wall free share #define ReConnect ("ReConnect") //从IsConnect改为ReConnect,避免和其它模块定义冲突 #define ImageFullWidth ("ImageFullWidth") #define ImageFullHeight ("ImageFullHeight") #define TempMaxLimit ("TempMaxLimit") //温度上限,禁止曝光 #define TempUpperLimit ("TempUpperLimit") //温度高阈值,警告 #define TempLowerLimit ("TempLowerLimit") //温度低阈值,警告 #define TempMinLimit ("TempMinLimit") //温度下限,禁止曝光 #define BatLowerLimit ("BatLowerLimit") //电量低阈值,警告 #define BatMiniLimit ("BatMiniLimit") //电量下限,禁止曝光 #define BatLowerLimitInCali ("BatLowerLimitInCali") //校正时电量低阈值,警告 #define WifiLowerLimit ("WifiLowerLimit") #define WifiMiniLimit ("WifiMiniLimit") #define HighPowerTimeout ("HighPowerTimeout") //长时间未曝光休眠 #define ImageSizeX ("ImageSizeX") //图像有效宽度 #define ImageSizeY ("ImageSizeY") //图像有效高度 #define ImageWidth ("ImageWidth") //图像有效宽度 #define ImageHeight ("ImageHeight") //图像有效高度 #define WidthOffset ("WidthOffset") //图像左侧裁剪长度 #define HeightOffset ("HeightOffset") //图像上方裁剪长度 #define ShowTemperature ("ShowTemperature") //是否显示温度 #define ShowWifi ("ShowWifi") //是否显示wifi #define ShowBattery ("ShowBattery") //是否显示电量 #define ShowBluetooth ("ShowBluetooth") //是否显示蓝牙 #define FPDExamMode ("FPDExamMode") //应用检查模式 101、102、201、301、302... #define FPDAcqMode ("FPDAcqMode") //探测器的采集模式 #define FPDModeMatch ("FPDModeMatch") //检查模式和采集模式的对应关系 #define RawImgWidth ("RawImgWidth")//raw图的宽 #define RawImgHeight ("RawImgHeight")//raw图的高 #define OnlyHaveFpd ("OnlyHaveFpd")//环境中是否只有探测器为真实设备 0-否 1-是 //#define CalibMode ("CalibMode")//校正方式0-ECOM 1-OTHER #define SupportDDR ("SupportDDR")//是否支持DDR YES or NO #define OperationMode ("OperationMode")//动态探测器ApplicationMode #define ExamType ("ExamType")//动态探测器的触发模式 8-外触发 9-内触发 #define ExiThreshold ("ExiThreshold")//EXI阈值大于该阈值认为图像有效 //--------- AttributeDescription -----------// #define AttributeDescription ("Description") #define AttributeType ("Type")// "int" "float" "string" ... #define AttributeAccess ("Access") // value is "R" or "RW" #define AttributeRangeMin ("RangeMin")// pariring RangeMax. 与List互斥 #define AttributeRangeMax ("RangeMax") // pairing RangeMin. 与List互斥 #define AttributeList ("List")//("0","ListNum0") ("1","ListNum1") ("2","ListNum2") ("3","ListNum3") ("4","ListNum4") #define AttributeRequired ("Required") // value is "TRUE" or "FALSE" #define AttributeDefaultValue ("DefaultValue") //------------------------Ccos Configuration UI 相关----------------------------------------------------END //保存过程图 typedef enum _Ccos_SaveRawDataMode { CCOS_NO_SAVE_RAW, CCOS_SAVE_ORIGINAL, CCOS_SAVE_AFTER_CROP, CCOS_SAVE_AFTER_CALIB, CCOS_SAVE_AFTER_GRID_SUPPRESSION, //GridSuppression CCOS_SAVE_ALL, CCOS_SAVE_MODE_MAX } CCOS_SAVE_RAW_DATA_MODE; typedef enum _Ccos_OffsetStatus { OFFSET_IDLE = 0, OFFSET_RUNNING = 1, OFFSET_ERROR = 2 }CCOS_OFFSET_STATUS; struct AcqModeInfo { int nModeID; float fFrequency; };