Explorar o código

improve bruker

gsp hai 1 ano
pai
achega
47b4634b71

+ 14 - 12
OTSCPP/OTSControl/Bruker/OTSBrukerImpl.cpp

@@ -477,6 +477,8 @@ namespace OTSController {
 			LogErrorTrace(__FILE__, __LINE__, "ImageGetConfiguration::ImageSetConfiguration: failed to call ImageSetConfiguration method, client id = %d", m_nClientID);
 			return FALSE;
 		}
+		nWidth = a_nWidth;
+		nHeight = a_nHeight;
 
 		// ok, return TRUE
 		return TRUE;
@@ -497,24 +499,24 @@ namespace OTSController {
 			}
 
 			// Get the image config so we can allocate enough memory
-			DWORD nWidth = 0;
-			DWORD nHeight = 0;
-			DWORD nAverage;
-			BYTE bCh1;
-			BYTE bCh2;
-			if (!ImageGetConfiguration(nWidth, nHeight, nAverage, bCh1, bCh2))
-			{
-				// failed to call ImageGetConfiguration method 
-				LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::AcquireImage: failed to call ImageGetConfiguration method."));
-				return CBSEImgPtr();
-			}
+			//DWORD nWidth = 0;
+			//DWORD nHeight = 0;
+			//DWORD nAverage;
+			//BYTE bCh1;
+			//BYTE bCh2;
+			//if (!ImageGetConfiguration(nWidth, nHeight, nAverage, bCh1, bCh2))
+			//{
+			//	// failed to call ImageGetConfiguration method 
+			//	LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::AcquireImage: failed to call ImageGetConfiguration method."));
+			//	return CBSEImgPtr();
+			//}
 
 			// SEM info
 			BrukerDll::TRTImageInfoEx imgInfo;
 			BrukerDll::PRTImageInfoEx oImageInfo=&imgInfo;
 
 			// the buffer returned is a bitmap stream, i.e. it contains the header information as well
-			int32_t nImageSize = nWidth * nHeight + 20000;
+			int32_t nImageSize = nWidth * nHeight + 2000;
 			std::vector<BYTE> vecImage(nImageSize, 0);
 
 			BYTE showProgress = false;

+ 2 - 1
OTSCPP/OTSControl/Bruker/OTSBrukerImpl.h

