#pragma once #include #include using namespace std; #include "DIOS.Dev.MouldDefine.hpp" #pragma warning (disable:4244) // warning C4244: “初始化”: 从“double”转换到“float”,可能丢失数据 namespace DIOS::Dev::Detail { namespace MECH { // 515D79B6-9243-4D9A-8F01-88183B9BCC07 Dirver // A6C288B9-8C4F-3A6C-9C5F-12345A0F7284 mammo // 9A02D2A7-523D-4FE3-8EA0-C711AE7CA6C3 stitch static const char* MechDriverType = "{515D79B6-9243-4D9A-8F01-88183B9BCC07}"; static const char* MechUnitType = "{0C99B70A-F788-48E1-9728-403BFF6DF982}"; static const char* MamoMechUnitType = "{A6C288B9-8C4F-3A6C-9C5F-12345A0F7284}"; static const char* StitchMechUnitType = "{9A02D2A7-523D-4FE3-8EA0-C711AE7CA6C3}"; namespace AttrKey { //检查信息 static const char* VIEWID = "ViewID";//视图ID static const char* PATIENTSIZE = "PatientSize";//病人体型 //机架基础信息 static const char* MACHSTATE = "MACHINESTATUS"; //机架设备状态 enum MACHINE_STATUS { MACHINE_STATUS_SHUTDOWN, MACHINE_STATUS_INIT, MACHINE_STATUS_SLEEP, MACHINE_STATUS_CHARGING,//充电 MACHINE_STATUS_STANDBY, MACHINE_STATUS_ERROR, MACHINE_STATUS_3DDR, MACHINE_STATUS_STITCH, MACHINE_STATUS_CALIBRATION, MACHINE_STATUS_SERVICE, MACHINE_STATUS_MAX }; static const char* SupportSyncMode = "SupportSyncMode"; //同步模式对应关系只存在于模型中,理论上不需要发生器存储或修改,可以不定义相应变量及Get、Set接口 static const char* UNITINFO = "DeviceInfo";//机架状态详细信息 static const char* TUBEANGLE = "MechanicalAngle";//球馆角度 static const char* TUBEHEIGHT = "MechanicalHeight";//机架高度 static const char* POSITIONNUMBER = "PositionNumber";//位置码 static const char* TID = "TID";//TID:DetectorToTableDistance static const char* SID = "SID";//SID:SourcetoDetectorDistance static const char* SED = "SED";//ENTRANCE:SourceToEntranceDistance static const char* SOD = "SOD";//SOD:SourceToPatientDistance static const char* FID = "FID";//FloorToDetectorDistance static const char* GRIDSTATE = "GRID";//震动栅 typedef enum _Dios_Mech_GridState { Grid_NULL, Grid_IN, Grid_OUT, Grid_MOVING, Grid_VIBRATE, Grid_MAX }MECH_GRIDSTATE; //乳腺信息 static const char* MAMMO_AE = "AE";// static const char* MAMMO_THICKNESS = "Thickness";//压迫厚度 static const char* MAMMO_CompPressureDEC = "CompPressureDEC";// static const char* MAMMO_DEPRESS = "Depress";//自动释放压迫板 static const char* MAMMO_SecANGLE = "MechanicalSecAngle";//机架相对角度 static const char* MAMMO_PRESSVAL = "CompPressure";//压迫压力 static const char* MAMMO_AGD = "AGD";//平均腺体计量 static const char* MAMMO_MAG = "MAG";//放大倍数 static const char* MAMMO_CompressPaddle = "CompressPaddle";//压迫板信息 //遮光器 static const char* FILTER = "Filter";//滤过 static const char* CollimatorSize = "CollimatorSize";//遮光器尺寸 //TOMO static const char* TomoTID = "MachineryTID";//探测器到患者距离 static const char* TomoSID = "MachinerySID";//球管到探测器的距离 static const char* TomoType = "TomoType";//TOMO类型 static const char* TomoViewId = "ProcedureViewId"; static const char* TomoScanDirection = "MachineryScanDirection";//方向 typedef enum TomoDirection_Type { TOMODIR_NULL, TOMODIR_TopToBottom = 1, TOMODIR_BottomToTop = 2, TOMODIR_leftToRight = 3, TOMODIR_RightToLeft = 4, TOMODIR_MAX }TOMODIR_TYPE; static const char* TomoFrameCount = "FrameCount";//总帧数 static const char* TomoFrameRate = "FrameRate";//帧率 static const char* TomoScanAngle = "MachineryScanAngle";//总角度 static const char* TomoRotateAngle = "RotateAngle"; static const char* TomoScanImageNumber = "MachineryProjectionNumber";//总张数 //拼接相应 static const char* STITCHINGSTATE = "STITCHINGSTATE"; //拼接流程状态 typedef enum _Dios_Stitch_State { STITCHSTATE_ERR = -1, //拼接错误 STITCHSTATE_INIT, //拼接初始化,此时设置拼接相应参数 STITCHSTATE_STANDBY, //拼接就绪,参数设置成功 STITCHSTATE_START, //拼接开始 STITCHSTATE_NEED_MOVE, //拼接机架需要向指定位置运动 STITCHSTATE_MOVING, //拼接机架正在运动 STITCHSTATE_REACH_INIT, //拼接机架到达初始位置 STITCHSTATE_REACH_NEXT, //拼接机架到达下一个位置 STITCHSTATE_REACH_EXTRA, //拼接机架到达额外位置 STITCHSTATE_READY, //拼接准备完毕,可以曝光 STITCHSTATE_Accept_Image,//接受当前拼接的图像 STITCHSTATE_Reject_Image,//拒绝当前拼接的图像 STITCHSTATE_END, //拼接完成 STITCHSTATE_CANCEL, //拼接退出 STITCHSTATE_RESTART, //重新拼接 STITCHSTATE_MAX //无意义 }STITCH_STATE; static const char* MECHREADY = "MachineryReady"; //机架Ready static const char* STITCHHEIGHT = "InitHeight";//初始高度 static const char* STITCHLENGTH = "TotalLength";//拼接长度 static const char* STITCHOVERLAP = "Overlap";//重叠区域 static const char* STITCHTID = "TID";//TID:DetectorToTableDistance static const char* STITCHSID = "SID";//SID:SourcetoDetectorDistance static const char* STITCHPID = "PID";//拼接位置码 static const char* STITCHDIRECTION = "Direction";//拼接方向 typedef enum StitchDirection_Type { STITCHDIR_NULL = 0, STITCHDIR_TopToBottom = 1, STITCHDIR_BottomToTop, STITCHDIR_leftToRight, STITCHDIR_RightToLeft, STITCHDIR_MAX }STITCHDIR_TYPE; static const char* STITCHTYPE = "StitchType";//拼接类型 typedef enum Stitch_Type { STITCHTYPE_NULL = -1, STITCHTYPE_AutomaticTranslation, STITCHTYPE_AutomaticAngle, STITCHTYPE_ManualTranslation, STITCHTYPE_ManualAngle, STITCHTYPE_MAX }STITCH_TYPE; static const char* STITCHSTEPLENGTH = "StitchStepLength";//移动步长 static const char* FPDPOSITION = "FPDPosition";//探测器位置 static const char* TOTALIMAGECOUNT = "StitchImageCount";//拼接总张数 static const char* CURRENTIMAGENUMBER = "StitchCurrentImage";//当前张数 //牛头显示 static const char* KV = "KV"; //阳极电压 static const char* MA = "MA"; //球管电流 static const char* MS = "MS"; //管电流 static const char* MAS = "MAS"; //电流时间积 static const char* FOCUS = "FOCUS"; //灯丝/焦点 typedef enum Focus_Type { FOCUS_SMALL, FOCUS_LARGE, FOCUS_AUTOMATIC }FOCUS_TYPE; static const char* WORKSTATION = "WORKSTATION"; //工作位 typedef enum GenWS_Type { TABLE = 0, WALL = 1, CONVENTIONAL = 2, MOBILE = 3, FREE_TABLE = 3, TOMO = 4, CONVENTIONAL_TABLE = 5, CONVENTIONAL_WALL = 6, FREE_WALL = 7, }GENWS_TYPE; static const char* TECHMODE = "TECHMODE"; //技术模式 typedef enum Techmode_Type { TECHMODE_NOAEC_3P, TECHMODE_NOAEC_2P, TECHMODE_AEC_3P, TECHMODE_AEC_2P, TECHMODE_AEC_1P, TECHMODE_AEC_ReduceMA, TECHMODE_NOAEC_MAS_MA, TECHMODE_AEC_MAS_MA }TECHMODE_TYPE; typedef enum Techmode_V2Type { ET_NONE = -1, ET_TIME = 0, ET_MAS = 1, ET_AEC = 2, ET_AEC2P = 3, ET_AEC1P = 4, ET_AECreduceMA = 5 }TECHMODE_V2TYPE; static const char* AECFIELD = "AECFIELD"; //AEC区域 static const char* AECFILM = "AECFILM"; //AEC底片 static const char* AECDENSITY = "AECDENSITY"; //AEC浓度 } namespace ActionKey { //病人信息相关 static const char* SetStudyInfo = "SetStudyInfo"; static const char* SetViewInfo = "SetViewInfo"; static const char* SetPatientInfo = "SetPatientInfo"; //机架机械控制 static const char* Reset = "RESET"; static const char* SetTechParamsInfo = "SetTechParamsInfo"; static const char* SetPositionNumber = "SetPositionNumber"; static const char* SetSID = "SetSID"; static const char* SetSOD = "SetSOD"; static const char* MoveToHome = "MoveToHome"; static const char* MoveMech = "MoveMech"; static const char* StopMech = "StopMech"; static const char* SetGrid = "SetGrid"; static const char* SetAutoTracking = "SetAutoTracking"; static const char* ActiveSyncMode = "ActiveSyncMode";//取代WorkStation设置同步模式,由上层调用设置 //乳腺方法 static const char* SetCollimatorSize = "SetCollimatorSize"; static const char* SetCollimatorFilter = "SetCollimatorFilter"; static const char* SetCollimatorSID = "SetCollimatorSID"; static const char* SetCollimatorAngle = "SetCollimatorAngle"; static const char* SetCollimatorLight = "SetCollimatorLight"; //Tomo相应 static const char* SetTomoEnable = "SetTomoEnable"; static const char* SetTomoExpMode = "SetExpMode"; static const char* SetTomoTechnical = "SetMachinicalTechnical"; static const char* GetTomoResults = "GetTomoResults"; //拼接相应 static const char* BeginStitching = "BeginStitching"; static const char* InitStitching = "InitStitching"; static const char* EndStitching = "EndStitching"; static const char* SetupStitching = "SetupStitching"; static const char* AcceptStitchingImage = "AcceptStitchingImage"; static const char* RejectStitchingImage = "RejectStitchingImage"; static const char* CancelStitching = "CancelStitching"; static const char* CompleteStitching = "CompleteStitching"; static const char* NewExtraView = "NewExtraView"; static const char* RepeatStitching = "RepeatStitching"; static const char* SetAutoPosiitonNo = "SetAutoPosiitonNo"; //遮光器 static const char* SetCollimator = "SetCollimator"; static const char* SetFilter = "SetFilter"; //牛头显示 static const char* SetWS = "SetWS"; static const char* SetKV = "SetKV"; static const char* SetMA = "SetMA"; static const char* SetMS = "SetMS"; static const char* SetMAS = "SetMAS"; static const char* SetFocus = "SetFocus"; static const char* SetTechMode = "SetTechMode"; static const char* SetAECField = "SetAECField"; static const char* SetDensity = "SetDensity"; static const char* SetExpEnable = "SetExpEnable"; static const char* SetBodySize = "SetBodySize"; } //----------------------------------------------------------------------------- // _tSyncModeArgs //----------------------------------------------------------------------------- struct _tSyncModeArgs { string strWS; string strSyncMode; string strSyncValue; }; namespace AttrKey::SYNC_TYPE { static const char* SYNC_AUTO = "AUTO"; //自动运动模式 static const char* SYNC_MANUAL = "MANUAL"; //手动运动模式 }; //################################################################################################## //定义具体设备属性 #define UNIT_DATA_INT(NAME, KEY) \ class NAME :public IntMould\ {\ using super = IntMould;\ public:\ NAME(int initialvalue, int lower, int upper, int accuracy)\ :super(KEY, initialvalue, lower, upper, accuracy)\ {}\ ~NAME() {}\ };\ #define UNIT_DATA_FLOAT(NAME, KEY) \ class NAME :public FloatMould\ {\ using super = FloatMould;\ public:\ NAME(float initialvalue, float lower, float upper, float accuracy)\ :super(KEY, initialvalue, lower, upper, accuracy)\ {}\ ~NAME() {}\ };\ #define UNIT_DATA_STR(NAME, KEY) \ class NAME :public StringMould\ {\ using super = StringMould;\ public:\ NAME(std::string initialvalue)\ :super(KEY, initialvalue)\ {}\ ~NAME() {}\ };\ UNIT_DATA_INT(PATIENTSIZEMould, AttrKey::PATIENTSIZE); UNIT_DATA_INT(VIEWIDMould, AttrKey::VIEWID); UNIT_DATA_INT(MechStateMould, AttrKey::MACHSTATE); UNIT_DATA_INT(POSITIONNUMBERMould, AttrKey::POSITIONNUMBER); UNIT_DATA_INT(TubeAngleMould, AttrKey::TUBEANGLE); UNIT_DATA_INT(TubeHeightMould, AttrKey::TUBEHEIGHT); UNIT_DATA_FLOAT(TIDMould, AttrKey::TID); UNIT_DATA_FLOAT(SIDMould, AttrKey::SID); UNIT_DATA_FLOAT(SEDMould, AttrKey::SED); UNIT_DATA_FLOAT(SODMould, AttrKey::SOD); UNIT_DATA_FLOAT(FIDMould, AttrKey::FID); UNIT_DATA_INT(GRIDMould, AttrKey::GRIDSTATE); UNIT_DATA_INT(FILTERMould, AttrKey::FILTER); UNIT_DATA_INT(MAMMOAEMould, AttrKey::MAMMO_AE); UNIT_DATA_INT(MAMMOTHICKNESSMould, AttrKey::MAMMO_THICKNESS); UNIT_DATA_INT(MAMMOPRESSDECMould, AttrKey::MAMMO_CompPressureDEC); UNIT_DATA_INT(MAMMODEPRESSMould, AttrKey::MAMMO_DEPRESS); UNIT_DATA_INT(MAMMOPRESSVALMould, AttrKey::MAMMO_PRESSVAL); UNIT_DATA_INT(MAMMOAGDMould, AttrKey::MAMMO_AGD); UNIT_DATA_INT(MAMMOMAGMould, AttrKey::MAMMO_MAG); UNIT_DATA_INT(TOMOTypeMould, AttrKey::TomoType); UNIT_DATA_INT(TOMOScanDirectionMould, AttrKey::TomoScanDirection); UNIT_DATA_INT(TOMOFrameCountMould, AttrKey::TomoFrameCount); UNIT_DATA_INT(TOMOFrameRateMould, AttrKey::TomoFrameRate); UNIT_DATA_INT(TOMOScanAngleMould, AttrKey::TomoScanAngle); UNIT_DATA_INT(TOMOScanImageNumberMould, AttrKey::TomoScanImageNumber); UNIT_DATA_INT(StitchingStateMould, AttrKey::STITCHINGSTATE); UNIT_DATA_FLOAT(StitchHeightMould, AttrKey::STITCHHEIGHT); UNIT_DATA_FLOAT(StitchLengthMould, AttrKey::STITCHLENGTH); UNIT_DATA_FLOAT(StitchOverLapMould, AttrKey::STITCHOVERLAP); UNIT_DATA_FLOAT(StitchPIDMould, AttrKey::STITCHPID); UNIT_DATA_INT(StitchDirectionMould, AttrKey::STITCHDIRECTION); UNIT_DATA_INT(StitchTypeMould, AttrKey::STITCHTYPE); UNIT_DATA_FLOAT(StitchStepLengthMould, AttrKey::STITCHSTEPLENGTH); UNIT_DATA_INT(FPDPositionMould, AttrKey::FPDPOSITION); UNIT_DATA_INT(TotalImageCountMould, AttrKey::TOTALIMAGECOUNT); UNIT_DATA_INT(CurrentImageNumberMould, AttrKey::CURRENTIMAGENUMBER); UNIT_DATA_INT(KVMould, AttrKey::KV); UNIT_DATA_FLOAT(MAMould, AttrKey::MA); UNIT_DATA_INT(MSMould, AttrKey::MS); UNIT_DATA_FLOAT(MASMould, AttrKey::MAS); UNIT_DATA_INT(FOCUSMould, AttrKey::FOCUS); UNIT_DATA_INT(WORKSTATIONMould, AttrKey::WORKSTATION); UNIT_DATA_INT(TECHMODEMould, AttrKey::TECHMODE); UNIT_DATA_INT(AECFIELDMould, AttrKey::AECFIELD); UNIT_DATA_INT(AECFILMMould, AttrKey::AECFILM); UNIT_DATA_INT(AECDENSITYMould, AttrKey::AECDENSITY); //----------------------------------------------------------------------------- // ConfigInfo //----------------------------------------------------------------------------- namespace ConfKey { static const char* DiosType = "Type"; static const char* DiosModel = "Model"; static const char* DiosConfig = "DeviceConfig"; static const char* DiosAttribute = "Attribute"; static const char* DiosDescription = "Description"; static const char* DiosSCFType = "SCFType"; static const char* DiosSCFTCPIP = "TCPIP"; static const char* DiosSCFCOM = "COM"; static const char* DiosSCFIP = "ip"; static const char* DiosSCFPort = "port"; static const char* DiosSCFBaudrate = "baudrate"; static const char* DiosSCFBytesize = "bytesize"; static const char* DiosSCFParity = "parity"; static const char* DiosSCFStopbits = "stopbits"; static const char* DiosIsConnect = "IsConnect"; //20220412 新增 以及其内部属性,主要用于webconfig static const char* DiosConfigToolInfo = "ConfigToolInfo"; static const char* DiosAttributeInfo = "AttributeInfo"; static const char* DiosAttributeKey = "AttributeKey"; static const char* DiosAttributeDescripition = "AttributeDescripition"; static const char* DiosAccess = "Access"; //static const char* DiosType = "Type"; static const char* DiosRangeMin = "RangeMin"; static const char* DiosRangeMax = "RangeMax"; static const char* DiosListNum = "ListNum"; static const char* DiosListInfo = "ListInfo"; static const char* DiosList = "List"; static const char* DiosRequired = "Required"; static const char* DiosDefaultValue = "DefaultValue"; static const char* DiosInnerKey = "InnerKey"; static const char* DiosPathID = "PathID"; } } }