Przeglądaj źródła

optimize bruker driver

beijing 1 rok temu
rodzic
commit
a2ef08f229

+ 2 - 2
Bin/x64/Debug/Config/ProData/HardwareConfig.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <XMLData PathName="HardwareConfig.xml" ID="1">
-  <Member RegName="SemControllerName" Value="OffLine" ImageInputSources="BSE" />
-  <Member RegName="EDSName" Value="OffLine" DelayQuantify="true" />
+  <Member RegName="SemControllerName" Value="Bruker" ImageInputSources="BSE" />
+  <Member RegName="EDSName" Value="Bruker" DelayQuantify="true" />
   <Member RegName="BrukerDllVersion" Version="Bruker.API.Esprit64.dll" />
   <Member RegName="FEIIP" Value="192.168.0.1" />
   <Member RegName="FEIPORT" Value="7520" />

+ 2 - 8
OTSCPP/OTSClrInterface/ControlClr/OTSControlFunExport.h

@@ -36,17 +36,11 @@ namespace OTSCLRINTERFACE
 
 		~COTSControlFunExport()
 		{
-			
-
-
-			
+		
 		}
 		!COTSControlFunExport()
 		{
-			
-
-
-
+		
 		}
 		
 		

+ 66 - 40
OTSCPP/OTSControl/Bruker/OTSBrukerImpl.cpp

@@ -81,26 +81,26 @@ namespace OTSController {
 		}
 
 		// initialized? 
-		if (!m_bConnected)
-		{
-
-		
-			if (QueryBrukerServers() && OpenClient())
-			{
-				LogTrace(__FILE__, __LINE__, "open bruker client success!");
-				if (!m_psRTSpectrumBuffer)
-				{
-					m_psRTSpectrumBuffer.reset(new char[(int)BRUKER_PARAM::RT_SPECTRUM_BUFFER_SIZE]);
-				}
-				memset(m_psRTSpectrumBuffer.get(), 0, (int)BRUKER_PARAM::RT_SPECTRUM_BUFFER_SIZE);
-				// ok, return true
-				m_bConnected = true;
-			}
-			else
-			{
-				m_bConnected = false;
-			}
-		}
+		//if (!m_bConnected)
+		//{
+
+		//
+		//	if (QueryBrukerServers() && OpenClient())
+		//	{
+		//		LogTrace(__FILE__, __LINE__, "open bruker client success!");
+		//		if (!m_psRTSpectrumBuffer)
+		//		{
+		//			m_psRTSpectrumBuffer.reset(new char[(int)BRUKER_PARAM::RT_SPECTRUM_BUFFER_SIZE]);
+		//		}
+		//		memset(m_psRTSpectrumBuffer.get(), 0, (int)BRUKER_PARAM::RT_SPECTRUM_BUFFER_SIZE);
+		//		// ok, return true
+		//		m_bConnected = true;
+		//	}
+		//	else
+		//	{
+		//		m_bConnected = false;
+		//	}
+		//}
 		
 
 				// control type?
@@ -124,10 +124,10 @@ namespace OTSController {
 				case CONTROL_TYPE::BRUKER_XRAY:
 				{
 					// check detector states and set m_nSPU
-					if (!SetSPU())
+					/*if (!SetSPU())
 					{
 						return FALSE;
-					}
+					}*/
 
 					m_bXRAyControllerInst = TRUE;
 				}
@@ -143,6 +143,32 @@ namespace OTSController {
 				}
 			
 		
+		return TRUE;
+	}
+
+	BOOL COTSBrukerImpl::Connect()
+	{
+		if (!m_bConnected)
+		{
+
+
+			if (QueryBrukerServers() && OpenClient())
+			{
+				LogTrace(__FILE__, __LINE__, "open bruker client success!");
+				if (!m_psRTSpectrumBuffer)
+				{
+					m_psRTSpectrumBuffer.reset(new char[(int)BRUKER_PARAM::RT_SPECTRUM_BUFFER_SIZE]);
+				}
+				memset(m_psRTSpectrumBuffer.get(), 0, (int)BRUKER_PARAM::RT_SPECTRUM_BUFFER_SIZE);
+				// ok, return true
+				m_bConnected = true;
+			}
+			else
+			{
+				m_bConnected = false;
+			}
+		}
+
 		return m_bConnected;
 	}
 
