From 2fb87c832d5ff07008308da1bab9b846b60ba7d3 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期一, 09 六月 2025 15:22:00 +0800
Subject: [PATCH] 1. 把搬运记录的界面添加到主界面的Tab页

---
 SourceCode/Bond/Servo/CRobotTask.cpp |   87 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 82 insertions(+), 5 deletions(-)

diff --git a/SourceCode/Bond/Servo/CRobotTask.cpp b/SourceCode/Bond/Servo/CRobotTask.cpp
index 17113b4..dc1b82e 100644
--- a/SourceCode/Bond/Servo/CRobotTask.cpp
+++ b/SourceCode/Bond/Servo/CRobotTask.cpp
@@ -1,6 +1,7 @@
 #include "stdafx.h"
 #include "CRobotTask.h"
 #include "ToolUnits.h"
+#include "Log.h"
 
 
 namespace SERVO {
@@ -8,11 +9,12 @@
 	{
 		generateId(m_strId);
 		m_state = ROBOT_TASK_STATE::Ready;
-		m_timeCreate = CToolUnits::getTimestamp();
+		m_timeCreate = CToolUnits::getUnixTimestamp();
 		m_timeFetchOut = 0;
 		m_timeStored = 0;
 		m_timeFinish = 0;
 		m_pContext = nullptr;
+		m_pEFEM = nullptr;
 	}
 
 	CRobotTask::~CRobotTask()
@@ -42,10 +44,29 @@
 		return strOut;
 	}
 
+	std::string CRobotTask::getSimpleDescription() const
+	{
+		std::string strOut = "CRobotTask<ID:";
+		strOut = strOut + std::to_string(m_robotCmdParam.sequenceNo);
+		strOut = strOut + ",Arm:";
+		strOut = strOut + std::to_string(m_robotCmdParam.armNo);
+		strOut = strOut + ",GetPossion:";
+		strOut = strOut + std::to_string(m_robotCmdParam.getPosition);
+		strOut = strOut + ",GetSlot:";
+		strOut = strOut + std::to_string(m_robotCmdParam.getSlotNo);
+		strOut = strOut + ",PutPossion:";
+		strOut = strOut + std::to_string(m_robotCmdParam.putPosition);
+		strOut = strOut + ",PutSlot:";
+		strOut = strOut + std::to_string(m_robotCmdParam.putSlotNo);
+		strOut = strOut + ">";
+
+		return strOut;
+	}
+
 	void CRobotTask::setContext(CContext* pContext)
 	{
-		if (pContext != nullptr) {
-			pContext->release();
+		if (m_pContext != nullptr) {
+			m_pContext->release();
 		}
 
 		m_pContext = pContext;
@@ -57,6 +78,11 @@
 	CContext* CRobotTask::getContext()
 	{
 		return m_pContext;
+	}
+
+	void CRobotTask::setEFEM(CEFEM* pEFEM)
+	{
+		m_pEFEM = pEFEM;
 	}
 
 	std::string& CRobotTask::generateId(std::string& out)
@@ -120,6 +146,45 @@
 		return m_state;
 	}
 
+	void CRobotTask::run()
+	{
+		ASSERT(m_pEFEM);
+		m_state = ROBOT_TASK_STATE::Running;
+
+		static int seq = 0;
+		m_pEFEM->robotSendTransfer(++seq,
+			m_robotCmdParam.armNo,
+			m_robotCmdParam.getPosition, 
+			m_robotCmdParam.putPosition,
+			m_robotCmdParam.getSlotNo,
+			m_robotCmdParam.putSlotNo, 
+			[&](int code) -> int {
+				if (code == WOK) {
+					LOGI(_T("RobotTask已下发到EFEM"));
+				}
+				else {
+					LOGI(_T("RobotTask已下发失败"));
+				}
+
+				return 0;
+			});
+	}
+
+	void CRobotTask::completed()
+	{
+		m_state = ROBOT_TASK_STATE::Completed;
+	}
+
+	void CRobotTask::error()
+	{
+		m_state = ROBOT_TASK_STATE::Error;
+	}
+
+	void CRobotTask::abort()
+	{
+		m_state = ROBOT_TASK_STATE::Abort;
+	}
+
 	int CRobotTask::getSrcPosition()
 	{
 		return m_robotCmdParam.getPosition;
@@ -140,13 +205,25 @@
 		return m_robotCmdParam.putSlotNo;
 	}
 
+	CString CRobotTask::getStateString()
+	{
+		switch (m_state) {
+		case ROBOT_TASK_STATE::Ready:     return _T("Ready");
+		case ROBOT_TASK_STATE::Running:   return _T("Running");
+		case ROBOT_TASK_STATE::Error:     return _T("Error");
+		case ROBOT_TASK_STATE::Abort:     return _T("Abort");
+		case ROBOT_TASK_STATE::Completed: return _T("Completed");
+		default:                          return _T("Unknown");
+		}
+	}
+
 	void CRobotTask::fetchOut()
 	{
-		m_timeFetchOut = CToolUnits::getTimestamp();;
+		m_timeFetchOut = CToolUnits::getUnixTimestamp();;
 	}
 
 	void CRobotTask::stored()
 	{
-		m_timeStored = CToolUnits::getTimestamp();;
+		m_timeStored = CToolUnits::getUnixTimestamp();;
 	}
 }

--
Gitblit v1.9.3