OTSSEMOxford.cpp 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. #include "stdafx.h"
  2. #include "OTSSEMOxford.h"
  3. #include "../OTSSemBase.h"
  4. #include "COTSUtilityDllFunExport.h"
  5. //long EMScreenSizeMag100X = 1142;
  6. namespace OTSController {
  7. COTSSEMOxford::COTSSEMOxford(void)
  8. {
  9. }
  10. COTSSEMOxford::~COTSSEMOxford(void)
  11. {
  12. }
  13. BOOL COTSSEMOxford::IsConnected(void)
  14. {
  15. if (!m_oxfordImpl)
  16. {
  17. return FALSE;
  18. }
  19. return m_oxfordImpl->IsConnected();
  20. }
  21. BOOL COTSSEMOxford::Connect(void)
  22. {
  23. if (!m_oxfordImpl)
  24. {
  25. m_oxfordImpl = OxfordImpl::GetInstance();
  26. }
  27. return m_oxfordImpl->Connect();
  28. }
  29. BOOL COTSSEMOxford::Disconnect(void)
  30. {
  31. m_oxfordImpl.reset();
  32. return TRUE;
  33. }
  34. // 0: beam off
  35. // 1: beam on
  36. // 2: beam blank
  37. BOOL COTSSEMOxford::GetBeamBlank(long& a_nBeamBlank)
  38. {
  39. ASSERT(m_oxfordImpl);
  40. if (!m_oxfordImpl)
  41. {
  42. return FALSE;
  43. }
  44. bool bBeamOn = false;
  45. if (!m_oxfordImpl->GetBeamOn(bBeamOn))
  46. {
  47. return FALSE;
  48. }
  49. if (!bBeamOn)
  50. {
  51. a_nBeamBlank = 0;
  52. return TRUE;
  53. }
  54. bool bBeamBlank = false;
  55. if (!m_oxfordImpl->GetBeamBlank(bBeamBlank))
  56. {
  57. return FALSE;
  58. }
  59. if (bBeamBlank)
  60. {
  61. a_nBeamBlank = 2;
  62. return TRUE;
  63. }
  64. a_nBeamBlank = 1;
  65. return TRUE;
  66. }
  67. BOOL COTSSEMOxford::SetBeamBlank(long a_nBeamBlank)
  68. {
  69. ASSERT(m_oxfordImpl);
  70. if (!m_oxfordImpl)
  71. {
  72. return FALSE;
  73. }
  74. if (a_nBeamBlank < 0 || a_nBeamBlank >= 3)
  75. {
  76. return FALSE;
  77. }
  78. if (a_nBeamBlank == 0)
  79. {
  80. return m_oxfordImpl->SetBeamOn(FALSE);
  81. }
  82. if (!m_oxfordImpl->SetBeamOn(TRUE))
  83. {
  84. return FALSE;
  85. }
  86. if (a_nBeamBlank == 2)
  87. {
  88. return m_oxfordImpl->SetBeamBlank(TRUE);
  89. }
  90. return TRUE;
  91. }
  92. BOOL COTSSEMOxford::GetPositionXY(double& a_dPositionX, double& a_dPositionY, double& /*a_dPositionR*/)
  93. {
  94. // controller checking
  95. ASSERT(m_oxfordImpl);
  96. if (!m_oxfordImpl)
  97. {
  98. return FALSE;
  99. }
  100. if (!m_oxfordImpl->GetPositionXY(a_dPositionX, a_dPositionY))
  101. {
  102. return FALSE;
  103. }
  104. return TRUE;
  105. }
  106. BOOL COTSSEMOxford::SetPositionXY(double a_dPositionX, double a_dPositionY, double /*a_dPositionR*/)
  107. {
  108. // controller checking
  109. ASSERT(m_oxfordImpl);
  110. if (!m_oxfordImpl)
  111. {
  112. return FALSE;
  113. }
  114. // set position
  115. if (!m_oxfordImpl->SetPositionXY(a_dPositionX, a_dPositionY))
  116. {
  117. // OK, return TRUE
  118. return TRUE;
  119. }
  120. return TRUE;
  121. }
  122. BOOL COTSSEMOxford::GetWorkingDistance(double& a_dWorkingDistance)
  123. {
  124. ASSERT(m_oxfordImpl);
  125. if (!m_oxfordImpl)
  126. {
  127. return FALSE;
  128. }
  129. return m_oxfordImpl->GetWorkingDistance(a_dWorkingDistance);
  130. }
  131. BOOL COTSSEMOxford::SetWorkingDistance(double a_dWorkingDistance)
  132. {
  133. ASSERT(m_oxfordImpl);
  134. if (!m_oxfordImpl)
  135. {
  136. return FALSE;
  137. }
  138. return m_oxfordImpl->SetWorkingDistance(a_dWorkingDistance);
  139. }
  140. BOOL COTSSEMOxford::GetHighTension(double& a_dKV)
  141. {
  142. ASSERT(m_oxfordImpl);
  143. if (!m_oxfordImpl)
  144. {
  145. return FALSE;
  146. }
  147. return m_oxfordImpl->GetHighVoltage(a_dKV);
  148. }
  149. BOOL COTSSEMOxford::SetHighTension(double a_dKV)
  150. {
  151. ASSERT(m_oxfordImpl);
  152. if (!m_oxfordImpl)
  153. {
  154. return FALSE;
  155. }
  156. return m_oxfordImpl->SetHighVoltage(a_dKV);
  157. }
  158. BOOL COTSSEMOxford::GetMagnification(double& a_dMagnification)
  159. {
  160. ASSERT(m_oxfordImpl);
  161. if (!m_oxfordImpl)
  162. {
  163. return FALSE;
  164. }
  165. return m_oxfordImpl->GetMagnification(a_dMagnification);
  166. }
  167. BOOL COTSSEMOxford::SetMagnification(double a_dMagnification)
  168. {
  169. ASSERT(m_oxfordImpl);
  170. if (!m_oxfordImpl)
  171. {
  172. return FALSE;
  173. }
  174. return m_oxfordImpl->SetMagnification(a_dMagnification);
  175. }
  176. // get scan field size
  177. // param double& a_dScanFieldSizeX - output
  178. // double& a_dScanFieldSizeY - output
  179. // return TRUE if success
  180. BOOL COTSSEMOxford::GetScanFieldSize(double& a_dScanFieldSizeX, double& a_dScanFieldSizeY)
  181. {
  182. // set method succeed flag to FALSE as default
  183. BOOL bReturn = FALSE;
  184. // get screen matrix and magnification
  185. double fmag = 0;
  186. if (GetMagnification(fmag))
  187. {
  188. double fssizeX = 0;
  189. double fssizeY = 0;
  190. if (MagToScanFieldSize(fmag, fssizeX, fssizeY))
  191. {
  192. // calculate scan field size and set output values
  193. a_dScanFieldSizeX = fssizeX;
  194. a_dScanFieldSizeY = fssizeY;
  195. // set method succeed flag to TRUE
  196. bReturn = TRUE;
  197. }
  198. }
  199. // return method succeed flag
  200. return bReturn;
  201. }
  202. // Set scan field size
  203. // param double& a_dScanFieldSizeX
  204. // return TRUE if success
  205. BOOL COTSSEMOxford::SetScanFieldSizeX(double a_dScanFieldSizeX)
  206. {
  207. // set method succeed flag to FALSE as default
  208. BOOL bReturn = FALSE;
  209. double mag = 0;
  210. if (ScanFieldSizeToMag(mag, a_dScanFieldSizeX))
  211. {
  212. LogTrace(__FILE__, __LINE__,_T("Scan field size is %f, mag is %f"), a_dScanFieldSizeX, mag);
  213. // set magnification and method succeed flag
  214. bReturn = SetMagnification(mag);
  215. }
  216. // return method succeed flag
  217. return bReturn;
  218. }
  219. BOOL COTSSEMOxford::SetScanExternal(BOOL a_bExternal)
  220. {
  221. ASSERT(m_oxfordImpl);
  222. if (!m_oxfordImpl)
  223. {
  224. return FALSE;
  225. }
  226. return m_oxfordImpl->SetExternal(a_bExternal);
  227. }
  228. }