MACHINE_Logical.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. #include "stdafx.h"
  2. #include <map>
  3. #include "All.h"
  4. #include "MACHINE_DPC.h"
  5. #include "MACHINE_Logical.h"
  6. #include "DIOSDICOMInfo.h"
  7. CMACHINE_Logical::CMACHINE_Logical(void)
  8. {
  9. }
  10. CMACHINE_Logical::~CMACHINE_Logical(void)
  11. {
  12. }
  13. bool CMACHINE_Logical::DPCPoint(CMACHINE_DPC* pMACHINE_DPC)
  14. {
  15. m_pMACHINE_DPC = pMACHINE_DPC;
  16. return true;
  17. }
  18. RET_STATUS OEM_IF CMACHINE_Logical::SelectExamMode(const char *pExamKey)
  19. {
  20. printf("\n !!!!!!!!!!!!!!!!!!!!!SelectExamMode :%s!!!!!!!!!!!!!!!!!!!!!!!!!\n", pExamKey);
  21. if ((string)pExamKey == "DX")
  22. {
  23. m_CurrentExam = ExamList["DX"].GetKey(0);
  24. printf("\n !!!!!!!!!!!!!!!!!!!!!CurrentExamMode :%s!!!!!!!!!!!!!!!!!!!!!!!!!\n", m_CurrentExam.c_str());
  25. if (m_CurrentExam == "TOMO")
  26. {
  27. //m_pMACHINE_DPC->SendTomoExam();
  28. }
  29. else
  30. {
  31. //m_pMACHINE_DPC->ClearMoveState();
  32. }
  33. }
  34. else if ((string)pExamKey == "RF")
  35. {
  36. m_CurrentExam = ExamList["RF"].GetKey(0);
  37. printf("\n !!!!!!!!!!!!!!!!!!!!!CurrentExamMode :%s!!!!!!!!!!!!!!!!!!!!!!!!!\n", m_CurrentExam.c_str());
  38. if (m_CurrentExam == "TOMO")
  39. {
  40. //m_pMACHINE_DPC->SendTomoExam();
  41. }
  42. else
  43. {
  44. //m_pMACHINE_DPC->ClearMoveState();
  45. }
  46. }
  47. return RET_SUCCEED;
  48. }
  49. RET_STATUS CMACHINE_Logical::SetExamInfo(ResDataObject& PARAM_IN pParam)
  50. {
  51. if (pParam.size() == 0)
  52. {
  53. return RET_FAILED;
  54. }
  55. printf("\n !!!!!!!!!!!!!!!!!!!!!SetExamInfo :%s!!!!!!!!!!!!!!!!!!!!!!!!!\n", pParam.encode());
  56. ExamList = pParam;
  57. return RET_SUCCEED;
  58. }
  59. bool DEVICE_SUPPORT CMACHINE_Logical::Support_FrameAcq()
  60. {
  61. return true;
  62. }
  63. bool DEVICE_SUPPORT CMACHINE_Logical::Support_FrameIn()
  64. {
  65. return false;
  66. }
  67. bool DEVICE_SUPPORT CMACHINE_Logical::Support_FrameEnd()
  68. {
  69. return true;
  70. }
  71. bool DEVICE_SUPPORT CMACHINE_Logical::Support_FramePost()
  72. {
  73. return true;
  74. }
  75. bool DEVICE_SUPPORT CMACHINE_Logical::Support_FrameError()
  76. {
  77. return true;
  78. }
  79. bool DEVICE_SUPPORT CMACHINE_Logical::Support_SeqError()
  80. {
  81. return true;
  82. }
  83. bool DEVICE_SUPPORT CMACHINE_Logical::Support_SeqEnd()
  84. {
  85. return true;
  86. }
  87. RET_STATUS DATA_ACTION CMACHINE_Logical::FrameAcq()
  88. {
  89. //if (m_CurrentExam != "TOMO")
  90. //{
  91. // return RET_SUCCEED;
  92. //}
  93. //m_pMACHINE_DPC->StartMove(true);
  94. return RET_SUCCEED;
  95. }
  96. RET_STATUS DATA_ACTION CMACHINE_Logical::FrameIn()
  97. {
  98. //if (m_CurrentExam != "TOMO")
  99. //{
  100. // return RET_SUCCEED;
  101. //}
  102. //m_pMACHINE_DPC->SendIXRAY();
  103. return RET_SUCCEED;
  104. }
  105. RET_STATUS DATA_ACTION CMACHINE_Logical::FrameEnd()
  106. {
  107. if (m_CurrentExam != "TOMO")
  108. {
  109. return RET_SUCCEED;
  110. }
  111. m_pMACHINE_DPC->StartMove(false);
  112. return RET_SUCCEED;
  113. }
  114. RET_STATUS DATA_ACTION CMACHINE_Logical::FrameError()
  115. {
  116. m_pMACHINE_DPC->StartMove(false);
  117. return RET_SUCCEED;
  118. }
  119. RET_STATUS DATA_ACTION CMACHINE_Logical::SeqError()
  120. {
  121. m_pMACHINE_DPC->StartMove(false);
  122. return RET_SUCCEED;
  123. }
  124. RET_STATUS DATA_ACTION CMACHINE_Logical::SeqEnd()
  125. {
  126. m_pMACHINE_DPC->StartMove(false);
  127. return RET_SUCCEED;
  128. }
  129. RET_STATUS DATA_ACTION CMACHINE_Logical::FramePost()
  130. {
  131. m_pMACHINE_DPC->StartMove(false);
  132. return RET_SUCCEED;
  133. }
  134. RET_STATUS CMACHINE_Logical::SetTechParamsInfo(ResDataObject PARAM_IN& pParam)
  135. {
  136. TECHPARAM_INFO info;
  137. info.SetVal(pParam.encode());
  138. USHORT nbodypart;
  139. string strpositionnumber = info.m_PositionNumber;
  140. m_pMACHINE_DPC->ClearMoveState();
  141. //int ntemp = atoi(strpositionnumber.c_str());
  142. m_pMACHINE_DPC->SetPositionNum(strpositionnumber.c_str());
  143. if (m_CurrentExam == "TOMO")
  144. {
  145. m_pMACHINE_DPC->SendTomoExam();
  146. }
  147. return RET_SUCCEED;
  148. }
  149. bool CMACHINE_Logical:: GetMachineryReadyState()
  150. {
  151. return true;
  152. }
  153. RET_STATUS DATA_ACTION CMACHINE_Logical::StartMove()
  154. {
  155. if (m_CurrentExam != "TOMO")
  156. {
  157. return RET_SUCCEED;
  158. }
  159. m_pMACHINE_DPC->StartMove(true);
  160. if (m_pMACHINE_DPC->MechMoveReady())
  161. {
  162. return RET_SUCCEED;
  163. }
  164. else
  165. {
  166. return RET_FAILED;
  167. }
  168. return RET_SUCCEED;
  169. }
  170. RET_STATUS DATA_ACTION CMACHINE_Logical::StopMove()
  171. {
  172. return RET_SUCCEED;
  173. }
  174. RET_STATUS CMACHINE_Logical::GetTomoResults(ResDataObject &resultHeightresultAngle, ResDataObject &resultHeight)
  175. {
  176. RET_STATUS ret = RET_SUCCEED;
  177. //if (WAIT_OBJECT_0 == WaitForSingleObject(m_pMACHINE_DPC->m_hGetPostionFinished, 500))
  178. //{
  179. // for (int i = 0; i < m_pMACHINE_DPC->m_resultAngle.size(); i++)
  180. // {
  181. // resultHeightresultAngle.update(m_pMACHINE_DPC->m_resultAngle.GetKey(i), (float)m_pMACHINE_DPC->m_resultAngle[i]);
  182. // resultHeight.update(m_pMACHINE_DPC->m_resultHeight.GetKey(i), (float)m_pMACHINE_DPC->m_resultHeight[i]);
  183. // }
  184. //}
  185. if (m_pMACHINE_DPC->MechGetPosReady())
  186. {
  187. ResDataObject res1, res2;
  188. m_pMACHINE_DPC->GetPosition(res1, res2);
  189. for (int i = 0; i < res1.size(); i++)
  190. {
  191. resultHeightresultAngle.update(res1.GetKey(i), (float)res1[i]);
  192. resultHeight.update(res2.GetKey(i), (float)res2[i]);
  193. }
  194. return RET_SUCCEED;
  195. }
  196. else
  197. {
  198. return RET_FAILED;
  199. }
  200. return ret;
  201. }
  202. RET_STATUS CMACHINE_Logical::SetXrayOnNum(int nNum)
  203. {
  204. if (m_CurrentExam != "TOMO")
  205. {
  206. return RET_SUCCEED;
  207. }
  208. m_pMACHINE_DPC->SendIXRAY();
  209. return RET_SUCCEED;
  210. }