Преглед на файлове

add emergency STOP_ACQUISITION and xraylimit function.

gsp преди 3 години
родител
ревизия
a96a8f4174

+ 7 - 0
OTSCPP/OTSClrInterface/ControlClr/OTSControlFunExport.h

@@ -735,6 +735,13 @@ namespace OTSCLRINTERFACE
 
 			return bRet;
 		}
+		bool StopXrayAcquisition()
+		{
+			bool bRet = (bool)m_pEDS->StopXrayAcquistion();
+
+			return bRet;
+		
+		}
 	private:
 		COTSControlFunExport()
 		{

+ 4 - 4
OTSCPP/OTSControl/Bruker/OTSBrukerImpl.cpp

@@ -1911,7 +1911,7 @@ BOOL COTSBrukerImpl::IsSpectrumMeterRunning(BOOL& a_bRunning)
 
 // call StopSpectrumMeter
 // return true if success
-BOOL COTSBrukerImpl::StopSpectrumMeter(void)
+BOOL COTSBrukerImpl::StopSpectrumMeasure(void)
 {
 	// safety check
 	ASSERT(m_pBrukerDllHandle);
@@ -2450,7 +2450,7 @@ BOOL COTSBrukerImpl::SpectrumLifeTimeMeasurement(DWORD a_nLifeTime)
 	} while (nEnd >= nStart && nEnd <= (nStart + a_nLifeTime + 1) && bRunning);
 
 	// force to stop if system still busy
-	if (bRunning && !StopSpectrumMeter())
+	if (bRunning && !StopSpectrumMeasure())
 	{
 		// error, failed to call stop StopSpectrumMeter method
 		LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::SpectrumLifeTimeMeasurement: failed to call StopSpectrumMeter method."));
@@ -2513,7 +2513,7 @@ BOOL COTSBrukerImpl::SpectrumRealTimeMeasurement(DWORD a_nRealTime)
 	} while (nEnd >= nStart && nEnd <= (nStart + a_nRealTime + 1) && bRunning);
 
 	// force to stop if system still busy
-	if (bRunning && !StopSpectrumMeter())
+	if (bRunning && !StopSpectrumMeasure())
 	{
 		// error failed to call StopSpectrumMeter method
 		LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::SpectrumRealTimeMeasurementCall: failed to call StopSpectrumMeter method."));
@@ -2613,7 +2613,7 @@ BOOL COTSBrukerImpl::SpectrumCountsMeasurement(DWORD a_nTotalCounts, int a_nTime
 	} while (bRunning);
 
 	// force to stop if system still busy
-	if (bRunning && !StopSpectrumMeter())
+	if (bRunning && !StopSpectrumMeasure())
 	{
 		// error, failed to call StopSpectrumMeter method
 		LogErrorTrace(__FILE__, __LINE__, _T("COTSBrukerImpl::SpectrumCountsMeasurement: failed to call StopSpectrumMeter method."));

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

@@ -126,7 +126,7 @@ namespace OTSController {
 		// spectrum measurement 
 		BOOL StartSpectrumMeasurement();
 		BOOL IsSpectrumMeterRunning(BOOL& a_bRunning);
-		BOOL StopSpectrumMeter(void);
+		BOOL StopSpectrumMeasure(void);
 		BOOL ReadSpectrum(long* a_pnCounts, DWORD a_nBufferSize);
 
 		// get quantification method name

+ 10 - 1
OTSCPP/OTSControl/Bruker/OTSEDSBrucker.cpp

@@ -132,7 +132,16 @@ namespace OTSController {
 		// ok, return TRUE
 		return TRUE;
 	}
-
+	BOOL COTSEDSBrucker::StopXrayAcquistion()
+	{
+		ASSERT(m_pBrukerImpl);
+		if (!m_pBrukerImpl)
+		{
+			LogErrorTrace(__FILE__, __LINE__, _T(" invalid m_pBrukerImpl."));
+			return FALSE;
+		}
+		return m_pBrukerImpl->StopSpectrumMeasure();
+	}
 	// get live time
 	float COTSEDSBrucker::GetLiveTime()
 	{

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

@@ -50,6 +50,7 @@ namespace OTSController {
 		virtual BOOL GetXRayByFeatures(std::vector<CPosXrayPtr>& a_listXRayPoints,
 			std::vector<BrukerFeature>& a_listFeatures,
 			const DWORD a_nXRayAQTime) override;
+		virtual BOOL COTSEDSBrucker::StopXrayAcquistion()override;
 		/*virtual BOOL GetXRayByFeaturesFromMultiPoint(std::vector<CPosXrayPtr>& a_listXRayPoints,
 			std::vector<std::vector<BrukerSegment>>& a_listFeatures,
 			const DWORD a_nXRayAQTime) override;*/

+ 2 - 1
OTSCPP/OTSControl/OTSEDSBase.h

@@ -77,7 +77,7 @@ namespace OTSController
 		virtual BOOL CollectSpectrum(DWORD a_nMilliseconds) = 0;
 		virtual BOOL CollectSpectrum(DWORD a_nMilliseconds, const CPoint& a_oPoint) = 0;
 		virtual BOOL CollectSpectrum(DWORD a_nMilliseconds, long* a_pCounts, DWORD a_nBufferSize) = 0;
-
+		virtual BOOL StopXrayAcquistion() = 0;
 		// quantify spectrum
 
 		// Get x-Ray data
@@ -100,6 +100,7 @@ namespace OTSController
 		virtual BOOL GetXRayByFeatures(std::vector<CPosXrayPtr>& a_listXRayPoints,
 			std::vector<BrukerFeature>& a_listFeatures,
 			const DWORD a_nXRayAQTime) = 0;
+
 		BOOL GetXRayByFeaturesFromMultiPoint(std::vector<CPosXrayPtr>& a_listXRayPoints,
 			std::vector<std::vector<BrukerSegment>>& a_listFeatures,
 			const DWORD a_nXRayAQTime);

+ 11 - 0
OTSCPP/OTSControl/Oxford/OTSEDSOxford.cpp

@@ -176,6 +176,17 @@
 			return TRUE;
 		}
 
+		BOOL COTSEDSOxford::StopXrayAcquistion()
+		{
+			ASSERT(m_oxfordImpl);
+			if (!m_oxfordImpl)
+			{
+				LogErrorTrace(__FILE__, __LINE__, _T("COTSEDSOxford::GetXRayByFeatures: invalid m_oxfordImpl."));
+				return FALSE;
+			}
+			m_oxfordImpl->StopCollectXrayData();
+		}
+
 		// Quatification
 		void COTSEDSOxford::SetQuantification(BOOL a_bQuantification)
 		{

+ 2 - 1
OTSCPP/OTSControl/Oxford/OTSEDSOxford.h

@@ -47,7 +47,8 @@
 			virtual BOOL GetXRayByPoints(std::vector<CPosXrayPtr>& a_vXRayPoints, const DWORD a_nXRayAQTime)override;
 			virtual BOOL GetXRayByFeatures(std::vector<CPosXrayPtr>& a_listXRayPoints,
 				std::vector<BrukerFeature>& a_listFeatures,
-				const DWORD a_nXRayAQTime) override;
+				const DWORD a_nXRayAQTime) override; 
+			virtual BOOL StopXrayAcquistion() override;
 			/*virtual BOOL GetXRayByFeaturesFromMultiPoint(std::vector<CPosXrayPtr>& a_listXRayPoints,
 				std::vector<std::vector<BrukerSegment>>& a_listFeatures,
 				const DWORD a_nXRayAQTime) override;*/

+ 16 - 0
OTSCPP/OTSControl/Oxford/OTSOxfordImpl.cpp

@@ -370,6 +370,22 @@
         return false;
     }
 
+	bool OxfordImpl::StopCollectXrayData()
+	{
+		if (m_bInit)
+		{
+			if (!ManagedGlobals::oxfordController->StopXrayCollecting())
+			{
+				LogErrorTrace(__FILE__, __LINE__, _T("stopxraycollecting command failed."));
+				return false;
+			}
+
+			return true;
+		}
+
+		return false;
+	}
+
     
 	
 

+ 1 - 1
OTSCPP/OTSControl/Oxford/OTSOxfordImpl.h

@@ -59,7 +59,7 @@
 
         bool CollectXrayData(const long a_nAcTime, long* a_pnCounts, DWORD a_nBufferSize);
         bool CollectXrayDataAtPos(const double a_dPosX, const double a_dPosY, const long a_nAcTime, long* a_pnCounts, DWORD a_nBufferSize);
-        
+        bool StopCollectXrayData();
 
         bool SetBeamPosition(const double a_dPosX, const double a_dPosY);
         bool SetScanSpeed(const long a_nMilliseconds);

+ 1 - 1
OTSCPP/OTSControl/Oxford/OxfordWrapper/OxfordControllerWrapper.cpp

@@ -153,7 +153,7 @@ void OxfordControllerWrapper::ControllerThreadFunction()
 			if (edsController && _oxfordControllerData.m_pSpectrumData)
 			{
 				edsController->BeginMultipleAcquisition();
-				LogErrorTrace(__FILE__,__LINE__,_T("BeginMultipleAcquisition...(single point)"));
+				LogTrace(__FILE__,__LINE__,_T("BeginMultipleAcquisition...(single point)"));
 
 				if (SetBeamPosition(_oxfordControllerData.m_dBeamPositionX, _oxfordControllerData.m_dBeamPositionY))
 				{

+ 2 - 1
OTSCPP/OTSControl/Oxford/OxfordWrapper/OxfordControllerWrapper.h

@@ -186,6 +186,7 @@ public:
 	{
 		return m_bIsStageUpdated;
 	}
+	bool StopXrayCollecting();
 protected:
 
 	bool GetPositionXYFromController(double& a_dPosX, double& a_dPosY);
@@ -234,7 +235,7 @@ protected:
 	bool IsMicroscopeStageConnected();
 
 	bool StartXrayCollecting(const long a_nAcTime);
-	bool StopXrayCollecting();
+	
 	void OnXrayAcquisitionFinished(Object^ sender, OINA::Extender::Acquisition::AcquisitionFinishedEventArgs<OINA::Extender::Data::Ed::IEdSpectrum^>^ e);
 	void OnXrayChordlistFinished(Object^ sender, OINA::Extender::Acquisition::AcquisitionFinishedEventArgs<OINA::Extender::Data::Ed::IEdMap^>^ e);
 	bool ConvertSpectrumData(IEdSpectrum^ a_spectrum, long* a_pSpectrumData, int a_nBufferSize);

+ 4 - 1
OTSCPP/OTSControl/Simulate/OTSEDSSim.cpp

@@ -88,7 +88,10 @@ namespace OTSController {
 		return TRUE;
 		
 	}
-
+	BOOL COTSEDSSim::StopXrayAcquistion()
+	{
+		return true;
+	}
 	// get live time
 	float COTSEDSSim::GetLiveTime()
 	{

+ 1 - 0
OTSCPP/OTSControl/Simulate/OTSEDSSim.h

@@ -33,6 +33,7 @@ namespace OTSController {
 
 		// Set Amp Time Index for all detectors
 		virtual BOOL SetAmpTimeIndex(long) override { return TRUE; }
+		virtual BOOL StopXrayAcquistion() override;
 		// get live time
 		virtual float GetLiveTime(void) override;
 

+ 18 - 1
OTSIncAMeasureApp/0-OTSModel/OTSDataType/COTSXRayParam.cs

@@ -34,6 +34,7 @@ namespace OTSDataType
         const double DEFAULE_XRAY_QUANTIFY_MINSIZE = 50;
 
         const int DEFAULE_FASTXRAYTIME = 100;
+        const int Default_Xray_Limit = 50;
         private OTS_X_RAY_SCAN_MODE m_nScanMode;
 
         private OTS_IMAGE_SCANSPEED_OPTIONS m_nAnalySpeed;
@@ -45,6 +46,8 @@ namespace OTSDataType
 
         private bool m_nUsingXray;
 
+        private int m_XrayLimit;
+
         void Init()
         {
             m_nScanMode = DEFAULE_XRAY_SCAN_MODE;
@@ -55,6 +58,7 @@ namespace OTSDataType
             m_nMidAnalyAQTime = DEFAULE_XRAY_ANALY_MID_TIME;
             m_nQutantifyMinSize = DEFAULE_XRAY_QUANTIFY_MINSIZE;
             m_nFastXrayTime = DEFAULE_FASTXRAYTIME;
+            m_XrayLimit = Default_Xray_Limit;
         }
         public COTSXRayParam()
         {
@@ -75,6 +79,7 @@ namespace OTSDataType
             m_nFastXrayTime = a_oSource.m_nFastXrayTime;
 
             m_nUsingXray = a_oSource.m_nUsingXray;
+            m_XrayLimit = a_oSource.m_XrayLimit;
         }
         // copy constructor
         public COTSXRayParam(COTSXRayParam a_oSource)
@@ -131,8 +136,12 @@ namespace OTSDataType
         {
             m_nFastXrayTime = a_nFastXrayTime;
         }
+        public int GetXrayLimit() { return m_XrayLimit; }
+        public void SetXrayLimit(int a_xrayLimit)
+        {
+            m_XrayLimit = a_xrayLimit;
+        }
 
- 
         public bool GetUsingXray() { return m_nUsingXray; }
         public void SetUsingXray(bool a_nUsingXray)
         {
@@ -152,6 +161,8 @@ namespace OTSDataType
 
             xBool xnUsingXray = new xBool();
 
+            xInt xXrayLimit = new xInt();
+
     
             Slo slo = new Slo();
 
@@ -167,6 +178,8 @@ namespace OTSDataType
 
             slo.Register("UsingXray", xnUsingXray);
 
+            slo.Register("XrayLimit", xXrayLimit);
+
 
 
 
@@ -184,6 +197,8 @@ namespace OTSDataType
 
                 xnUsingXray.AssignValue(m_nUsingXray);
 
+                xXrayLimit.AssignValue(m_XrayLimit);
+
                 slo.Serialize(true, classDoc, rootNode);
             }
             else
@@ -201,6 +216,8 @@ namespace OTSDataType
                 m_nQutantifyMinSize = xQuantifyMinSize.value();
 
                 m_nUsingXray = xnUsingXray.value();
+
+                m_XrayLimit = xXrayLimit.value();
             }
         }
     }