Browse Source

fix problem when MoveSEMToPoint.(delay 1000ms every time when read position data and only try 10 times)

gsp 3 years ago
parent
commit
013b7f2e1d

+ 15 - 4
OTSCPP/OTSControl/OTSSemBase.cpp

@@ -30,10 +30,13 @@ namespace OTSController {
 		}
 
 		// attempt 1000 times until SEM in place
-		long nAttempTime = 1000;
+		long nAttempTime = 10;
 		double dSetPositionX = (double)a_poiPosition.x;
 		double dSetPositionY = (double)a_poiPosition.y;
 		double dSetPositionR = a_dRotation;
+
+		double dOriginalPositionX = 0.0;
+		double dOriginalPositionY = 0.0;
 		double dGetPositionX = 0.0;
 		double dGetPositionY = 0.0;
 		double dGetPositionR = 0.0;
@@ -44,7 +47,7 @@ namespace OTSController {
 		{
 			// not allow to rotation
 			// get SEM position
-			if (!GetPositionXY(dGetPositionX, dGetPositionY, dGetPositionR))
+			if (!GetPositionXY(dOriginalPositionX, dOriginalPositionY, dGetPositionR))
 			{
 				// failed to call GetPositionXY method
 				LogErrorTrace(__FILE__, __LINE__, "COTSSemBase::MoveSEMToPoint: failed to call GetPositionXY method.");
@@ -73,9 +76,17 @@ namespace OTSController {
 				--nAttempTime;
 				continue;
 			}
-			else
+			
+			LogTrace(__FILE__, __LINE__, _T("COTSSemBase::MoveSEMToPoint: call GetPositionXY method%0.3f, %0.3f, %0.3f"), dGetPositionX, dGetPositionY, dGetPositionR);
+			if (dGetPositionX == dOriginalPositionX && dGetPositionY == dOriginalPositionY)
 			{
-				LogTrace(__FILE__, __LINE__, _T("COTSSemBase::MoveSEMToPoint: call GetPositionXY method------------%0.3f, %0.3f, %0.3f"), dGetPositionX, dGetPositionY, dGetPositionR);
+				// Move SEM to position
+				if (!SetPositionXY(dSetPositionX, dSetPositionY, dSetPositionR))
+				{
+					LogErrorTrace(__FILE__, __LINE__, "COTSSemBase::MoveSEMToPoint: failed to call SetPositionXY method.");
+				}
+				Sleep(2000);
+
 			}
 			
 

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

@@ -48,7 +48,6 @@ void OxfordControllerWrapper::CloseClient(void)
 {
 	if (_controllerThread && _controllerThread->IsAlive)
 	{
-		_oxfordControllerData.m_nCommand = OxfordControllerCommand::EXIT;
 		m_startControllerEvent->Set();
 
 		m_endControllerEvent->WaitOne(g_nOxfordControllerEventWaitTimerInt);
@@ -62,8 +61,7 @@ OxfordControllerWrapper::~OxfordControllerWrapper(void)
 {	
 	if (_controllerThread && _controllerThread->IsAlive)
 	{
-		//_oxfordControllerData.m_nCommand = OxfordControllerCommand::EXIT;
-		//m_startControllerEvent->Set();
+	
 		m_endControllerEvent->WaitOne(g_nOxfordControllerEventWaitTimerInt);
 	}
 
@@ -74,14 +72,7 @@ OxfordControllerWrapper::!OxfordControllerWrapper(void)
 {
 	if (_controllerThread && _controllerThread->IsAlive)
 	{
-		//_oxfordControllerData.m_nCommand = OxfordControllerCommand::EXIT;
-		//m_startControllerEvent->Set();
-
-
-		//m_endControllerEvent->Set();
-		//return;
 
-		//break;
 
 
 		m_endControllerEvent->WaitOne(g_nOxfordControllerEventWaitTimerInt);