From da9df9d46ed3fc50e0c03497bd9f76b8aa1a4595 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期三, 14 一月 2026 15:37:48 +0800
Subject: [PATCH] 1.修复以下问题: 作业前置条件不足导致 PJ 验证失败:onPRJobMultiCreate 调 CMaster::setProcessJobs,CProcessJob::validate 要求“当前没有其它 PJ”(issue 1000),且 carrierPresent/slotUsable 必须为真。只要本地还有未结批的 PJ/CJ 或载具/槽位状态未就绪(ID 未绑、Slot 未使能),Host 发送的 CreateMultiPJ 会直接被丢弃(返回 size=0),但当前代码没有向 Host 回 ACK/NAK,Host 会误以为创建成功。
---
SourceCode/Bond/BondEq/BondEqDlg.cpp | 31 +++++++++++++++++++++++++++----
1 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/SourceCode/Bond/BondEq/BondEqDlg.cpp b/SourceCode/Bond/BondEq/BondEqDlg.cpp
index f381744..cabcaf7 100644
--- a/SourceCode/Bond/BondEq/BondEqDlg.cpp
+++ b/SourceCode/Bond/BondEq/BondEqDlg.cpp
@@ -16,6 +16,8 @@
#include "UserManagerDlg.h"
#include "SystemLogManagerDlg.h"
+// 测试
+#include "RecipeListDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
@@ -155,9 +157,13 @@
}
else if (code == RX_CODE_ALARM_ON) {
AlarmOn();
+ CAlarmMonitor* pComponent = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent(ALARM_MONITOR);
+ m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(pComponent->isAlarming());
}
else if (code == RX_CODE_ALARM_OFF) {
AlarmOff();
+ CAlarmMonitor* pComponent = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent(ALARM_MONITOR);
+ m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(pComponent->isAlarming());
}
pAny->release();
}, [&]() -> void {
@@ -247,10 +253,12 @@
// 设置配方文件夹路径
RecipeManager& recipeManager = RecipeManager::getInstance();
- std::string strRecipePath = CToolUnits::getCurrentExePath() + _T("\\Recipe");
+ std::string strRecipePath = CToolUnits::getRecipePath();
CToolUnits::createDir(strRecipePath.c_str());
recipeManager.setRecipeFolder(strRecipePath);
-
+ if (!recipeManager.loadRecipe("Default")) {
+ AfxMessageBox("Default 配方加载失败!");
+ }
// 菜单
CMenu menu;
@@ -267,6 +275,7 @@
m_pTopToolbar->Create(IDD_TOP_TOOLBAR, this);
m_pTopToolbar->ShowWindow(SW_SHOW);
m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE);
+ m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(FALSE);
HMENU hMenu = m_pTopToolbar->GetOperatorMenu();
ASSERT(hMenu);
::EnableMenuItem(hMenu, ID_OPEATOR_SWITCH, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
@@ -295,6 +304,13 @@
// 更新登录状态
UpdateLoginStatus();
logManager.log(SystemLogManager::LogType::Info, _T("BondEq启动..."));
+
+
+ // 自动启动
+ theApp.m_model.getBonder().start();
+ m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(FALSE);
+ m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(TRUE);
+ logManager.log(SystemLogManager::LogType::Operation, _T("运行..."));
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
@@ -533,8 +549,11 @@
void CBondEqDlg::OnMenuFileSettings()
{
- CSettingsDlg dlg;
+ CRecipeListDlg dlg;
dlg.DoModal();
+
+ //CSettingsDlg dlg;
+ //dlg.DoModal();
}
void CBondEqDlg::OnUpdateMenuFileSettings(CCmdUI* pCmdUI)
@@ -623,6 +642,9 @@
m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(TRUE);
m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE);
logManager.log(SystemLogManager::LogType::Operation, _T("停止..."));
+ }
+ else if (id == IDC_BUTTON_ALARM) {
+ AlarmOn();
}
else if (id == IDC_BUTTON_SETTINGS) {
CSettingsDlg dlg;
@@ -817,10 +839,10 @@
{
if (m_pAlarmWnd == nullptr) {
m_pAlarmWnd = new CAlarmPopupDlg();
+ m_pAlarmWnd->SetPLC(theApp.m_model.getBonder().getPLC("PLC(1)"));
m_pAlarmWnd->Create(IDD_DIALOG_POPUP_ALARM, this);
m_pAlarmWnd->CenterWindow();
}
- m_pAlarmWnd->ShowWindow(SW_SHOW);
m_pAlarmWnd->AlarmOn();
}
@@ -828,6 +850,7 @@
{
if (m_pAlarmWnd == nullptr) {
m_pAlarmWnd = new CAlarmPopupDlg();
+ m_pAlarmWnd->SetPLC(theApp.m_model.getBonder().getPLC("PLC(1)"));
m_pAlarmWnd->Create(IDD_DIALOG_POPUP_ALARM, this);
m_pAlarmWnd->CenterWindow();
}
--
Gitblit v1.9.3