GeneralExamHandler.cpp 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. #include "stdafx.h"
  2. #include "GeneralExamHandler.h"
  3. #include "ConfigurerMotion.h"
  4. #include "IMotionModelManager.h"
  5. #include "IPositionManager.h"
  6. #include "IMotionModel.h"
  7. #include "CArmGeneralMotionStageArgs.h"
  8. #include "MotionStages.h"
  9. using namespace DIOS::Dev::Detail::MachineryECOM;
  10. GeneralExamHandler::GeneralExamHandler():
  11. m_modelLoaded(FALSE),
  12. m_modelManager(nullptr),
  13. m_positionManager(nullptr)
  14. {
  15. }
  16. GeneralExamHandler::~GeneralExamHandler()
  17. {
  18. }
  19. void GeneralExamHandler::OnModelLoaded(IMotionModelManager *modelManager)
  20. {
  21. m_modelManager = modelManager;
  22. }
  23. void GeneralExamHandler::OnCoordinatesLoaded(IPositionManager *coordinates)
  24. {
  25. m_positionManager = coordinates;
  26. }
  27. RET_STATUS GeneralExamHandler::OnSelectExamMode(const char *pExamKey)
  28. {
  29. if (!m_modelLoaded)
  30. {
  31. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  32. if (model)
  33. {
  34. ResDataObject mechparms;
  35. if (ConfigurerMotion::GetMachineryConfigs(mechparms))
  36. {
  37. model->LoadMachineryParams(mechparms);
  38. }
  39. }
  40. m_modelLoaded = TRUE;
  41. }
  42. return RET_STATUS::RET_SUCCEED;
  43. }
  44. RET_STATUS GeneralExamHandler::OnSetTechParamsInfo(ResDataObject& pParam)
  45. {
  46. return RET_STATUS::RET_SUCCEED;
  47. }
  48. void GeneralExamHandler::OnMotionEvent(const std::string &motionEventName)
  49. {
  50. }
  51. RET_STATUS GeneralExamHandler::OnStopMech()
  52. {
  53. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  54. if (!model)
  55. {
  56. return RET_STATUS::RET_SUCCEED;
  57. }
  58. model->ChangeStage(CARM_GENERAL_STOP_MECH_MOVING);
  59. return RET_STATUS::RET_SUCCEED;
  60. }
  61. RET_STATUS GeneralExamHandler::OnTubeSwing(ResDataObject& ParamIn)
  62. {
  63. int direction = 1;
  64. int steps = 0;
  65. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  66. if (!model)
  67. {
  68. return RET_STATUS::RET_FAILED;
  69. }
  70. auto modelArgs = (CArmGeneralMotionStageArgs *)model->GetStageArgs();
  71. if (ParamIn.GetFirstOf("Orientation") >= 0
  72. && ParamIn.GetFirstOf("StepNumber") >= 0)
  73. {
  74. auto positive = ConfigurerMotion::GetTubeRotateAxisPositiveDirection() > 0 ? 1 : -1;
  75. auto ori = atoi(ParamIn["Orientation"]) > 0 ? positive : (-1 * positive);
  76. modelArgs->TubeSwingDirection = ori;
  77. if (ParamIn.GetFirstOf("AsPhysical") >= 0)
  78. {
  79. modelArgs->TubeSwingPhysical = (float)atof(ParamIn["StepNumber"]);
  80. model->ChangeStage(CARM_GENERAL_MOVE_TUBE_SWING_AS_PHYSICAL);
  81. }
  82. else
  83. {
  84. modelArgs->TubeSwingStep = atoi(ParamIn["StepNumber"]);
  85. model->ChangeStage(CARM_GENERAL_MOVE_TUBE_SWING);
  86. }
  87. }
  88. return RET_STATUS::RET_SUCCEED;
  89. }
  90. RET_STATUS GeneralExamHandler::OnTubeCircular(ResDataObject& ParamIn)
  91. {
  92. int direction = 1;
  93. int steps = 0;
  94. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  95. if (!model)
  96. {
  97. return RET_STATUS::RET_FAILED;
  98. }
  99. auto modelArgs = (CArmGeneralMotionStageArgs *)model->GetStageArgs();
  100. if (ParamIn.GetFirstOf("Orientation") >= 0
  101. && ParamIn.GetFirstOf("StepNumber") >= 0)
  102. {
  103. auto positive = ConfigurerMotion::GetTubeHeightAxisPositiveDirection() > 0 ? 1 : -1;
  104. auto ori = atoi(ParamIn["Orientation"]) > 0 ? positive : (-1 * positive);
  105. modelArgs->TubeCircularMoveDirection = ori;
  106. if (ParamIn.GetFirstOf("AsPhysical") >= 0)
  107. {
  108. modelArgs->TubeCircularMovePhysical = (float)atof(ParamIn["StepNumber"]);
  109. model->ChangeStage(CARM_GENERAL_MOVE_TUBE_CIRCULAR_AS_PHYSICAL);
  110. }
  111. else
  112. {
  113. modelArgs->TubeCircularMoveStep = atoi(ParamIn["StepNumber"]);
  114. model->ChangeStage(CARM_GENERAL_MOVE_TUBE_CIRCULAR);
  115. }
  116. }
  117. return RET_STATUS::RET_SUCCEED;
  118. }
  119. RET_STATUS GeneralExamHandler::OnGetTubeCircularEncoder(ResDataObject& Paramout)
  120. {
  121. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  122. if (!model)
  123. {
  124. return RET_STATUS::RET_FAILED;
  125. }
  126. model->ChangeStage(CARM_GENERAL_GET_TUBE_CIRCULAR_ENCODER);
  127. auto modelArgs = (CArmGeneralMotionStageArgs *)model->GetStageArgs();
  128. Paramout.add("EncoderTubeHeight", modelArgs->TubeCircularEncoder);
  129. return RET_STATUS::RET_SUCCEED;
  130. }
  131. RET_STATUS GeneralExamHandler::OnGetTubeSwingEncoder(ResDataObject& Paramout)
  132. {
  133. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  134. if (!model)
  135. {
  136. return RET_STATUS::RET_FAILED;
  137. }
  138. model->ChangeStage(CARM_GENERAL_GET_TUBE_SWING_ENCODER);
  139. auto modelArgs = (CArmGeneralMotionStageArgs *)model->GetStageArgs();
  140. Paramout.add("EncoderTubeAngle", modelArgs->TubeSwingEncoder);
  141. return RET_STATUS::RET_SUCCEED;
  142. }
  143. RET_STATUS GeneralExamHandler::OnActiveTubeSwingZAxis()
  144. {
  145. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  146. if (!model)
  147. {
  148. return RET_STATUS::RET_FAILED;
  149. }
  150. model->ChangeStage(CARM_GENERAL_ACTIVE_TUBE_SWING_Z_AXIS);
  151. return RET_STATUS::RET_SUCCEED;
  152. }
  153. RET_STATUS GeneralExamHandler::OnCancleTubeSwingZAxis()
  154. {
  155. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  156. if (!model)
  157. {
  158. return RET_STATUS::RET_FAILED;
  159. }
  160. model->ChangeStage(CARM_GENERAL_CANCLE_TUBE_SWING_Z_AXIS);
  161. return RET_STATUS::RET_SUCCEED;
  162. }
  163. RET_STATUS GeneralExamHandler::OnActiveTubeCircularZAxis()
  164. {
  165. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  166. if (!model)
  167. {
  168. return RET_STATUS::RET_FAILED;
  169. }
  170. model->ChangeStage(CARM_GENERAL_ACTIVE_TUBE_CIRCULAR_Z_AXIS);
  171. return RET_STATUS::RET_SUCCEED;
  172. }
  173. RET_STATUS GeneralExamHandler::OnCancleTubeCircularZAxis()
  174. {
  175. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  176. if (!model)
  177. {
  178. return RET_STATUS::RET_FAILED;
  179. }
  180. model->ChangeStage(CARM_GENERAL_CANCLE_TUBE_CIRCULAR_Z_AXIS);
  181. return RET_STATUS::RET_SUCCEED;
  182. }
  183. RET_STATUS GeneralExamHandler::OnStartMove(DOF_MECH mech, int nOrientation)
  184. {
  185. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  186. if (!model)
  187. {
  188. return RET_STATUS::RET_FAILED;
  189. }
  190. auto modelArgs = (CArmGeneralMotionStageArgs *)model->GetStageArgs();
  191. if (mech == TOMO_TUBE_HEIGHT)
  192. {
  193. modelArgs->TubeCircularMoveDirection = nOrientation;
  194. modelArgs->TubeCircularMoveStep = -1;
  195. if(gbusinessLog) gbusinessLog->Info("[GeneralExamHandler][OnStartMove]->[Enter][TOMO_TUBE_HEIGHT][Org: {$:d}]", modelArgs->TubeSwingDirection);
  196. model->ChangeStage(CARM_GENERAL_MOVE_TUBE_CIRCULAR);
  197. }
  198. else if (mech == TOMO_TUBE_ANGLE)
  199. {
  200. modelArgs->TubeSwingDirection = nOrientation;
  201. modelArgs->TubeSwingStep = -1;
  202. if(gbusinessLog) gbusinessLog->Info("[GeneralExamHandler][OnStartMove]->[Enter][TOMO_TUBE_ANGLE][Org: {$:d}]", modelArgs->TubeSwingDirection);
  203. model->ChangeStage(CARM_GENERAL_MOVE_TUBE_SWING);
  204. }
  205. if(gbusinessLog) gbusinessLog->Info("[GeneralExamHandler][OnStartMove]->[Leave]");
  206. return RET_STATUS::RET_SUCCEED;
  207. }
  208. RET_STATUS GeneralExamHandler::OnStopMove(DOF_MECH mech)
  209. {
  210. if(gbusinessLog) gbusinessLog->Info("[GeneralExamHandler][OnStopMove]->[Enter]");
  211. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  212. if (!model)
  213. {
  214. return RET_STATUS::RET_FAILED;
  215. }
  216. model->ChangeStage(CARM_GENERAL_STOP_MECH_MOVING);
  217. if(gbusinessLog) gbusinessLog->Info("[GeneralExamHandler][OnStopMove]->[Leave]");
  218. return RET_STATUS::RET_SUCCEED;
  219. }
  220. void GeneralExamHandler::OnHandSwitchGearFirstPressed()
  221. {
  222. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  223. if (!model)
  224. {
  225. return ;
  226. }
  227. model->ChangeStage(CARM_GENERAL_START_EXPOSURE);
  228. }
  229. void GeneralExamHandler::OnHandSwitchGearFirstReleased()
  230. {
  231. auto model = m_modelManager->Resove(MOTION_MODLE_CARM_GENERAL);
  232. if (!model)
  233. {
  234. return ;
  235. }
  236. model->ChangeStage(CARM_GENERAL_STOP_EXPOSURE);
  237. }