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