@@ -173,7 +199,7 @@ namespace OTSController {
 			
 			a_bConnected = FALSE;
 
-				LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::CheckConnection: no hardware connected."));
+				//LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::CheckConnection: no hardware connected."));
 
 			return FALSE;
 		}
@@ -1210,7 +1236,7 @@ namespace OTSController {
 		BOOL bStartNew = TRUE;
 		BOOL bGUI = FALSE;
 		
-		BOOL bRet = OpenClient(m_psServerName.get(), "edx", "edx", static_cast<BYTE>(bStartNew), static_cast<BYTE>(bGUI), m_nClientID);
+		auto bRet = BrukerDll::OpenClient(m_psServerName.get(), "edx", "edx", static_cast<BYTE>(bStartNew), static_cast<BYTE>(bGUI), m_nClientID);
 		
 		if (!bRet)
 		{
@@ -1237,7 +1263,7 @@ namespace OTSController {
 			{
 				// second attempt to open client 
 				
-				bRet = OpenClient(m_psServerName.get(), "edx", "edx", static_cast<BYTE>(bStartNew), static_cast<BYTE>(bGUI), m_nClientID);
+				bRet = BrukerDll::OpenClient(m_psServerName.get(), "edx", "edx", static_cast<BYTE>(bStartNew), static_cast<BYTE>(bGUI), m_nClientID);
 			
 				if (!bRet)
 				{
@@ -1254,21 +1280,21 @@ namespace OTSController {
 		// return method return flag
 		return bRet;
 	}
-	BOOL COTSBrukerImpl::OpenClient(char* a_sServerName, char* a_sUserName, char* a_sPassword, BYTE a_nStartNew, BYTE a_bGUI, uint32_t& a_nClientID)
-	{
-	
-
-		// open client
-		int32_t bRet = BrukerDll::OpenClient(a_sServerName, a_sUserName, a_sPassword, a_nStartNew, a_bGUI, a_nClientID);
-		if (bRet!=0)
-		{
-			
-				LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::OpenClient: failed to open client dll."));
-				return false;
-		}
-
-		return true;
-	}
+	//BOOL COTSBrukerImpl::OpenClient(char* a_sServerName, char* a_sUserName, char* a_sPassword, BYTE a_nStartNew, BYTE a_bGUI, uint32_t& a_nClientID)
+	//{
+	//
+
+	//	// open client
+	//	int32_t bRet = BrukerDll::OpenClient(a_sServerName, a_sUserName, a_sPassword, a_nStartNew, a_bGUI, a_nClientID);
+	//	if (bRet!=0)
+	//	{
+	//		
+	//			LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::OpenClient: failed to open client dll."));
+	//			return false;
+	//	}
+
+	//	return true;
+	//}
 
 	// check detector states and set m_nSPU                    // Bruker四个有一个盒子,盒子共接4个探头
 	BOOL COTSBrukerImpl::SetSPU(void)

+ 9 - 4
OTSCPP/OTSControl/Bruker/OTSBrukerImpl.h

@@ -46,6 +46,11 @@ namespace OTSController {
 		
 		// initialization
 		BOOL Init(CONTROL_TYPE a_nControlType, BOOL a_b32Bite = TRUE);
+
+		BOOL Connect();
+		/// set SPU (used for send command to multi-detector system) value
+		BOOL SetSPU(void);
+
 		// check connection
 		BOOL CheckConnection(BOOL& a_bConnected);
 		BOOL DisConnect();
@@ -139,6 +144,7 @@ namespace OTSController {
 		BOOL QuantifyPosXrayPointOnLine(CPosXrayPtr a_vXRayPart);//delay quantifying 
 
 	private:
+
 		BOOL ReadSpectrum(long* a_pnCounts, DWORD a_nBufferSize);
 		BOOL CollectXRayPoints(CPosXrayList& a_listXrayPois, DWORD a_nACTimeMS);
 		BOOL CollectXRayPointsByFeatures(std::vector<CPosXray*>& a_vXPoints, std::vector<BrukerFeature>& a_vFeatures, DWORD a_nACTimeMS);
@@ -154,6 +160,7 @@ namespace OTSController {
 		BOOL IsSpectrumMeasureRunning(BOOL& a_bRunning);
 		BOOL SetXRayPointsByFeature(CPosXrayList& a_vXPoints, const DWORD a_nACTimeMS);
 		// collect x-ray
+		
 		// close client
 		BOOL CloseClient(void);//there's no need to call from out ,the single instance destruction method will call it automatically.
 		
@@ -192,12 +199,10 @@ namespace OTSController {
 
 		BOOL CheckDetectorState(long a_nDetectorId, BOOL& a_bState, uint32_t& a_nMaxEnergy);
 
-		/// set SPU (used for send command to multi-detector system) value
-		BOOL SetSPU(void);
-
+	
 		// open client
 		BOOL OpenClient(void);
-		BOOL OpenClient(char*, char*, char*, BYTE, BYTE, uint32_t&);
+		//BOOL OpenClient(char*, char*, char*, BYTE, BYTE, uint32_t&);
 
 	
 

+ 30 - 20
OTSCPP/OTSControl/Bruker/OTSEDSBrucker.cpp

@@ -6,7 +6,14 @@ namespace OTSController {
 	// constructor
 	COTSEDSBrucker::COTSEDSBrucker(void)
 	{
-		Init();
+		m_pBrukerImpl = COTSBrukerImpl::GetInstance();
+		if (!m_pBrukerImpl->Init(CONTROL_TYPE::BRUKER_XRAY))
+		{
+			// failed to initialize bruker controller 
+			LogErrorTrace(__FILE__, __LINE__, _T("COTSEDSBrucker::Init: failed to initialize bruker controller."));
+			//return FALSE;
+		}
+
 	}
 
 	// destructor
@@ -22,28 +29,31 @@ namespace OTSController {
 	BOOL COTSEDSBrucker::Init()
 	{
 		// create bruker controller if necessary
-		if (!m_pBrukerImpl)
-		{
-			// create bruker controller
-			m_pBrukerImpl = COTSBrukerImpl::GetInstance();
-		}
-
-		// check if bruker controller is alright
-		ASSERT(m_pBrukerImpl);
-		if (!m_pBrukerImpl)
-		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSEDSBrucker::Init: failed to create bruker controller."));
-			return FALSE;
-		}
-
-		// initialize bruker controller (as xray controller)
-		if (!m_pBrukerImpl->Init(CONTROL_TYPE::BRUKER_XRAY))
+		//if (!m_pBrukerImpl)
+		//{
+		//	// create bruker controller
+		//	m_pBrukerImpl = COTSBrukerImpl::GetInstance();
+		//}
+
+		//// check if bruker controller is alright
+		//ASSERT(m_pBrukerImpl);
+		//if (!m_pBrukerImpl)
+		//{
+		//	LogErrorTrace(__FILE__, __LINE__, _T("COTSEDSBrucker::Init: failed to create bruker controller."));
+		//	return FALSE;
+		//}
+
+		//// initialize bruker controller (as xray controller)
+		//if (!m_pBrukerImpl->Init(CONTROL_TYPE::BRUKER_XRAY))
+		//{
+		//	// failed to initialize bruker controller 
+		//	LogErrorTrace(__FILE__, __LINE__, _T("COTSEDSBrucker::Init: failed to initialize bruker controller."));
+		//	return FALSE;
+		//}
+		if (!m_pBrukerImpl->SetSPU())
 		{
-			// failed to initialize bruker controller 
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSEDSBrucker::Init: failed to initialize bruker controller."));
 			return FALSE;
 		}
-
 		// ok, return TRUE
 		return TRUE;
 	}

+ 36 - 23
OTSCPP/OTSControl/Bruker/OTSSEMBruker.cpp

@@ -8,6 +8,14 @@ namespace OTSController {
 		: m_bConnected(FALSE)
 	{
 		
+			// get bruker initialize controller
+			m_pBrukerImplPtr = COTSBrukerImpl::GetInstance();
+			LogTrace(__FILE__, __LINE__, _T("Init BrukerImpl..."));
+			if (!m_pBrukerImplPtr->Init(CONTROL_TYPE::BRUKER_SEM))
+			{
+				LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Connect: failed to call init."));
+				//return FALSE;
+			}
 	}
 
 	// destructor
@@ -27,39 +35,44 @@ namespace OTSController {
 	BOOL COTSSEMBruker::Connect()
 	{
 		// doing nothing if m_pBrukerImplPtr is not nullptr 
-		if (!m_pBrukerImplPtr)
-		{
-			// get bruker initialize controller
-			m_pBrukerImplPtr = COTSBrukerImpl::GetInstance();
-		}
+		//if (!m_pBrukerImplPtr)
+		//{
+		//	// get bruker initialize controller
+		//	m_pBrukerImplPtr = COTSBrukerImpl::GetInstance();
+		//}
 
 		// make sure m_pBrukerImplPtr is OK
-		if (m_pBrukerImplPtr)
-		{
+		/*if (m_pBrukerImplPtr)
+		{*/
 			// initialize the bruker controller as a SEM controller
-			LogTrace(__FILE__, __LINE__, _T("Init BrukerImpl..."));
-			if (m_pBrukerImplPtr->Init(CONTROL_TYPE::BRUKER_SEM))
+		
+			
+			// check connection
+		m_pBrukerImplPtr->CheckConnection(m_bConnected);
+			/*if (!m_bConnected)
 			{
-				// check connection
-				if (!m_pBrukerImplPtr->CheckConnection(m_bConnected))
-				{
-					LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Connect: failed to call init."));
-					m_pBrukerImplPtr.reset();
-					m_bConnected = FALSE;
-					return FALSE;
-				}
-			}
+
+				LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Connect: failed to call init."));
+				m_pBrukerImplPtr.reset();
+				m_bConnected = FALSE;
+				return FALSE;
+			}*/
 
 			// connection is ok?
 			if (!m_bConnected)
 			{
-				// connection 
-				LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Connect(): connecting failed."));
-				m_pBrukerImplPtr.reset();
+				if (!m_pBrukerImplPtr->Connect())
+				{
+					// connection 
+					LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Connect(): connecting failed."));
+					m_pBrukerImplPtr.reset();
+					return FALSE;
+				}
+				
 		
-				return FALSE;
+			
 			}
-		}
+		//}
 
 		// ok, return TRUE
 		return TRUE;

+ 27 - 21
OTSCPP/OTSControl/Bruker/OTSScanBrucker.cpp

@@ -8,7 +8,13 @@ namespace OTSController {
 	COTSScanBrucker::COTSScanBrucker()
 		: m_pBrukerImpl(nullptr)
 	{
-		Init();
+		m_pBrukerImpl = COTSBrukerImpl::GetInstance();
+		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."));
+			
+		}
 	}
 
 	// destructor
@@ -23,28 +29,28 @@ namespace OTSController {
 	{
 
 		// 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;
-		}
+		//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;
-		}
+		//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;

+ 1 - 1
OTSIncAMeasureApp/5-OTSMeasureStatuImageFun/OTSMeasureStatusWindow.cs

@@ -1439,7 +1439,7 @@ namespace OTSMeasureApp
             IEDSController m_EDSHardwareMgr = EDSController.GetEDSController(m_iWidth, m_iHeight, expC);
             //SemController m_SEMHardwareMgr = SemController.GetSEMController();
             //1.连接电镜
-            if (m_EDSHardwareMgr.Init())
+            if (m_EDSHardwareMgr.Connect())
             {
                 
                     COTSMsrPrjResultData cProjMgr = m_MeasureAppForm.m_ProjParam.GetResultData();

+ 14 - 14
OTSIncAMeasureApp/ServiceCenter/CPP(Bruker)API/EDSController.cs

@@ -290,7 +290,7 @@ namespace OTSModelSharp.ServiceCenter
         }
 
 
-        public bool Init()
+        public bool Connect()
         {
             if (!eds.IsConnected())
             {
@@ -303,21 +303,21 @@ namespace OTSModelSharp.ServiceCenter
 
       
 
-        public bool Connect()
-        {
+        //public bool Connect()
+        //{
            
-                if (!eds.Init())
-                {
-                    return false;
-                }
-                if (eds.IsConnected())
-                {
-                    return true;
-                }
-
-                return eds.ConncetSem();
+        //        //if (!eds.Init())
+        //        //{
+        //        //    return false;
+        //        //}
+        //        if (eds.IsConnected())
+        //        {
+        //            return true;
+        //        }
+
+        //        return eds.ConncetSem();
            
-        }
+        //}
 
         public EDSTYPE GetEDSType()
         {

+ 4 - 4
OTSIncAMeasureApp/ServiceCenter/CPP(Bruker)API/SemController.cs

@@ -52,10 +52,10 @@ namespace OTSModelSharp.ServiceCenter
         public bool Connect()
         {
   
-                if (!hw.Init())
-                {
-                    return false;
-                }
+                //if (!hw.Init())
+                //{
+                //    return false;
+                //}
                 if (hw.IsConnected())
                 {
                     return true;

+ 2 - 2
OTSIncAMeasureApp/ServiceCenter/FEIAutoScript/FEIEDSController.cs

@@ -23,7 +23,7 @@ namespace OTSMeasureApp.ServiceCenter
             ApiClass = FEISemController.GetApiClassInstance();
 
             SetAnalyExpCount(MaxCounts);
-            Init();
+            Connect();
         }
         public bool GetXRayByFeatures(List<COTSParticleClr> a_listParticles, double a_nXRayAQTime, bool a_bElementInfo)
         {
@@ -106,7 +106,7 @@ namespace OTSMeasureApp.ServiceCenter
            
         }
 
-        public bool Init()
+        public bool Connect()
         {
             string FEIIP = FileHelper.GetXMLInformations("FEIIP");
             string FEIPORT = FileHelper.GetXMLInformations("FEIPORT");

+ 1 - 1
OTSIncAMeasureApp/ServiceCenter/IMeasureHardware.cs

@@ -59,7 +59,7 @@ namespace OTSModelSharp.ServiceCenter
 
     public interface IEDSController
     {
-        bool Init();
+        bool Connect();
         bool GetXRayByFeatures(List<COTSParticleClr> a_listParticles,  double a_nXRayAQTime, bool a_bElementInfo /*= FALSE*/);//这里将DWORD转成了Double类型,因为在后续调用时还有DWORD强制转换
         bool GetXRayByParts(List<COTSParticleClr> a_listParticles, uint a_nXRayAQTime, bool a_bElementInfo /*= FALSE*/);
         bool CollectSpectrum(uint a_nXRayAQTime, ref uint[] a_XrayData);

+ 1 - 1
OTSIncAMeasureApp/ServiceCenter/OxfordExtender/OxfordEDSController.cs

@@ -137,7 +137,7 @@ namespace OTSMeasureApp.ServiceCenter
            
         }
 
-        public bool Init()
+        public bool Connect()
         {
             
          

+ 2 - 2
OTSSysMgrApp/ControllerSettingForm.cs

@@ -67,7 +67,7 @@ namespace OTSSysMgrApp
             if (!ConnectionState)
             {
                 //连接电镜设置
-                DisConnResult = m_EDSHardwareMgr.Init();
+                DisConnResult = m_EDSHardwareMgr.Connect();
             }
             if (DisConnResult)
             {
@@ -87,7 +87,7 @@ namespace OTSSysMgrApp
         {
             bool initResult = false;
             //线程调用 加载
-            initResult = m_EDSHardwareMgr.Init();
+            initResult = m_EDSHardwareMgr.Connect();
             return initResult;
         }