MECH.BasicMoulds.hpp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. #pragma once
  2. #include <string>
  3. #include <algorithm>
  4. using namespace std;
  5. #include "DIOS.Dev.MouldDefine.hpp"
  6. #pragma warning (disable:4244) // warning C4244: “初始化”: 从“double”转换到“float”,可能丢失数据
  7. namespace DIOS::Dev::Detail
  8. {
  9. namespace MECH
  10. {
  11. // 515D79B6-9243-4D9A-8F01-88183B9BCC07 Dirver
  12. // A6C288B9-8C4F-3A6C-9C5F-12345A0F7284 mammo
  13. // 9A02D2A7-523D-4FE3-8EA0-C711AE7CA6C3 stitch
  14. static const char* MechDriverType = "{515D79B6-9243-4D9A-8F01-88183B9BCC07}";
  15. static const char* MechUnitType = "{0C99B70A-F788-48E1-9728-403BFF6DF982}";
  16. static const char* MamoMechUnitType = "{A6C288B9-8C4F-3A6C-9C5F-12345A0F7284}";
  17. static const char* StitchMechUnitType = "{9A02D2A7-523D-4FE3-8EA0-C711AE7CA6C3}";
  18. namespace AttrKey
  19. {
  20. //检查信息
  21. static const char* VIEWID = "ViewID";//视图ID
  22. static const char* PATIENTSIZE = "PatientSize";//病人体型
  23. //机架基础信息
  24. static const char* MACHSTATE = "MACHINESTATUS"; //机架设备状态
  25. enum MACHINE_STATUS {
  26. MACHINE_STATUS_SHUTDOWN,
  27. MACHINE_STATUS_INIT,
  28. MACHINE_STATUS_SLEEP,
  29. MACHINE_STATUS_CHARGING,//充电
  30. MACHINE_STATUS_STANDBY,
  31. MACHINE_STATUS_ERROR,
  32. MACHINE_STATUS_3DDR,
  33. MACHINE_STATUS_STITCH,
  34. MACHINE_STATUS_CALIBRATION,
  35. MACHINE_STATUS_SERVICE,
  36. MACHINE_STATUS_MAX
  37. };
  38. static const char* SupportSyncMode = "SupportSyncMode"; //同步模式对应关系只存在于模型中,理论上不需要发生器存储或修改,可以不定义相应变量及Get、Set接口
  39. static const char* UNITINFO = "DeviceInfo";//机架状态详细信息
  40. static const char* TUBEANGLE = "MechanicalAngle";//球馆角度
  41. static const char* TUBEHEIGHT = "MechanicalHeight";//机架高度
  42. static const char* POSITIONNUMBER = "PositionNumber";//位置码
  43. static const char* TID = "TID";//TID:DetectorToTableDistance
  44. static const char* SID = "SID";//SID:SourcetoDetectorDistance
  45. static const char* SED = "SED";//ENTRANCE:SourceToEntranceDistance
  46. static const char* SOD = "SOD";//SOD:SourceToPatientDistance
  47. static const char* FID = "FID";//FloorToDetectorDistance
  48. static const char* GRIDSTATE = "GRID";//震动栅
  49. typedef enum _Dios_Mech_GridState
  50. {
  51. Grid_NULL,
  52. Grid_IN,
  53. Grid_OUT,
  54. Grid_MOVING,
  55. Grid_VIBRATE,
  56. Grid_MAX
  57. }MECH_GRIDSTATE;
  58. //乳腺信息
  59. static const char* MAMMO_AE = "AE";//
  60. static const char* MAMMO_THICKNESS = "Thickness";//压迫厚度
  61. static const char* MAMMO_CompPressureDEC = "CompPressureDEC";//
  62. static const char* MAMMO_DEPRESS = "Depress";//自动释放压迫板
  63. static const char* MAMMO_SecANGLE = "MechanicalSecAngle";//机架相对角度
  64. static const char* MAMMO_PRESSVAL = "CompPressure";//压迫压力
  65. static const char* MAMMO_AGD = "AGD";//平均腺体计量
  66. static const char* MAMMO_MAG = "MAG";//放大倍数
  67. static const char* MAMMO_CompressPaddle = "CompressPaddle";//压迫板信息
  68. //遮光器
  69. static const char* FILTER = "Filter";//滤过
  70. static const char* CollimatorSize = "CollimatorSize";//遮光器尺寸
  71. //TOMO
  72. static const char* TomoTID = "MachineryTID";//探测器到患者距离
  73. static const char* TomoSID = "MachinerySID";//球管到探测器的距离
  74. static const char* TomoType = "TomoType";//TOMO类型
  75. static const char* TomoViewId = "ProcedureViewId";
  76. static const char* TomoScanDirection = "MachineryScanDirection";//方向
  77. typedef enum TomoDirection_Type {
  78. TOMODIR_NULL,
  79. TOMODIR_TopToBottom = 1,
  80. TOMODIR_BottomToTop = 2,
  81. TOMODIR_leftToRight = 3,
  82. TOMODIR_RightToLeft = 4,
  83. TOMODIR_MAX
  84. }TOMODIR_TYPE;
  85. static const char* TomoFrameCount = "FrameCount";//总帧数
  86. static const char* TomoFrameRate = "FrameRate";//帧率
  87. static const char* TomoScanAngle = "MachineryScanAngle";//总角度
  88. static const char* TomoRotateAngle = "RotateAngle";
  89. static const char* TomoScanImageNumber = "MachineryProjectionNumber";//总张数
  90. //拼接相应
  91. static const char* STITCHINGSTATE = "STITCHINGSTATE"; //拼接流程状态
  92. typedef enum _Dios_Stitch_State
  93. {
  94. STITCHSTATE_ERR = -1, //拼接错误
  95. STITCHSTATE_INIT, //拼接初始化,此时设置拼接相应参数
  96. STITCHSTATE_STANDBY, //拼接就绪,参数设置成功
  97. STITCHSTATE_START, //拼接开始
  98. STITCHSTATE_NEED_MOVE, //拼接机架需要向指定位置运动
  99. STITCHSTATE_MOVING, //拼接机架正在运动
  100. STITCHSTATE_REACH_INIT, //拼接机架到达初始位置
  101. STITCHSTATE_REACH_NEXT, //拼接机架到达下一个位置
  102. STITCHSTATE_REACH_EXTRA, //拼接机架到达额外位置
  103. STITCHSTATE_READY, //拼接准备完毕,可以曝光
  104. STITCHSTATE_Accept_Image,//接受当前拼接的图像
  105. STITCHSTATE_Reject_Image,//拒绝当前拼接的图像
  106. STITCHSTATE_END, //拼接完成
  107. STITCHSTATE_CANCEL, //拼接退出
  108. STITCHSTATE_RESTART, //重新拼接
  109. STITCHSTATE_MAX //无意义
  110. }STITCH_STATE;
  111. static const char* MECHREADY = "MachineryReady"; //机架Ready
  112. static const char* STITCHHEIGHT = "InitHeight";//初始高度
  113. static const char* STITCHLENGTH = "TotalLength";//拼接长度
  114. static const char* STITCHOVERLAP = "Overlap";//重叠区域
  115. static const char* STITCHTID = "TID";//TID:DetectorToTableDistance
  116. static const char* STITCHSID = "SID";//SID:SourcetoDetectorDistance
  117. static const char* STITCHPID = "PID";//拼接位置码
  118. static const char* STITCHDIRECTION = "Direction";//拼接方向
  119. typedef enum StitchDirection_Type {
  120. STITCHDIR_NULL = 0,
  121. STITCHDIR_TopToBottom = 1,
  122. STITCHDIR_BottomToTop,
  123. STITCHDIR_leftToRight,
  124. STITCHDIR_RightToLeft,
  125. STITCHDIR_MAX
  126. }STITCHDIR_TYPE;
  127. static const char* STITCHTYPE = "StitchType";//拼接类型
  128. typedef enum Stitch_Type {
  129. STITCHTYPE_NULL = -1,
  130. STITCHTYPE_AutomaticTranslation,
  131. STITCHTYPE_AutomaticAngle,
  132. STITCHTYPE_ManualTranslation,
  133. STITCHTYPE_ManualAngle,
  134. STITCHTYPE_MAX
  135. }STITCH_TYPE;
  136. static const char* STITCHSTEPLENGTH = "StitchStepLength";//移动步长
  137. static const char* FPDPOSITION = "FPDPosition";//探测器位置
  138. static const char* TOTALIMAGECOUNT = "StitchImageCount";//拼接总张数
  139. static const char* CURRENTIMAGENUMBER = "StitchCurrentImage";//当前张数
  140. //牛头显示
  141. static const char* KV = "KV"; //阳极电压
  142. static const char* MA = "MA"; //球管电流
  143. static const char* MS = "MS"; //管电流
  144. static const char* MAS = "MAS"; //电流时间积
  145. static const char* FOCUS = "FOCUS"; //灯丝/焦点
  146. typedef enum Focus_Type {
  147. FOCUS_SMALL,
  148. FOCUS_LARGE,
  149. FOCUS_AUTOMATIC
  150. }FOCUS_TYPE;
  151. static const char* WORKSTATION = "WORKSTATION"; //工作位
  152. typedef enum GenWS_Type
  153. {
  154. TABLE = 0,
  155. WALL = 1,
  156. CONVENTIONAL = 2,
  157. MOBILE = 3,
  158. FREE_TABLE = 3,
  159. TOMO = 4,
  160. CONVENTIONAL_TABLE = 5,
  161. CONVENTIONAL_WALL = 6,
  162. FREE_WALL = 7,
  163. }GENWS_TYPE;
  164. static const char* TECHMODE = "TECHMODE"; //技术模式
  165. typedef enum Techmode_Type {
  166. TECHMODE_NOAEC_3P,
  167. TECHMODE_NOAEC_2P,
  168. TECHMODE_AEC_3P,
  169. TECHMODE_AEC_2P,
  170. TECHMODE_AEC_1P,
  171. TECHMODE_AEC_ReduceMA,
  172. TECHMODE_NOAEC_MAS_MA,
  173. TECHMODE_AEC_MAS_MA
  174. }TECHMODE_TYPE;
  175. typedef enum Techmode_V2Type {
  176. ET_NONE = -1,
  177. ET_TIME = 0,
  178. ET_MAS = 1,
  179. ET_AEC = 2,
  180. ET_AEC2P = 3,
  181. ET_AEC1P = 4,
  182. ET_AECreduceMA = 5
  183. }TECHMODE_V2TYPE;
  184. static const char* AECFIELD = "AECFIELD"; //AEC区域
  185. static const char* AECFILM = "AECFILM"; //AEC底片
  186. static const char* AECDENSITY = "AECDENSITY"; //AEC浓度
  187. }
  188. namespace ActionKey
  189. {
  190. //病人信息相关
  191. static const char* SetStudyInfo = "SetStudyInfo";
  192. static const char* SetViewInfo = "SetViewInfo";
  193. static const char* SetPatientInfo = "SetPatientInfo";
  194. //机架机械控制
  195. static const char* Reset = "RESET";
  196. static const char* SetTechParamsInfo = "SetTechParamsInfo";
  197. static const char* SetPositionNumber = "SetPositionNumber";
  198. static const char* SetSID = "SetSID";
  199. static const char* SetSOD = "SetSOD";
  200. static const char* MoveToHome = "MoveToHome";
  201. static const char* MoveMech = "MoveMech";
  202. static const char* StopMech = "StopMech";
  203. static const char* SetGrid = "SetGrid";
  204. static const char* SetAutoTracking = "SetAutoTracking";
  205. static const char* ActiveSyncMode = "ActiveSyncMode";//取代WorkStation设置同步模式,由上层调用设置
  206. //乳腺方法
  207. static const char* SetCollimatorSize = "SetCollimatorSize";
  208. static const char* SetCollimatorFilter = "SetCollimatorFilter";
  209. static const char* SetCollimatorSID = "SetCollimatorSID";
  210. static const char* SetCollimatorAngle = "SetCollimatorAngle";
  211. static const char* SetCollimatorLight = "SetCollimatorLight";
  212. //Tomo相应
  213. static const char* SetTomoEnable = "SetTomoEnable";
  214. static const char* SetTomoExpMode = "SetExpMode";
  215. static const char* SetTomoTechnical = "SetMachinicalTechnical";
  216. static const char* GetTomoResults = "GetTomoResults";
  217. //拼接相应
  218. static const char* BeginStitching = "BeginStitching";
  219. static const char* InitStitching = "InitStitching";
  220. static const char* EndStitching = "EndStitching";
  221. static const char* SetupStitching = "SetupStitching";
  222. static const char* AcceptStitchingImage = "AcceptStitchingImage";
  223. static const char* RejectStitchingImage = "RejectStitchingImage";
  224. static const char* CancelStitching = "CancelStitching";
  225. static const char* CompleteStitching = "CompleteStitching";
  226. static const char* NewExtraView = "NewExtraView";
  227. static const char* RepeatStitching = "RepeatStitching";
  228. static const char* SetAutoPosiitonNo = "SetAutoPosiitonNo";
  229. //遮光器
  230. static const char* SetCollimator = "SetCollimator";
  231. static const char* SetFilter = "SetFilter";
  232. //牛头显示
  233. static const char* SetWS = "SetWS";
  234. static const char* SetKV = "SetKV";
  235. static const char* SetMA = "SetMA";
  236. static const char* SetMS = "SetMS";
  237. static const char* SetMAS = "SetMAS";
  238. static const char* SetFocus = "SetFocus";
  239. static const char* SetTechMode = "SetTechMode";
  240. static const char* SetAECField = "SetAECField";
  241. static const char* SetDensity = "SetDensity";
  242. static const char* SetExpEnable = "SetExpEnable";
  243. static const char* SetBodySize = "SetBodySize";
  244. }
  245. //-----------------------------------------------------------------------------
  246. // _tSyncModeArgs
  247. //-----------------------------------------------------------------------------
  248. struct _tSyncModeArgs
  249. {
  250. string strWS;
  251. string strSyncMode;
  252. string strSyncValue;
  253. };
  254. namespace AttrKey::SYNC_TYPE
  255. {
  256. static const char* SYNC_AUTO = "AUTO"; //自动运动模式
  257. static const char* SYNC_MANUAL = "MANUAL"; //手动运动模式
  258. };
  259. //##################################################################################################
  260. //定义具体设备属性
  261. #define UNIT_DATA_INT(NAME, KEY) \
  262. class NAME :public IntMould\
  263. {\
  264. using super = IntMould;\
  265. public:\
  266. NAME(int initialvalue, int lower, int upper, int accuracy)\
  267. :super(KEY, initialvalue, lower, upper, accuracy)\
  268. {}\
  269. ~NAME() {}\
  270. };\
  271. #define UNIT_DATA_FLOAT(NAME, KEY) \
  272. class NAME :public FloatMould\
  273. {\
  274. using super = FloatMould;\
  275. public:\
  276. NAME(float initialvalue, float lower, float upper, float accuracy)\
  277. :super(KEY, initialvalue, lower, upper, accuracy)\
  278. {}\
  279. ~NAME() {}\
  280. };\
  281. #define UNIT_DATA_STR(NAME, KEY) \
  282. class NAME :public StringMould\
  283. {\
  284. using super = StringMould;\
  285. public:\
  286. NAME(std::string initialvalue)\
  287. :super(KEY, initialvalue)\
  288. {}\
  289. ~NAME() {}\
  290. };\
  291. UNIT_DATA_INT(PATIENTSIZEMould, AttrKey::PATIENTSIZE);
  292. UNIT_DATA_INT(VIEWIDMould, AttrKey::VIEWID);
  293. UNIT_DATA_INT(MechStateMould, AttrKey::MACHSTATE);
  294. UNIT_DATA_INT(POSITIONNUMBERMould, AttrKey::POSITIONNUMBER);
  295. UNIT_DATA_INT(TubeAngleMould, AttrKey::TUBEANGLE);
  296. UNIT_DATA_INT(TubeHeightMould, AttrKey::TUBEHEIGHT);
  297. UNIT_DATA_FLOAT(TIDMould, AttrKey::TID);
  298. UNIT_DATA_FLOAT(SIDMould, AttrKey::SID);
  299. UNIT_DATA_FLOAT(SEDMould, AttrKey::SED);
  300. UNIT_DATA_FLOAT(SODMould, AttrKey::SOD);
  301. UNIT_DATA_FLOAT(FIDMould, AttrKey::FID);
  302. UNIT_DATA_INT(GRIDMould, AttrKey::GRIDSTATE);
  303. UNIT_DATA_INT(FILTERMould, AttrKey::FILTER);
  304. UNIT_DATA_INT(MAMMOAEMould, AttrKey::MAMMO_AE);
  305. UNIT_DATA_INT(MAMMOTHICKNESSMould, AttrKey::MAMMO_THICKNESS);
  306. UNIT_DATA_INT(MAMMOPRESSDECMould, AttrKey::MAMMO_CompPressureDEC);
  307. UNIT_DATA_INT(MAMMODEPRESSMould, AttrKey::MAMMO_DEPRESS);
  308. UNIT_DATA_INT(MAMMOPRESSVALMould, AttrKey::MAMMO_PRESSVAL);
  309. UNIT_DATA_INT(MAMMOAGDMould, AttrKey::MAMMO_AGD);
  310. UNIT_DATA_INT(MAMMOMAGMould, AttrKey::MAMMO_MAG);
  311. UNIT_DATA_INT(TOMOTypeMould, AttrKey::TomoType);
  312. UNIT_DATA_INT(TOMOScanDirectionMould, AttrKey::TomoScanDirection);
  313. UNIT_DATA_INT(TOMOFrameCountMould, AttrKey::TomoFrameCount);
  314. UNIT_DATA_INT(TOMOFrameRateMould, AttrKey::TomoFrameRate);
  315. UNIT_DATA_INT(TOMOScanAngleMould, AttrKey::TomoScanAngle);
  316. UNIT_DATA_INT(TOMOScanImageNumberMould, AttrKey::TomoScanImageNumber);
  317. UNIT_DATA_INT(StitchingStateMould, AttrKey::STITCHINGSTATE);
  318. UNIT_DATA_FLOAT(StitchHeightMould, AttrKey::STITCHHEIGHT);
  319. UNIT_DATA_FLOAT(StitchLengthMould, AttrKey::STITCHLENGTH);
  320. UNIT_DATA_FLOAT(StitchOverLapMould, AttrKey::STITCHOVERLAP);
  321. UNIT_DATA_FLOAT(StitchPIDMould, AttrKey::STITCHPID);
  322. UNIT_DATA_INT(StitchDirectionMould, AttrKey::STITCHDIRECTION);
  323. UNIT_DATA_INT(StitchTypeMould, AttrKey::STITCHTYPE);
  324. UNIT_DATA_FLOAT(StitchStepLengthMould, AttrKey::STITCHSTEPLENGTH);
  325. UNIT_DATA_INT(FPDPositionMould, AttrKey::FPDPOSITION);
  326. UNIT_DATA_INT(TotalImageCountMould, AttrKey::TOTALIMAGECOUNT);
  327. UNIT_DATA_INT(CurrentImageNumberMould, AttrKey::CURRENTIMAGENUMBER);
  328. UNIT_DATA_INT(KVMould, AttrKey::KV);
  329. UNIT_DATA_FLOAT(MAMould, AttrKey::MA);
  330. UNIT_DATA_INT(MSMould, AttrKey::MS);
  331. UNIT_DATA_FLOAT(MASMould, AttrKey::MAS);
  332. UNIT_DATA_INT(FOCUSMould, AttrKey::FOCUS);
  333. UNIT_DATA_INT(WORKSTATIONMould, AttrKey::WORKSTATION);
  334. UNIT_DATA_INT(TECHMODEMould, AttrKey::TECHMODE);
  335. UNIT_DATA_INT(AECFIELDMould, AttrKey::AECFIELD);
  336. UNIT_DATA_INT(AECFILMMould, AttrKey::AECFILM);
  337. UNIT_DATA_INT(AECDENSITYMould, AttrKey::AECDENSITY);
  338. //-----------------------------------------------------------------------------
  339. // ConfigInfo
  340. //-----------------------------------------------------------------------------
  341. namespace ConfKey
  342. {
  343. static const char* DiosType = "Type";
  344. static const char* DiosModel = "Model";
  345. static const char* DiosConfig = "DeviceConfig";
  346. static const char* DiosAttribute = "Attribute";
  347. static const char* DiosDescription = "Description";
  348. static const char* DiosSCFType = "SCFType";
  349. static const char* DiosSCFTCPIP = "TCPIP";
  350. static const char* DiosSCFCOM = "COM";
  351. static const char* DiosSCFIP = "ip";
  352. static const char* DiosSCFPort = "port";
  353. static const char* DiosSCFBaudrate = "baudrate";
  354. static const char* DiosSCFBytesize = "bytesize";
  355. static const char* DiosSCFParity = "parity";
  356. static const char* DiosSCFStopbits = "stopbits";
  357. static const char* DiosIsConnect = "IsConnect";
  358. //20220412 新增 <ConfigToolInfo> 以及其内部属性,主要用于webconfig
  359. static const char* DiosConfigToolInfo = "ConfigToolInfo";
  360. static const char* DiosAttributeInfo = "AttributeInfo";
  361. static const char* DiosAttributeKey = "AttributeKey";
  362. static const char* DiosAttributeDescripition = "AttributeDescripition";
  363. static const char* DiosAccess = "Access";
  364. //static const char* DiosType = "Type";
  365. static const char* DiosRangeMin = "RangeMin";
  366. static const char* DiosRangeMax = "RangeMax";
  367. static const char* DiosListNum = "ListNum";
  368. static const char* DiosListInfo = "ListInfo";
  369. static const char* DiosList = "List";
  370. static const char* DiosRequired = "Required";
  371. static const char* DiosDefaultValue = "DefaultValue";
  372. static const char* DiosInnerKey = "InnerKey";
  373. static const char* DiosPathID = "PathID";
  374. }
  375. }
  376. }