DIOS.Dev.Machinery.Model.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. #pragma once
  2. #include <string>
  3. #include "ResDataObject.h"
  4. #include "DriverConfigInfo.hpp"
  5. #include "DIOS.Dev.IODevice.Detail.hpp"
  6. #include "DIOS.Dev.IODevice.hpp"
  7. using namespace DIOS;
  8. using namespace DIOS::Dev;
  9. namespace nDev = DIOS::Dev;
  10. namespace nsDetail = DIOS::Dev::Detail;
  11. //#ifndef DIOSDEVMACHINERYMODEL_EXPORTS
  12. //#ifdef _WIN64
  13. //#ifdef _DEBUG
  14. //#pragma comment(lib, "DIOS.Dev.Machinery.ModelX64D.lib")
  15. //#else
  16. //#pragma comment(lib, "DIOS.Dev.Machinery.ModelX64.lib")
  17. //#endif
  18. //#else
  19. //#ifdef _DEBUG
  20. //#pragma comment(lib, "DIOS.Dev.Machinery.ModelD.lib")
  21. //#else
  22. //#pragma comment(lib, "DIOS.Dev.Machinery.Model.lib")
  23. //#endif
  24. //#endif
  25. //#endif
  26. #ifdef DIOSDEVMACHINERYMODEL_EXPORTS
  27. #define _DIOSDEVMACHINERYMODEL_API __declspec(dllexport)
  28. #else
  29. #define _DIOSDEVMACHINERYMODEL_API __declspec(dllimport)
  30. #endif
  31. namespace DIOS::Dev::Detail::MachineryECOM
  32. {
  33. static const char* MachineryDriverGUID = "{515D79B6-9243-4D9A-8F01-88183B9BCC07}";
  34. static const char* MachineryUnitGUID = "{E4FF71F5-ED97-41FE-969F-BAE349D54FC2}";
  35. enum EXAM_MODE
  36. {
  37. EXM_ERROR = -1,
  38. EXM_SINGLE = 0,
  39. EXM_DUALENERGY,
  40. EXM_STITCH,
  41. EXM_AEC,
  42. EXM_HDR,
  43. EXM_GAIN,
  44. EXM_OFFSET,
  45. EXM_TOMO,
  46. EXM_MAMO_MANUAL,
  47. EXM_MAMO_SEMIAUTO,
  48. EXM_MAMO_AUTOMATIC,
  49. EXM_MAMO_AUTOFILTER,
  50. EXM_MAMO_TOMOSEMIAUTO,
  51. EXM_MAMO_TOMOAUTOMATIC,
  52. EXM_MODE_MAX
  53. };
  54. const std::string EXAMMODE_SINGLE = ("Single");
  55. const std::string EXAMMODE_STITCH = ("Stitch");
  56. const std::string EXAMMODE_TOMO = ("TOMO");
  57. namespace AttrKey
  58. {
  59. static const char* MachineryReady = "MachineryReady";
  60. static const char* MachineryAlignStatus = "MachineryAlignStatus";
  61. static const char* MachineryCurrentExamMode = "MachineryCurrentExamMode";
  62. static const char* MachineryProjectionNumber = "MachineryProjectionNumber";
  63. static const char* MachineryTID = "MachineryTID";
  64. static const char* MachinerySID = "MachinerySID";
  65. static const char* MachineryScanAngle = "MachineryScanAngle";
  66. static const char* MachineryScanDirection = "MachineryScanDirection";
  67. static const char* MachineryScanGeometry = "MachineryScanGeometry";
  68. static const char* MachineryHandSwitchState = "HandSwitchState";
  69. static const char* MachineryTomoMotionLimitation = "MachineryTomoMotionLimitation";
  70. }
  71. namespace ActionKey
  72. {
  73. static const char* MachineryFramePrep = "MachineryFramePrep";
  74. static const char* MachineryFrameReady = "MachineryFrameReady";
  75. static const char* MachineryFrameAcq = "MachineryFrameAcq";
  76. static const char* MachineryFrameStart = "MachineryFrameStart";
  77. static const char* MachineryFrameIn = "MachineryFrameIn";
  78. static const char* MachineryFrameEnd = "MachineryFrameEnd";
  79. static const char* MachineryFramePost = "MachineryFramePost";
  80. static const char* MachineryFrameError = "MachineryFrameError";
  81. static const char* MachinerySeqError = "MachinerySeqError";
  82. static const char* MachinerySeqEnd = "MachinerySeqEnd";
  83. static const char* MachinerySetExpMode = "MachinerySetExpMode";
  84. static const char* MachinerySetWorkstation = "MachinerySetWorkstation";
  85. static const char* MachinerySetTechParamsInfo = "MachinerySetTechParamsInfo";
  86. static const char* MachinerySetFrameRate = "MachinerySetFrameRate";
  87. static const char* MachineryReset = "MachineryRESET";
  88. static const char* MachineryGetReadyState = "MachineryGetReadyState";
  89. static const char* MachineryEnterCalibration = "MachineryEnterCalibration";
  90. static const char* MachineryExitCalibration = "MachineryExitCalibration";
  91. static const char* MachineryCalMotionTubeLineV = "MachineryCalMotionTubeLineV";
  92. static const char* MachineryCalMotionTubeAngleRotate = "MachineryCalMotionTubeAngleRotate";
  93. static const char* MachineryCalMotionTubeAngleFindeAxisZ = "MachineryCalMotionTubeAngleFindeAxisZ";
  94. static const char* MachineryCalGetADofTubeLineV = "MachineryCalGetADofTubeLineV";
  95. static const char* MachineryCalGetADofDetector = "MachineryCalGetADofDetector";
  96. static const char* MachineryCalGetADofTubeAngle = "MachineryCalGetADofTubeAngle";
  97. static const char* MachineryCalGetEncoderofTubeLineV = "MachineryCalGetEncoderofTubeLineV";
  98. static const char* MachineryCalGetEncoderOfTubeAngle = "MachineryCalGetEncoderOfTubeAngle";
  99. static const char* MachineryCalSaveParamsofTubeLiveV = "MachineryCalSaveParamsofTubeLiveV";
  100. static const char* MachineryCalSaveParamsofTubeAngle = "MachineryCalSaveParamsofTubeAngle";
  101. static const char* MachineryCalSaveParamsofDetector = "MachineryCalSaveParamsofDetector";
  102. static const char* MachineryCalSaveEncoderCorrectonofTubeLiveV = "MachineryCalSaveEncoderCorrectonofTubeLiveV";
  103. static const char* MachineryCalSetADLimitationofEncoder = "MachineryCalSetADLimitationofEncoder";
  104. static const char* MachinerySetSvoStatus = "MachinerySetSvoStatus";
  105. static const char* MachineryAutoADCalibration = "MachineryAutoADCalibration";
  106. static const char* MachineryCenterAdjust = "MachineryCenterAdjust";
  107. static const char* MachineryQueryAlignStatus = "MachineryQueryAlignStatus";
  108. static const char* MachineryGetSEQResource = "MachineryGetSEQResource";
  109. static const char* MachineryEnterMechnicalSelfTest = "MachineryEnterMechnicalSelfTest";
  110. static const char* MachineryExitMechnicalSelfTest = "MachineryExitMechnicalSelfTest";
  111. static const char* MachineryStartMechnicalSelfTest = "MachineryStartMechnicalSelfTest";
  112. static const char* MachineryParkingTo = "MachineryParkingTo";
  113. static const char* MachineryActiveTubeAngleZAxisClear = "MachineryActiveTubeAngleZAxisClear";
  114. static const char* MachineryCancelTubeAngleZAxisClear = "MachineryCancelTubeAngleZAxisClear";
  115. static const char* MachineryActiveTubeHeightZAxisClear = "MachineryActiveTubeHeightZAxisClear";
  116. static const char* MachineryCancelTubeHeightZAxisClear = "MachineryCancelTubeHeightZAxisClear";
  117. static const char* MachineryTubeAngleRotateToZAxis = "MachineryTubeAngleRotateToZAxis";
  118. static const char* MachineryTubeHeightMoveToZAxis = "MachineryTubeHeightMoveToZAxis";
  119. static const char* MachineryForceStopAllMotion = "MachineryForceStopAllMotion";
  120. static const char* MachineryGetTomoResult = "MachineryGetTomoResult";
  121. static const char* MachineryRecalculateTomoMotionParam = "MachineryRecalculateTomoMotionParam";
  122. static const char* MachineryCalMotionTubeLineH = "MachineryCalMotionTubeLineH";
  123. static const char* MachineryCalGetADofTubeLineH = "MachineryCalGetADofTubeLineH";
  124. static const char* MachineryCalGetEncoderofTubeLineH = "MachineryCalGetEncoderofTubeLineH";
  125. static const char* MachineryCalGetADofHorizontalDetector = "MachineryCalGetADofHorizontalDetector";
  126. static const char* MachineryCalSaveParamsofTubeLiveH = "MachineryCalSaveParamsofTubeLiveH";
  127. static const char* MachineryCalSaveParamsofDetectorHorizontal = "MachineryCalSaveParamsofDetectorHorizontal";
  128. static const char* MachinerySetSvoStatusTubeH = "MachinerySetSvoStatusTubeH";
  129. static const char* MachineryCalSaveResetLowPosition = "MachineryCalSaveResetLowPosition";
  130. static const char* MachineryCalSaveResetEcoderZeroPosition = "MachineryCalSaveResetEcoderZeroPosition";
  131. static const char* MachineryCalGetResetPosParam = "MachineryCalGetResetPosParam";
  132. }
  133. class MachineryDriverModel : public DIOS::Dev::IODriver
  134. {
  135. public:
  136. MachineryDriverModel();
  137. ~MachineryDriverModel();
  138. virtual std::string GetGUID() const;
  139. protected:
  140. std::list <ConfigInfo> m_ConfigInfo;
  141. };
  142. class MachineryECOMDriver;
  143. template<class MachineryDriverModel> class IODriverWithSCF;
  144. class CollimatorUnit: public IOLogicUnit
  145. {
  146. public:
  147. CollimatorUnit();
  148. CollimatorUnit(MachineryECOMDriver* pMachineryDriver);
  149. virtual ~CollimatorUnit();
  150. public:
  151. virtual RET_STATUS SetCollimatorSize(WORD xsize, WORD ysize) { return RET_STATUS::RET_SUCCEED; };
  152. virtual RET_STATUS SetCollimatorSID(WORD sid) { return RET_STATUS::RET_SUCCEED; };
  153. virtual RET_STATUS SetCollimatorFilter(WORD pParams) { return RET_STATUS::RET_SUCCEED; };
  154. virtual RET_STATUS SetCollimatorAngle(WORD pParams) { return RET_STATUS::RET_SUCCEED; };
  155. protected:
  156. MachineryECOMDriver* m_pMachineryDriver;
  157. };
  158. enum HANDSWITCH_STATUS
  159. {
  160. HSW_FIRST_DOWN,
  161. HSW_FIRST_UP,
  162. HSW_SECOND_DOWN,
  163. HSW_SECOND_UP,
  164. };
  165. class ExposureSwitchUnit : public IOLogicUnit
  166. {
  167. public:
  168. ExposureSwitchUnit();
  169. ExposureSwitchUnit(MachineryECOMDriver* pMachineryDriver);
  170. virtual ~ExposureSwitchUnit();
  171. public:
  172. virtual nDev::RET_STATUS HSWNotify_FirstLevelUp() { return RET_STATUS::RET_SUCCEED; };
  173. virtual nDev::RET_STATUS HSWNotify_FirstLevelDown() { return RET_STATUS::RET_SUCCEED; };
  174. virtual nDev::RET_STATUS HSWNotify_SecondLevelUp() { return RET_STATUS::RET_SUCCEED; };
  175. virtual nDev::RET_STATUS HSWNotify_SecondLevleDown() { return RET_STATUS::RET_SUCCEED; };
  176. public:
  177. ResDataObject GetMachineryHandSwtichState();
  178. protected:
  179. BaseJsonDataObject<bool>* m_bOneHSWStatus;//Sync status
  180. BaseJsonDataObject<bool>* m_bTwoHSWStatus;//Sync status
  181. MachineryECOMDriver* m_pMachineryDriver;
  182. ResDataObject m_MachineryHandSwtichState;
  183. };
  184. class MotionControlUnit : public IOLogicUnit
  185. {
  186. public:
  187. MotionControlUnit();
  188. MotionControlUnit(MachineryECOMDriver* pMachineryDriver);
  189. virtual ~MotionControlUnit();
  190. public:
  191. virtual nDev::RET_STATUS FramePrep() { return RET_STATUS::RET_SUCCEED; };
  192. virtual nDev::RET_STATUS FrameReady() { return RET_STATUS::RET_SUCCEED; };
  193. virtual nDev::RET_STATUS FrameStart() { return RET_STATUS::RET_SUCCEED; };
  194. virtual nDev::RET_STATUS FrameAcq() { return RET_STATUS::RET_SUCCEED; };
  195. virtual nDev::RET_STATUS FrameIn() { return RET_STATUS::RET_SUCCEED; };
  196. virtual nDev::RET_STATUS FrameEnd() { return RET_STATUS::RET_SUCCEED; };
  197. virtual nDev::RET_STATUS FramePost() { return RET_STATUS::RET_SUCCEED; };
  198. virtual nDev::RET_STATUS FrameError() { return RET_STATUS::RET_SUCCEED; };
  199. virtual nDev::RET_STATUS SeqError() { return RET_STATUS::RET_SUCCEED; };
  200. virtual nDev::RET_STATUS SeqEnd() { return RET_STATUS::RET_SUCCEED; };
  201. virtual nDev::RET_STATUS SetWorkStation(const char* pWorkStation) { return RET_STATUS::RET_SUCCEED; };
  202. virtual nDev::RET_STATUS SetExpMode(const char* pExpMode) { return RET_STATUS::RET_SUCCEED; };
  203. virtual nDev::RET_STATUS Reset() { return RET_STATUS::RET_SUCCEED; };
  204. virtual nDev::RET_STATUS StartMove() { return RET_STATUS::RET_SUCCEED; };
  205. virtual nDev::RET_STATUS StopMove() { return RET_STATUS::RET_SUCCEED; };
  206. virtual nDev::RET_STATUS SetFrameRate(FLOAT frameRate) { return RET_STATUS::RET_SUCCEED; };
  207. virtual nDev::RET_STATUS SetTechParamsInfo(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  208. virtual nDev::RET_STATUS CenterAdjust(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  209. virtual nDev::RET_STATUS QueryAlignStatus(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  210. virtual bool GetMachineryReadyState() { return true; };
  211. virtual int GetMachineryTomoMotionLimitationState() { return 0; };
  212. virtual nDev::RET_STATUS NotifyMachineryReadyState(bool bMachineryReady) { return RET_STATUS::RET_SUCCEED; };
  213. virtual nDev::RET_STATUS NotifyMachineryAlignStatus(bool bSystemAlign) { return RET_STATUS::RET_SUCCEED; };
  214. virtual nDev::RET_STATUS NotifyMachineryTechParams(float tid, float sid, int project, float angle, int direction, std::string geometry) { return RET_STATUS::RET_SUCCEED; };
  215. virtual nDev::RET_STATUS EnterCalibration() { return RET_STATUS::RET_SUCCEED; };
  216. virtual nDev::RET_STATUS CalMotionTubeLineV(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  217. virtual nDev::RET_STATUS CalMotionTubeAngleRotate(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  218. virtual nDev::RET_STATUS CalMotionTubeAngleFindeAxisZ(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  219. virtual nDev::RET_STATUS CalGetADofTubeLineV(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  220. virtual nDev::RET_STATUS CalGetADofDetector(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  221. virtual nDev::RET_STATUS CalGetADofTubeAngle(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  222. virtual nDev::RET_STATUS CalSaveParamsofTubeLiveV(ResDataObject &ParamIn, ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  223. virtual nDev::RET_STATUS CalSaveParamsofTubeAngle(ResDataObject &ParamIn, ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  224. virtual nDev::RET_STATUS CalSaveParamsofDetector(ResDataObject &ParamIn, ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  225. virtual nDev::RET_STATUS CalGetEncoderofTubeLineV(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  226. virtual nDev::RET_STATUS CalGetEncoderofTubeAngle(ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  227. virtual nDev::RET_STATUS CalSaveEncoderCorrectonofTubeLiveV(ResDataObject &ParamIn, ResDataObject &ParamOut) { return RET_STATUS::RET_SUCCEED; };
  228. virtual nDev::RET_STATUS CalSetADLimitationofEncoder(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  229. virtual nDev::RET_STATUS SetSvoStatus(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  230. virtual nDev::RET_STATUS AutoADCalibration(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  231. virtual nDev::RET_STATUS ExitCalibration() { return RET_STATUS::RET_SUCCEED; };
  232. virtual nDev::RET_STATUS EnterMechnicalSelfTest() { return RET_STATUS::RET_SUCCEED; };
  233. virtual nDev::RET_STATUS ExitMechnicalSelfTest() { return RET_STATUS::RET_SUCCEED; };
  234. virtual nDev::RET_STATUS StartSelfTest(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  235. virtual nDev::RET_STATUS ParkingTo(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  236. virtual nDev::RET_STATUS ActiveTubeAngleZAxisClear() { return RET_STATUS::RET_SUCCEED; };
  237. virtual nDev::RET_STATUS CancelTubeAngleZAxisClear() { return RET_STATUS::RET_SUCCEED; };
  238. virtual nDev::RET_STATUS ActiveTubeHeightZAxisClear() { return RET_STATUS::RET_SUCCEED; };
  239. virtual nDev::RET_STATUS CancelTubeHeightZAxisClear() { return RET_STATUS::RET_SUCCEED; };
  240. virtual nDev::RET_STATUS TubeAngleRotateToZAxis() { return RET_STATUS::RET_SUCCEED; };
  241. virtual nDev::RET_STATUS TubeHeightMoveToZAxis() { return RET_STATUS::RET_SUCCEED; };
  242. virtual nDev::RET_STATUS ForceStopAllMotion() { return RET_STATUS::RET_SUCCEED; };
  243. virtual nDev::RET_STATUS MotionTest_StartTubeLineVMotion2Target(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  244. virtual nDev::RET_STATUS MotionTest_StopLineVMotion(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  245. virtual nDev::RET_STATUS MotionTest_TubeAngleRotate2Target(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  246. virtual nDev::RET_STATUS MotionTest_StopRotation(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  247. virtual nDev::RET_STATUS MotionTest_BindRotationEncoder(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  248. virtual nDev::RET_STATUS MotionTest_UnbindRotationEncoder(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  249. virtual nDev::RET_STATUS MotionTest_SystemInitial(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  250. virtual nDev::RET_STATUS MotionTest_TubeCenterAlign(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  251. virtual nDev::RET_STATUS MotionTest_Move2ParkingPosition(ResDataObject &ParamIn) { return RET_STATUS::RET_SUCCEED; };
  252. virtual nDev::RET_STATUS GetTomoResult(ResDataObject& resultAngle, ResDataObject& resultHeight) { return RET_STATUS::RET_SUCCEED; };
  253. virtual nDev::RET_STATUS RecalculateTomoMotionParam() { return RET_STATUS::RET_SUCCEED; };
  254. virtual nDev::RET_STATUS CalMotionTubeLineH(ResDataObject& ParamIn) { return RET_STATUS::RET_SUCCEED; };
  255. virtual nDev::RET_STATUS CalGetADofTubeLineH(ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; };
  256. virtual nDev::RET_STATUS CalGetEncoderofTubeLineH(ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; };
  257. virtual nDev::RET_STATUS CalGetADofHorizontalDetector(ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; };
  258. virtual nDev::RET_STATUS CalSaveParamsofTubeLiveH(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; };
  259. virtual nDev::RET_STATUS CalSaveParamsofDetectorHorizontal(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; };
  260. virtual nDev::RET_STATUS CalSaveResetLowPosition(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; };
  261. virtual nDev::RET_STATUS CalSaveResetEcoderZeroPosition(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; };
  262. virtual nDev::RET_STATUS CalGetResetPosParam(ResDataObject& ParamIn, ResDataObject& ParamOut) { return RET_STATUS::RET_SUCCEED; };
  263. public:
  264. ResDataObject GetMachineryReadyStatus();
  265. ResDataObject GetMachineryAlignStatus();
  266. ResDataObject GetMachineryProjectionNumber();
  267. ResDataObject GetMachineryTID();
  268. ResDataObject GetMachinerySID();
  269. ResDataObject GetMachineryScanAngle();
  270. ResDataObject GetMachineryScanDirection();
  271. ResDataObject GetMachineryScanGeometry();
  272. ResDataObject GetMachineryTomoMotionLimitationStatus();
  273. protected:
  274. MachineryECOMDriver* m_pMachineryDriver;
  275. ResDataObject m_ExamList;
  276. ResDataObject m_MachineryReady;
  277. ResDataObject m_MachineryAlignStatus;
  278. ResDataObject m_MachineryProjectionNumber;
  279. ResDataObject m_MachineryTID;
  280. ResDataObject m_MachinerySID;
  281. ResDataObject m_MachineryScanAngle;
  282. ResDataObject m_MachineryScanDirection;
  283. ResDataObject m_MachineryScanGeometry;
  284. ResDataObject m_MachineryTomoMotionLimitation;
  285. };
  286. class MachineryModel
  287. {
  288. public:
  289. MachineryModel();
  290. ~MachineryModel();
  291. public:
  292. void SetCollimatorUnit(CollimatorUnit* pCollimatorUnit);
  293. void SetExposureSwitchUnit(ExposureSwitchUnit* pExposureSwitchUnit);
  294. void SetMotionControlUnit(MotionControlUnit* pMotionControlUnit);
  295. protected:
  296. virtual void Register(Dispatch* Dispatch);
  297. public:
  298. //nDev::RET_STATUS JSMachinerySelectExamMode(std::string in, std::string& out);
  299. //nDev::RET_STATUS JSMachinerySetExamInfo(std::string in, std::string& out);
  300. nDev::RET_STATUS JSMachinerySetExpMode(std::string in, std::string& out);
  301. nDev::RET_STATUS JSMachinerySetWorkstation(std::string in, std::string& out);
  302. nDev::RET_STATUS JSMachineryFramePrep(std::string in, std::string& out);
  303. nDev::RET_STATUS JSMachineryFrameReady(std::string in, std::string& out);
  304. nDev::RET_STATUS JSMachineryFrameAcq(std::string in, std::string& out);
  305. nDev::RET_STATUS JSMachineryFrameStart(std::string in, std::string& out);
  306. nDev::RET_STATUS JSMachineryFrameIn(std::string in, std::string& out);
  307. nDev::RET_STATUS JSMachineryFrameEnd(std::string in, std::string& out);
  308. nDev::RET_STATUS JSMachineryFramePost(std::string in, std::string& out);
  309. nDev::RET_STATUS JSMachineryFrameError(std::string in, std::string& out);
  310. nDev::RET_STATUS JSMachinerySeqError(std::string in, std::string& out);
  311. nDev::RET_STATUS JSMachinerySeqEnd(std::string in, std::string& out);
  312. nDev::RET_STATUS JSMachinerySetTechParamsInfo(std::string in, std::string& out);
  313. nDev::RET_STATUS JSMachinerySetFrameRate(std::string in, std::string& out);
  314. nDev::RET_STATUS JSMachineryReset(std::string in, std::string& out);
  315. nDev::RET_STATUS JSMachineryGetReadyState(std::string in, std::string& out);
  316. nDev::RET_STATUS JSMachineryEnterCalibration(std::string in, std::string& out);
  317. nDev::RET_STATUS JSMachineryExitCalibration(std::string in, std::string& out);
  318. nDev::RET_STATUS JSMachineryCalMotionTubeLineV(std::string in, std::string& out);
  319. nDev::RET_STATUS JSMachineryCalMotionTubeAngleRotate(std::string in, std::string& out);
  320. nDev::RET_STATUS JSMachineryCalMotionTubeAngleFindeAxisZ(std::string in, std::string& out);
  321. nDev::RET_STATUS JSMachineryCalGetADofTubeLineV(std::string in, std::string& out);
  322. nDev::RET_STATUS JSMachineryCalGetADofDetector(std::string in, std::string& out);
  323. nDev::RET_STATUS JSMachineryCalGetADofTubeAngle(std::string in, std::string& out);
  324. nDev::RET_STATUS JSMachineryCalGetEncoderofTubeLineV(std::string in, std::string& out);
  325. nDev::RET_STATUS JSMachineryCalGetEncoderOfTubeAngle(std::string in, std::string& out);
  326. nDev::RET_STATUS JSMachineryCalSaveParamsofTubeLiveV(std::string in, std::string& out);
  327. nDev::RET_STATUS JSMachineryCalSaveParamsofTubeAngle(std::string in, std::string& out);
  328. nDev::RET_STATUS JSMachineryCalSaveParamsofDetector(std::string in, std::string& out);
  329. nDev::RET_STATUS JSMachineryCalSaveEncoderCorrectonofTubeLiveV(std::string in, std::string& out);
  330. nDev::RET_STATUS JSMachineryCalSetADLimitationofEncoder(std::string in, std::string& out);
  331. nDev::RET_STATUS JSMachinerySetSvoStatus(std::string in, std::string& out);
  332. nDev::RET_STATUS JSMachineryAutoADCalibration(std::string in, std::string& out);
  333. nDev::RET_STATUS JSMachineryCenterAdjust(std::string in, std::string& out);
  334. nDev::RET_STATUS JSMachineryQueryAlignStatus(std::string in, std::string& out);
  335. nDev::RET_STATUS JSMachineryGetSEQResource(std::string in, std::string& out);
  336. nDev::RET_STATUS JSMachineryEnterMechnicalSelfTest(std::string in, std::string& out);
  337. nDev::RET_STATUS JSMachineryExitMechnicalSelfTest(std::string in, std::string& out);
  338. nDev::RET_STATUS JSMachineryStartMechnicalSelfTest(std::string in, std::string& out);
  339. nDev::RET_STATUS JSMachineryParkingTo(std::string in, std::string& out);
  340. nDev::RET_STATUS JSMachineryActiveTubeAngleZAxisClear(std::string in, std::string& out);
  341. nDev::RET_STATUS JSMachineryCancelTubeAngleZAxisClear(std::string in, std::string& out);
  342. nDev::RET_STATUS JSMachineryActiveTubeHeightZAxisClear(std::string in, std::string& out);
  343. nDev::RET_STATUS JSMachineryCancelTubeHeightZAxisClear(std::string in, std::string& out);
  344. nDev::RET_STATUS JSMachineryTubeAngleRotateToZAxis(std::string in, std::string& out);
  345. nDev::RET_STATUS JSMachineryTubeHeightMoveToZAxis(std::string in, std::string& out);
  346. nDev::RET_STATUS JSMachineryForceStopAllMotion(std::string in, std::string& out);
  347. nDev::RET_STATUS JSMachineryGetTomoResult(std::string in, std::string& out);
  348. nDev::RET_STATUS JSMachineryRecalculateTomoMotionParam(std::string in, std::string& out);
  349. nDev::RET_STATUS JSGetMachineryReadyStatus(std::string& out);
  350. nDev::RET_STATUS JSGetMachineryAlignStatus(std::string& out);
  351. nDev::RET_STATUS JSGetMachineryProjectionNumber(std::string& out);
  352. nDev::RET_STATUS JSGetMachineryTID(std::string& out);
  353. nDev::RET_STATUS JSGetMachinerySID(std::string& out);
  354. nDev::RET_STATUS JSGetMachineryScanAngle(std::string& out);
  355. nDev::RET_STATUS JSGetMachineryScanDirection(std::string& out);
  356. nDev::RET_STATUS JSGetMachineryScanGeometry(std::string& out);
  357. nDev::RET_STATUS JSGetMachineryHandSwitchState(std::string& out);
  358. nDev::RET_STATUS JSGetMachineryTomoMotionLimitationStatus(std::string& out);
  359. nDev::RET_STATUS JSMachineryCalMotionTubeLineH(std::string in, std::string& out);
  360. nDev::RET_STATUS JSMachineryCalGetADofTubeLineH(std::string in, std::string& out);
  361. nDev::RET_STATUS JSMachineryCalGetEncoderofTubeLineH(std::string in, std::string& out);
  362. nDev::RET_STATUS JSMachineryCalGetADofHorizontalDetector(std::string in, std::string& out);
  363. nDev::RET_STATUS JSMachineryCalSaveParamsofTubeLiveH(std::string in, std::string& out);
  364. nDev::RET_STATUS JSMachineryCalSaveParamsofDetectorHorizontal(std::string in, std::string& out);
  365. nDev::RET_STATUS JSMachineryCalSaveResetLowPosition(std::string in, std::string& out);
  366. nDev::RET_STATUS JSMachineryCalSaveResetEcoderZeroPosition(std::string in, std::string& out);
  367. nDev::RET_STATUS JSMachineryCalGetResetPosParam(std::string in, std::string& out);
  368. private:
  369. using funcInvokeMotionInterface = std::function <nDev::RET_STATUS (std::string in)>;
  370. void ResObjectToJson(ResDataObject obj, std::string& out);
  371. protected:
  372. CollimatorUnit* m_pUnitCollimator;
  373. ExposureSwitchUnit* m_pUnitExposureSwitch;
  374. MotionControlUnit* m_pUnitMotionControl;
  375. ResDataObject GetDataObj(string in);
  376. };
  377. }