From 2a21061d88d5533065dc57cfae0b1f2c1952e06f Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 22 八月 2025 16:01:32 +0800
Subject: [PATCH] 1.PorcessJob和Glass关系绑定; 2.对话框显示ProcessJob、Glass等数据;
---
SourceCode/Bond/Servo/CGlass.cpp | 123 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 123 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/CGlass.cpp b/SourceCode/Bond/Servo/CGlass.cpp
index 6c1b30f..974859c 100644
--- a/SourceCode/Bond/Servo/CGlass.cpp
+++ b/SourceCode/Bond/Servo/CGlass.cpp
@@ -11,6 +11,7 @@
m_nOriginPort = 0;
m_nOriginSlot = 0;
m_bScheduledForProcessing = FALSE;
+ m_pProcessJob = nullptr;
}
CGlass::~CGlass()
@@ -89,6 +90,16 @@
void CGlass::setScheduledForProcessing(BOOL bProcessing)
{
m_bScheduledForProcessing = bProcessing;
+ }
+
+ CProcessJob* CGlass::getProcessJob()
+ {
+ return m_pProcessJob;
+ }
+
+ void CGlass::setProcessJob(CProcessJob* pProcessJob)
+ {
+ m_pProcessJob = pProcessJob;
}
CPath* CGlass::getPath()
@@ -246,4 +257,116 @@
return pPath->getInspResult();
}
+
+ std::string CGlass::getStateText()
+ {
+ switch (m_state)
+ {
+ case SERVO::GlsState::NoState:
+ return "NoState";
+ break;
+ case SERVO::GlsState::Queued:
+ return "Queued";
+ break;
+ case SERVO::GlsState::InProcess:
+ return "InProcess";
+ break;
+ case SERVO::GlsState::Paused:
+ return "Queued";
+ break;
+ case SERVO::GlsState::Completed:
+ return "Queued";
+ break;
+ case SERVO::GlsState::Aborted:
+ return "Aborted";
+ break;
+ case SERVO::GlsState::Failed:
+ return "Failed";
+ break;
+ default:
+ break;
+ }
+
+ return "";
+ }
+
+ bool CGlass::queue() {
+ if (m_state != GlsState::NoState) return false;
+ markQueued();
+ return true;
+ }
+
+ bool CGlass::start() {
+ if (m_state != GlsState::Queued && m_state != GlsState::Paused)
+ return false;
+ if (!m_tStart.has_value()) markStart();
+ m_state = GlsState::InProcess;
+ return true;
+ }
+
+ bool CGlass::pause() {
+ if (m_state != GlsState::InProcess) return false;
+ m_state = GlsState::Paused;
+ return true;
+ }
+
+ bool CGlass::resume() {
+ if (m_state != GlsState::Paused) return false;
+ m_state = GlsState::InProcess;
+ return true;
+ }
+
+ bool CGlass::complete() {
+ if (m_state != GlsState::InProcess && m_state != GlsState::Paused) return false;
+ m_state = GlsState::Completed;
+ markEnd();
+ return true;
+ }
+
+ bool CGlass::abort() {
+ if (m_state == GlsState::Completed || m_state == GlsState::Aborted || m_state == GlsState::Failed)
+ return false;
+ m_state = GlsState::Aborted;
+ markEnd();
+ return true;
+ }
+
+ bool CGlass::fail(std::string reason)
+ {
+ m_failReason = trimCopy(reason);
+ clampString(m_failReason, 128);
+ m_state = GlsState::Failed;
+ markEnd();
+ return true;
+ }
+
+ std::string CGlass::trimCopy(std::string s)
+ {
+ auto notspace = [](int ch) { return !std::isspace(ch); };
+ s.erase(s.begin(), std::find_if(s.begin(), s.end(), notspace));
+ s.erase(std::find_if(s.rbegin(), s.rend(), notspace).base(), s.end());
+ return s;
+ }
+
+ void CGlass::clampString(std::string& s, size_t maxLen)
+ {
+ if (s.size() > maxLen) s.resize(maxLen);
+ }
+
+ // —— 时间戳 & 工具 ——
+ void CGlass::markQueued()
+ {
+ m_state = GlsState::Queued;
+ m_tQueued = std::chrono::system_clock::now();
+ }
+
+ void CGlass::markStart()
+ {
+ m_tStart = std::chrono::system_clock::now();
+ }
+
+ void CGlass::markEnd()
+ {
+ m_tEnd = std::chrono::system_clock::now();
+ }
}
--
Gitblit v1.9.3