From 8d55ed4a167d9b09d65e4a26ece287c6e37a9c84 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 12 九月 2025 10:58:58 +0800
Subject: [PATCH] 1. 修复SG精度检编辑框修改覆盖问题(界面频繁刷新导致)
---
SourceCode/Bond/Servo/CLoadPort.cpp | 82 +++++++++++++++++++++++++----------------
1 files changed, 50 insertions(+), 32 deletions(-)
diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index 5de17db..e7725f2 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -9,8 +9,8 @@
CLoadPort::CLoadPort() : CEquipment()
{
m_nIndex = 0;
- m_portType = PortType::Loading;
- m_portMode = PortMode::ReadyToLoad;
+ m_portType = PortType::Both;
+ m_portMode = PortMode::OutOfService;
m_cassetteType = CassetteType::G1;
m_transferMode = TransferMode::AGVMode;
m_bEnable = FALSE;
@@ -44,7 +44,7 @@
void CLoadPort::initPins()
{
// 加入Pin初始化代码
- LOGI("<CLoadPort>initPins");
+ LOGD("<CLoadPort>initPins");
addPin(SERVO::PinType::INPUT, _T("In"));
addPin(SERVO::PinType::OUTPUT, _T("Out"));
}
@@ -115,6 +115,7 @@
[&](void* pFrom, int code, const char* pszData, size_t size) -> int {
if (code == ROK && pszData != nullptr && size > 0) {
m_portMode = (PortMode)CToolUnits::toInt16(pszData);
+ LOGI("<LoadPort-%d>m_portMode:%d", m_nIndex, m_portMode);
}
return 0;
});
@@ -349,20 +350,49 @@
{
CEquipment::onTimer(nTimerid);
+
+ // 从配置读出的enable,初始化时写给efem
+ static int i_enable[4] = { 0 };
+ if ((++i_enable[m_nIndex]) == 10 + m_nIndex) {
+ eablePort(m_bEnable, [&](int code) -> int {
+ LOGI("<LoadPort-%d>eablePort:code=%d", m_nIndex, code);
+ return 0;
+ });
+ }
+
+
+
// 模拟测试
+ /*
if (m_nIndex == 0) {
static int ii = 0;
ii++;
if (ii == 50) {
- char szBuffer[64];
- CStep* pStep = getStepWithName(STEP_EQ_PORT1_INUSE);
+ char szBuffer[64] = {0};
+ CStep* pStep = getStepWithName(STEP_EQ_PORT1_BLOCKED);
CPortStatusReport portStatusReport;
- portStatusReport.setPortStatus(PORT_INUSE);
+ portStatusReport.setPortStatus(PORT_BLOCKED);
portStatusReport.setJobExistenceSlot(0xf);
+ portStatusReport.setCassetteId("CID1001");
int nRet = portStatusReport.serialize(szBuffer, 64);
decodePortStatusReport(pStep, szBuffer, 64);
}
}
+ if (m_nIndex == 1) {
+ static int ii = 0;
+ ii++;
+ if (ii == 55) {
+ char szBuffer[64] = { 0 };
+ CStep* pStep = getStepWithName(STEP_EQ_PORT2_BLOCKED);
+ CPortStatusReport portStatusReport;
+ portStatusReport.setPortStatus(PORT_BLOCKED);
+ portStatusReport.setJobExistenceSlot(0xff );
+ portStatusReport.setCassetteId("CID1004");
+ int nRet = portStatusReport.serialize(szBuffer, 64);
+ decodePortStatusReport(pStep, szBuffer, 64);
+ }
+ }
+ */
}
void CLoadPort::serialize(CArchive& ar)
@@ -371,23 +401,11 @@
if (ar.IsStoring()) {
ar << m_nIndex;
- //ar << (int)m_portType;
- //ar << (int)m_portMode;
- //ar << (int)m_cassetteType;
- //ar << (int)m_transferMode;
- //ar << m_bEnable;
- //ar << m_bAutoChangeEnable;
m_portStatusReport.serialize(ar);
}
else {
int temp;
ar >> m_nIndex;
- //ar >> temp; m_portType = (PortType)temp;
- //ar >> temp; m_portMode = (PortMode)temp;
- //ar >> temp; m_cassetteType = (CassetteType)temp;
- //ar >> temp; m_transferMode = (TransferMode)temp;
- //ar >> m_bEnable;
- //ar >> m_bAutoChangeEnable;
m_portStatusReport.serialize(ar);
}
}
@@ -922,12 +940,12 @@
else {
// 抛出到应用层做选择要加工的片子
generateGlassList(getScanCassetteMap());
- if (m_listener.onPortInUse != nullptr) {
- m_listener.onPortInUse(this, getScanCassetteMap());
- }
}
}
-
+ if (m_listener.onPortStatusChanged != nullptr) {
+ m_listener.onPortStatusChanged(this, portStatusReport.getPortStatus(),
+ getScanCassetteMap());
+ }
// 缓存Attribute,用于调试时显示信息
@@ -965,7 +983,7 @@
LOGI("<CLoadPort-%d>设置Port type成功.", m_nIndex);
}
else {
- LOGI("<CLoadPort-%d>设置Port type失败,code:%d", m_nIndex, code);
+ LOGE("<CLoadPort-%d>设置Port type失败,code:%d", m_nIndex, code);
}
if (onWritedBlock != nullptr) {
return onWritedBlock(code);
@@ -995,7 +1013,7 @@
LOGI("<CLoadPort-%d>%s Port成功.", m_nIndex, bEnable ? _T("启用") : _T("禁用"));
}
else {
- LOGI("<CLoadPort-%d>%s Port失败,code:%d", m_nIndex, bEnable ? _T("启用") : _T("禁用"), code);
+ LOGE("<CLoadPort-%d>%s Port失败,code:%d", m_nIndex, bEnable ? _T("启用") : _T("禁用"), code);
}
if (onWritedBlock != nullptr) {
return onWritedBlock(code);
@@ -1024,7 +1042,7 @@
LOGI("<CLoadPort-%d>设置Port mode成功.", m_nIndex);
}
else {
- LOGI("<CLoadPort-%d>设置Port mode失败,code:%d", m_nIndex, code);
+ LOGE("<CLoadPort-%d>设置Port mode失败,code:%d", m_nIndex, code);
}
if (onWritedBlock != nullptr) {
return onWritedBlock(code);
@@ -1053,7 +1071,7 @@
LOGI("<CLoadPort-%d>设置Cassette Type成功.", m_nIndex);
}
else {
- LOGI("<CLoadPort-%d>设置Cassette Type失败,code:%d", m_nIndex, code);
+ LOGE("<CLoadPort-%d>设置Cassette Type失败,code:%d", m_nIndex, code);
}
if (onWritedBlock != nullptr) {
return onWritedBlock(code);
@@ -1082,7 +1100,7 @@
LOGI("<CLoadPort-%d>设置Transfer mode成功.", m_nIndex + 1);
}
else {
- LOGI("<CLoadPort-%d>设置Transfer mode失败,code:%d", m_nIndex + 1, code);
+ LOGE("<CLoadPort-%d>设置Transfer mode失败,code:%d", m_nIndex + 1, code);
}
if (onWritedBlock != nullptr) {
return onWritedBlock(code);
@@ -1111,7 +1129,7 @@
LOGI("<CLoadPort-%d>%s Auto Change成功.", m_nIndex, bEnable ? _T("启用") : _T("禁用"));
}
else {
- LOGI("<CLoadPort-%d>%s Auto Change失败,code:%d", m_nIndex, bEnable ? _T("启用") : _T("禁用"), code);
+ LOGE("<CLoadPort-%d>%s Auto Change失败,code:%d", m_nIndex, bEnable ? _T("启用") : _T("禁用"), code);
}
if (onWritedBlock != nullptr) {
return onWritedBlock(code);
@@ -1191,7 +1209,7 @@
CGlass* pGlass = theApp.m_model.m_glassPool.allocaGlass();
pGlass->setOriginPort(m_nIndex, i);
- pGlass->addPath(m_nID, 0);
+ pGlass->addPath(m_nID, 0, i + 1);
pGlass->processEnd(m_nID, 0);
pGlass->setID(szBuffer);
pGlass->setType(type);
@@ -1219,7 +1237,7 @@
char szBuffer[64];
for (int i = 0; i < SLOT_MAX; i++) {
if (!m_slot[i].isEnable()) continue;
- if (!(map >> i) & 1) continue;
+ if (((map >> i) & 1) == 0) continue;
CJobDataS js;
js.setCassetteSequenceNo(getNextCassetteSequenceNo());
@@ -1231,7 +1249,7 @@
CGlass* pGlass = theApp.m_model.m_glassPool.allocaGlass();
pGlass->setOriginPort(m_nIndex, i);
pGlass->setScheduledForProcessing(i % 2 == 1);
- pGlass->addPath(m_nID, 0);
+ pGlass->addPath(m_nID, 0, i + 1);
pGlass->processEnd(m_nID, 0);
pGlass->setID(szBuffer);
pGlass->setType(m_cassetteType);
@@ -1271,7 +1289,7 @@
CGlass* pGlass = theApp.m_model.m_glassPool.allocaGlass();
pGlass->setOriginPort(m_nIndex, nSlotIndex);
- pGlass->addPath(m_nID, 0);
+ pGlass->addPath(m_nID, 0, slot.nSlotID);
pGlass->processEnd(m_nID, 0);
pGlass->setID(szBuffer);
pGlass->setType(static_cast<SERVO::MaterialsType>(config.nMaterialType));
--
Gitblit v1.9.3