From 3c387cc7bcd469938fbfac8bc5435bb1e846c70f Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 17 六月 2025 17:42:53 +0800
Subject: [PATCH] Merge branch 'liuyang' into clh
---
SourceCode/Bond/Servo/CEFEM.cpp | 81 ++++++++++++++++------------------------
1 files changed, 32 insertions(+), 49 deletions(-)
diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 099e2cd..dd297b1 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -22,6 +22,10 @@
m_pPort[3] = nullptr;
m_pAligner = nullptr;
m_pFliper = nullptr;
+ m_robotData.status = ROBOT_STATUS::Setup;
+ m_robotData.position = ROBOT_POSITION::Port1;
+ m_robotData.armState[0] = FALSE;
+ m_robotData.armState[1] = FALSE;
}
CEFEM::~CEFEM()
@@ -331,6 +335,11 @@
return robotCmds(cmds, 2, onWritedBlock);
}
+ RMDATA& CEFEM::getRobotMonitoringData()
+ {
+ return m_robotData;
+ }
+
void CEFEM::init()
{
CEquipment::init();
@@ -540,55 +549,7 @@
pStep->setName(szBuffer);
pStep->setProp("Upstream", (void*)(__int64)(i + 1));
pStep->setWriteSignalDev(0x0 + i);
- if (addStep(STEP_ID_FETCHED_OUT_JOB_REPORT1 + i, pStep) != 0) {
- delete pStep;
- }
- }
- }
-
- {
- // Fetched Out Job Report #1~15
- char szBuffer[256];
- for (int i = 0; i < 15; i++) {
- CEqReadStep* pStep = new CEqReadStep(0x5c31 + 18 * i, 18 * 2,
- [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
- if (code == ROK && pszData != nullptr && size > 0) {
- int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port");
- if (port > 0) {
- decodeFetchedOutJobReport((CStep*)pFrom, port, pszData, size);
- }
- }
- return -1;
- });
- sprintf_s(szBuffer, "%s%d", STEP_EQ_FETCHED_OUT_JOBn, i+1);
- pStep->setName(szBuffer);
- pStep->setProp("Port", (void*)(__int64)(i + 1));
- pStep->setWriteSignalDev(0x023 + i);
- if (addStep(STEP_ID_FETCHED_OUT_JOB_REPORT1 + i, pStep) != 0) {
- delete pStep;
- }
- }
- }
-
- {
- // Store Job Report #1~15
- char szBuffer[256];
- for (int i = 0; i < 15; i++) {
- CEqReadStep* pStep = new CEqReadStep(0x5b23 + 18 * i, 18 * 2,
- [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
- if (code == ROK && pszData != nullptr && size > 0) {
- int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port");
- if (port > 0) {
- decodeStoredJobReport((CStep*)pFrom, port, pszData, size);
- }
- }
- return -1;
- });
- sprintf_s(szBuffer, "%s%d", STEP_EQ_STORED_JOBn, i + 1);
- pStep->setName(szBuffer);
- pStep->setProp("Port", (void*)(__int64)(i + 1));
- pStep->setWriteSignalDev(0x014 + i);
- if (addStep(STEP_ID_STORE_JOB_REPORT1 + i, pStep) != 0) {
+ if (addStep(STEP_ID_RECIVE_JOB_UPS1 + i, pStep) != 0) {
delete pStep;
}
}
@@ -692,6 +653,28 @@
{
__super::onReceiveLBData(pszData, size);
+ // 解释得到Robot状态
+ // 地址从(0x3500 - 0x3000)开始
+ int index = 0x500;
+ for (int i = 0; i < 6; i++) {
+ if (isBitOn(pszData, size, index + i)) {
+ m_robotData.status = (ROBOT_STATUS)i;
+ break;
+ }
+ }
+ index += 8;
+
+ for (int i = 0; i < 11; i++) {
+ if (isBitOn(pszData, size, index + i)) {
+ m_robotData.position = (ROBOT_POSITION)i;
+ break;
+ }
+ }
+ index += 16;
+ m_robotData.armState[0] = isBitOn(pszData, size, index);
+ m_robotData.armState[1] = isBitOn(pszData, size, index + 1);
+
+
for (unsigned int i = 0; i < 4; i++) {
if (m_pPort[i] != nullptr) {
m_pPort[i]->onReceiveLBData(pszData, size);
--
Gitblit v1.9.3