OTSScanBrucker.cpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. #include "stdafx.h"
  2. #include "OTSScanBrucker.h"
  3. #include "SEMCommonConst.h"
  4. namespace OTSController {
  5. // constructor
  6. COTSScanBrucker::COTSScanBrucker()
  7. : m_pBrukerImpl(nullptr)
  8. {
  9. m_pBrukerImpl = COTSBrukerImpl::GetInstance();
  10. if (!m_pBrukerImpl->Init(CONTROL_TYPE::BRUKER_SCAN))
  11. {
  12. // failed to call bruker controller init method
  13. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::Init: failed to failed to call bruker controller init method."));
  14. }
  15. }
  16. // destructor
  17. COTSScanBrucker::~COTSScanBrucker(void)
  18. {
  19. }
  20. // initialization
  21. BOOL COTSScanBrucker::Init()
  22. {
  23. // create bruker initialize controller
  24. //if (!m_pBrukerImpl)
  25. //{
  26. // // get bruker controller
  27. //m_pBrukerImpl = COTSBrukerImpl::GetInstance();
  28. //}
  29. //// initialize bruker scanner controller
  30. //ASSERT(m_pBrukerImpl);
  31. //if (!m_pBrukerImpl)
  32. //{
  33. // // failed to create bruker controller
  34. // LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::Init: failed to create bruker controller."));
  35. // return FALSE;
  36. //}
  37. // initialize bruker controller (as scanner)
  38. //if (!m_pBrukerImpl->Init(CONTROL_TYPE::BRUKER_SCAN))
  39. //{
  40. // // failed to call bruker controller init method
  41. // LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::Init: failed to failed to call bruker controller init method."));
  42. // return FALSE;
  43. //}
  44. // ok, return TRUE
  45. return TRUE;
  46. }
  47. // acquire BSE image
  48. CBSEImgPtr COTSScanBrucker::AcquireBSEImage()
  49. {
  50. // BSE image
  51. CBSEImgPtr poBSEImgPtr = nullptr;
  52. // check bruker controller
  53. ASSERT(m_pBrukerImpl);
  54. if (!m_pBrukerImpl)
  55. {
  56. // invalid m_pBrukerImpl
  57. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::AcquireBSEImage: invalid m_pBrukerImpl."));
  58. return poBSEImgPtr;
  59. }
  60. // acquire BSE image
  61. poBSEImgPtr = m_pBrukerImpl->AcquireImage();
  62. // check acquired image
  63. ASSERT(poBSEImgPtr);
  64. if (!poBSEImgPtr)
  65. {
  66. // failed to load simulation image
  67. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::AcquireBSEImage: failed to acquire image"));
  68. }
  69. // return acquired image, nullptr if acquire image failed
  70. return poBSEImgPtr;
  71. }
  72. // move beam to point
  73. BOOL COTSScanBrucker::MoveBeamTo(CPoint& a_beamPos)
  74. {
  75. // check bruker controller
  76. ASSERT(m_pBrukerImpl);
  77. if (!m_pBrukerImpl)
  78. {
  79. // invalid m_pBrukerImpl
  80. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::MoveBeamTo: invalid m_pBrukerImpl."));
  81. return FALSE;
  82. }
  83. // move beam to point
  84. if (!m_pBrukerImpl->ImageSetPoint(a_beamPos))
  85. {
  86. // failed to call ImageSetPoint method
  87. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::MoveBeamTo: failed to call ImageSetPoint method."));
  88. return FALSE;
  89. }
  90. // ok, return TRUE
  91. return TRUE;
  92. }
  93. // set image size
  94. BOOL COTSScanBrucker::SetImageSize(long a_nImageSizeX,long a_Height)
  95. {
  96. // check bruker controller
  97. ASSERT(m_pBrukerImpl);
  98. if (!m_pBrukerImpl)
  99. {
  100. // invalid m_pBrukerImpl
  101. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::SetImageSize: invalid m_pBrukerImpl."));
  102. return FALSE;
  103. }
  104. // call ImageGetConfiguration to get the existing dimensions, dwell time and enabled channels
  105. DWORD nWidth = 0;
  106. DWORD nHeight = 0;
  107. DWORD nAverage;
  108. BYTE bCh1;
  109. BYTE bCh2;
  110. if (!m_pBrukerImpl->ImageGetConfiguration(nWidth, nHeight, nAverage, bCh1, bCh2))
  111. {
  112. // failed to call ImageGetConfiguration method
  113. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::SetImageSize: failed to call ImageGetConfiguration method."));
  114. return FALSE;
  115. }
  116. // set image size
  117. nWidth = a_nImageSizeX;
  118. nHeight = a_Height;
  119. if (!m_pBrukerImpl->ImageSetConfiguration(nWidth, nHeight, nAverage, bCh1, bCh2))
  120. {
  121. // failed to call ImageGetConfiguration method
  122. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::SetImageSize: failed to call ImageSetConfiguration method."));
  123. return FALSE;
  124. }
  125. // ok, return TRUE
  126. return TRUE;
  127. }
  128. // set dwell time
  129. BOOL COTSScanBrucker::SetDwellTime(long a_nDwellTime)
  130. {
  131. // check bruker controller
  132. ASSERT(m_pBrukerImpl);
  133. if (!m_pBrukerImpl)
  134. {
  135. // invalid m_pBrukerImpl
  136. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::SetDwellTime: invalid m_pBrukerImpl."));
  137. return FALSE;
  138. }
  139. // call ImageGetConfiguration to get the existing dimensions, dwell time and enabled channels
  140. DWORD nWidth = 0;
  141. DWORD nHeight = 0;
  142. DWORD nAverage;
  143. BYTE bCh1;
  144. BYTE bCh2;
  145. if (!m_pBrukerImpl->ImageGetConfiguration(nWidth, nHeight, nAverage, bCh1, bCh2))
  146. {
  147. // failed to call ImageGetConfiguration method
  148. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::SetDwellTime: failed to call ImageGetConfiguration method."));
  149. return FALSE;
  150. }
  151. // set dwell time
  152. nAverage = (DWORD)a_nDwellTime;
  153. if(!m_pBrukerImpl->ImageSetConfiguration(nWidth, nHeight, nAverage, bCh1, bCh2))
  154. {
  155. // failed to call ImageSetConfiguration method
  156. LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::SetDwellTime: failed to call ImageSetConfiguration method."));
  157. return FALSE;
  158. }
  159. return TRUE;
  160. }
  161. }