@@ -227,7 +227,8 @@ namespace OTSController {
 		BOOL m_bSEMExternal;
 		int m_nSPU;
 		BOOL m_bConnected;
-
+		DWORD nWidth = 0;
+		DWORD nHeight = 0;
 		BOOL m_bDoQuantification;                           // if do x-ray quantification
 
 		BOOL m_bShowQuantificationSpectrum;		

+ 32 - 120
OTSCPP/OTSControl/Bruker/OTSSEMBruker.cpp

@@ -34,29 +34,7 @@ namespace OTSController {
 	// connect client dll
 	BOOL COTSSEMBruker::Connect()
 	{
-		// doing nothing if m_pBrukerImplPtr is not nullptr 
-		//if (!m_pBrukerImplPtr)
-		//{
-		//	// get bruker initialize controller
-		//	m_pBrukerImplPtr = COTSBrukerImpl::GetInstance();
-		//}
-
-		// make sure m_pBrukerImplPtr is OK
-		/*if (m_pBrukerImplPtr)
-		{*/
-			// initialize the bruker controller as a SEM controller
 		
-			
-			// check connection
-		//m_pBrukerImplPtr->CheckConnection(m_bConnected);
-			/*if (!m_bConnected)
-			{
-
-				LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Connect: failed to call init."));
-				m_pBrukerImplPtr.reset();
-				m_bConnected = FALSE;
-				return FALSE;
-			}*/
 
 			// connection is ok?
 			if (!m_bConnected)
@@ -68,10 +46,11 @@ namespace OTSController {
 					m_pBrukerImplPtr.reset();
 					return FALSE;
 				}
-				
+			
 				m_bConnected = TRUE;
 			
 			}
+			
 		
 		return TRUE;
 	}
@@ -99,13 +78,7 @@ namespace OTSController {
 	// set beam blank
 	BOOL COTSSEMBruker::SetBeamBlank(long a_nBeamBlank)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetBeamBlank: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// turn Bean off if a_nBeamBlank > 0
 		if (a_nBeamBlank > 0)
@@ -124,13 +97,7 @@ namespace OTSController {
 	// set beam blank
 	BOOL COTSSEMBruker::SetBeamCurrent(BOOL a_nBeamCurrent)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetBeamBlank: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// turn Bean off if a_nBeamBlank > 0
 		if (a_nBeamCurrent )
@@ -149,13 +116,7 @@ namespace OTSController {
 	// brightness
 	BOOL COTSSEMBruker::GetBrightness(double& a_dBrightness)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::GetBrightness: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// get brightness and contrast
 		double dBrightness, dContrast;
@@ -172,13 +133,7 @@ namespace OTSController {
 	}
 	BOOL COTSSEMBruker::SetBrightness(double a_dBrightness)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetBrightness: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// get current brightness and contrast
 		double dBrightness, dContrast;
@@ -205,13 +160,7 @@ namespace OTSController {
 	// contrast
 	BOOL COTSSEMBruker::GetContrast(double& a_dContrast)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::GetContrast: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// get brightness and contrast
 		double dBrightness, dContrast;
@@ -228,13 +177,7 @@ namespace OTSController {
 	}
 	BOOL COTSSEMBruker::SetContrast(double a_dContrast)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetContrast: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// get current brightness and contrast
 		double dBrightness, dContrast;
@@ -261,14 +204,7 @@ namespace OTSController {
 	// working distance
 	BOOL COTSSEMBruker::GetWorkingDistance(double& a_dWorkingDistance)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::GetWorkingDistance: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// get mag, KV and working distance
 		double dMagnification, dHighVoltage, dWorkingDistance;
@@ -285,13 +221,7 @@ namespace OTSController {
 	}
 	BOOL COTSSEMBruker::SetWorkingDistance(double a_dWorkingDistance)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetWorkingDistance: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// get current mag, KV and working distance
 		double dMagnification, dHighVoltage, dWorkingDistance;
@@ -318,13 +248,8 @@ namespace OTSController {
 	// high tension (KV)
 	BOOL COTSSEMBruker::GetHighTension(double& a_dKV)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::GetHighTension: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
+		
 
 		// get mag, KV and working distance
 		double dMagnification, dHighVoltage, dWorkingDistance;
@@ -341,14 +266,7 @@ namespace OTSController {
 	}
 	BOOL COTSSEMBruker::SetHighTension(double a_dKV)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetHighTension: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
-
+		
 		// get current mag, KV and working distance
 		double dMagnification, dHighVoltage, dWorkingDistance;
 		if (!m_pBrukerImplPtr->GetSEMData(dMagnification, dHighVoltage, dWorkingDistance))
@@ -374,13 +292,7 @@ namespace OTSController {
 	// magnification
 	BOOL COTSSEMBruker::GetMagnification(double& a_dMagnification)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::GetMagnification: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// get mag, KV and working distance
 		double dMagnification, dHighVoltage, dWorkingDistance;
@@ -397,13 +309,7 @@ namespace OTSController {
 	}
 	BOOL COTSSEMBruker::SetMagnification(double a_dMagnification)
 	{
-		// m_pBrukerImplPtr check
-		ASSERT(m_pBrukerImplPtr);
-		if (!m_pBrukerImplPtr)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetMagnification: m_pBrukerImplPtr is invalid."));
-			return FALSE;
-		}
+		
 
 		// get current mag, KV and working distance
 		double dMagnification, dHighVoltage, dWorkingDistance;
@@ -517,7 +423,7 @@ namespace OTSController {
 		}
 
 		// get position
-		double dPositionX, dPositionY, dPositionZ, dTilt, dRotation;
+		//double dPositionX, dPositionY, dPositionZ, dTilt, dRotation;
 		if (!m_pBrukerImplPtr->GetSEMStageData(dPositionX, dPositionY, dPositionZ, dTilt, dRotation))
 		{
 			// failed to call GetSEMStageData method
@@ -546,13 +452,17 @@ namespace OTSController {
 		}
 
 		// get position
-		double dPositionX, dPositionY, dPositionZ, dTilt, dRotation;
-		if (!m_pBrukerImplPtr->GetSEMStageData(dPositionX, dPositionY, dPositionZ, dTilt, dRotation))
+		//double dPositionX, dPositionY, dPositionZ, dTilt, dRotation;
+		if ((dPositionX == 0 && dPositionY == 0  && dTilt==0 && dRotation==0) || (dPositionZ==0))
 		{
-			// failed to call GetSEMStageData method
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetPositionXY : failed to call GetSEMStageData method."));
-			return FALSE;
+			if (!m_pBrukerImplPtr->GetSEMStageData(dPositionX, dPositionY, dPositionZ, dTilt, dRotation))
+			{
+				// failed to call GetSEMStageData method
+				LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetPositionXY : failed to call GetSEMStageData method."));
+				return FALSE;
+			}
 		}
+		
 
 		// need to convert a_dPositionX, a_dPositionY from OTS position to SEM position
 
@@ -582,12 +492,14 @@ namespace OTSController {
 		}
 
 		// get position
-		double dPositionX, dPositionY, dPositionZ, dTilt, dRotation;
-		if (!m_pBrukerImplPtr->GetSEMStageData(dPositionX, dPositionY, dPositionZ, dTilt, dRotation))
+		if ((dPositionX == 0 && dPositionY == 0 && dTilt == 0 && dRotation == 0) || (dPositionZ == 0))
 		{
-			// failed to call GetSEMStageData method
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetPositionXY : failed to call GetSEMStageData method."));
-			return FALSE;
+			if (!m_pBrukerImplPtr->GetSEMStageData(dPositionX, dPositionY, dPositionZ, dTilt, dRotation))
+			{
+				// failed to call GetSEMStageData method
+				LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetPositionXY : failed to call GetSEMStageData method."));
+				return FALSE;
+			}
 		}
 
 		// need to convert a_dPositionX, a_dPositionY from OTS position to SEM position

+ 1 - 0
OTSCPP/OTSControl/Bruker/OTSSEMBruker.h

@@ -67,6 +67,7 @@ namespace OTSController {
 
 		std::shared_ptr<COTSBrukerImpl> m_pBrukerImplPtr;
 		BOOL m_bConnected;
+		double dPositionX=0, dPositionY=0, dPositionZ=0, dTilt=0, dRotation=0;
 	};
 
 }

+ 4 - 62
OTSCPP/OTSControl/Bruker/OTSScanBrucker.cpp

@@ -28,31 +28,6 @@ namespace OTSController {
 	BOOL COTSScanBrucker::Init()
 	{
 
-		// create bruker initialize controller
-		//if (!m_pBrukerImpl)
-		//{
-		//	// get bruker controller
-		//m_pBrukerImpl = COTSBrukerImpl::GetInstance();
-		//}
-
-		//// initialize bruker scanner controller
-		//ASSERT(m_pBrukerImpl);
-		//if (!m_pBrukerImpl)
-		//{
-		//	// failed to create bruker controller
-		//	LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::Init: failed to create bruker controller."));
-		//	return FALSE;
-		//}
-
-		// initialize bruker controller (as scanner)
-		//if (!m_pBrukerImpl->Init(CONTROL_TYPE::BRUKER_SCAN))
-		//{
-		//	// failed to call bruker controller init method
-		//	LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::Init: failed to failed to call bruker controller init method."));
-		//	return FALSE;
-		//}
-
-		// ok, return TRUE
 		return TRUE;
 	}
 
@@ -63,16 +38,6 @@ namespace OTSController {
 		// BSE image
 		CBSEImgPtr poBSEImgPtr = nullptr;
 
-
-		// check bruker controller
-		ASSERT(m_pBrukerImpl);
-		if (!m_pBrukerImpl)
-		{
-			// invalid m_pBrukerImpl
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::AcquireBSEImage: invalid m_pBrukerImpl."));
-			return poBSEImgPtr;
-		}
-
 		// acquire BSE image
 		poBSEImgPtr = m_pBrukerImpl->AcquireImage();
 
@@ -93,14 +58,7 @@ namespace OTSController {
 	{
 
 
-		// check bruker controller
-		ASSERT(m_pBrukerImpl);
-		if (!m_pBrukerImpl)
-		{
-			// invalid m_pBrukerImpl
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::MoveBeamTo: invalid m_pBrukerImpl."));
-			return FALSE;
-		}
+		
 
 		// move beam to point
 		if (!m_pBrukerImpl->ImageSetPoint(a_beamPos))
@@ -121,18 +79,11 @@ namespace OTSController {
 	{
 
 
-		// check bruker controller
-		ASSERT(m_pBrukerImpl);
-		if (!m_pBrukerImpl)
-		{
-			// invalid m_pBrukerImpl
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::SetImageSize: invalid m_pBrukerImpl."));
-			return FALSE;
-		}
+		
 
 		// call ImageGetConfiguration to get the existing dimensions, dwell time and enabled channels
-		DWORD nWidth = 0;
-		DWORD nHeight = 0;
+		/*DWORD nWidth = 0;
+		DWORD nHeight = 0;*/
 		DWORD nAverage;
 		BYTE bCh1;
 		BYTE bCh2;
@@ -161,15 +112,6 @@ namespace OTSController {
 	BOOL COTSScanBrucker::SetDwellTime(long a_nDwellTime)
 	{
 
-		// check bruker controller
-		ASSERT(m_pBrukerImpl);
-		if (!m_pBrukerImpl)
-		{
-			// invalid m_pBrukerImpl
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSScanBrucker::SetDwellTime: invalid m_pBrukerImpl."));
-			return FALSE;
-		}
-
 		// call ImageGetConfiguration to get the existing dimensions, dwell time and enabled channels
 		DWORD nWidth = 0;
 		DWORD nHeight = 0;

+ 2 - 1
OTSCPP/OTSControl/Bruker/OTSScanBrucker.h

@@ -40,7 +40,8 @@ namespace OTSController {
 
 		
 	private:
-		
+		DWORD nWidth = 0;
+		DWORD nHeight = 0;
 		std::shared_ptr<COTSBrukerImpl> m_pBrukerImpl;
 	};
 

+ 1 - 1
OTSIncAMeasureApp/0-OTSModel/OTSDataType/otsdataconst.cs

@@ -58,7 +58,7 @@ namespace OTSDataType
        public const String FILE_TITLE_SPLIT = ":";
 
        public const String LINE_END = "\r\n";
-       public static int[] DWELLTIME_BRUKER_VALUES = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 };
+       public static int[] DWELLTIME_BRUKER_VALUES = { 1, 1, 4, 8, 16, 32, 64, 128, 256, 512 };
 
         // IMAGE_RESOLUTION of BRUKER
         public const int RESOLUTION_ID_MIN = 0;

+ 0 - 7
OTSIncAMeasureApp/1-OTSMeasure/Measure/3-MeasureFlow/CSmplMeasure.cs

@@ -762,18 +762,11 @@ namespace OTSModelSharp
 
                     }
 
-                    //m_SemHardwareMgr.SetScanExternal(false);
-
-
-
-
                     m_Sample.GetMsrStatus().SetStatus(OTS_MSR_SAMPLE_STATUS.SUCCESSED);
 
 
                     curFld.SetIsMeasureComplete(true);
 
-                   
-                 
                     log.Info("Begin to classify particles! particle num:" + curFld.GetListAnalysisParticles().Count);
                     ClassifyFieldParticles(curFld);
                     //start db save