From 697fa6b857fe202fe2e5f50d4ecf2c7268e527cc Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 15 八月 2025 15:22:19 +0800
Subject: [PATCH] 1.变量(代EAP查询的数据)增加列表类型; 2.实现ProcessJob Queued上报功能;

---
 SourceCode/Bond/EAPSimulator/CHsmsActive.cpp |   86 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 86 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
index 1605306..7969e15 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -3,6 +3,8 @@
 #include "Log.h"
 
 
+static unsigned int DATAID = 1;
+
 CHsmsActive::CHsmsActive()
 {
 	m_listener = {};
@@ -69,6 +71,10 @@
 		if (nStream == 5 && pHeader->function == 1) {
 			// S5F1
 			replyAck(5, 2, pMessage->getHeader()->systemBytes, 0, _T("ACK0"));
+		}
+		else if (nStream == 6 && pHeader->function == 11) {
+			// S5F1
+			replyAck(6, 12, pMessage->getHeader()->systemBytes, 0, _T("ACK0"));
 		}
 	};
 
@@ -289,6 +295,18 @@
 	return 0;
 }
 
+int CHsmsActive::hsmsSelectedEquipmentStatusRequest(unsigned int SVID)
+{
+	IMessage* pMessage = nullptr;
+	int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 3, ++m_nSystemByte);
+
+	pMessage->getBody()->addU4Item(SVID, "SVID");
+	m_pActive->sendMessage(pMessage);
+	HSMS_Destroy1Message(pMessage);
+
+	return 0;
+}
+
 int CHsmsActive::hsmsQueryPPIDList()
 {
 	IMessage* pMessage = nullptr;
@@ -299,6 +317,74 @@
 	return 0;
 }
 
+int CHsmsActive::hsmsCarrierActionRequest(unsigned int DATAID, 
+	const char* pszCarrierAction, 
+	const char* pszCarrierId,
+	unsigned char PTN)
+{
+	IMessage* pMessage = nullptr;
+	int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 3 | REPLY, 17, ++m_nSystemByte);
+	pMessage->getBody()->addU4Item(DATAID, "DATAID");
+	pMessage->getBody()->addItem(pszCarrierAction, "CARRIERACTION");
+	pMessage->getBody()->addItem(pszCarrierId, "CARRIERID");
+	pMessage->getBody()->addU1Item(PTN, "PTN");
+	pMessage->getBody()->addItem();
+	m_pActive->sendMessage(pMessage);
+	HSMS_Destroy1Message(pMessage);
+
+	return 0;
+}
+
+int CHsmsActive::hsmsProceedWithCarrier(unsigned int DATAID,
+	const char* pszCarrierId,
+	unsigned char PTN)
+{
+	return hsmsCarrierActionRequest(DATAID, "ProceedWithCarrier", pszCarrierId, PTN);
+}
+
+int CHsmsActive::hsmsCarrierRelease(unsigned int DATAID,
+	const char* pszCarrierId,
+	unsigned char PTN)
+{
+	return hsmsCarrierActionRequest(DATAID, "CarrierRelease", pszCarrierId, PTN);
+}
+
+int CHsmsActive::hsmsPRJobMultiCreate(std::vector<SERVO::CProcessJob*>& pjs)
+{
+	IMessage* pMessage = nullptr;
+	int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 16 | REPLY, 15, ++m_nSystemByte);
+	char szMF[32] = {14};
+	pMessage->getBody()->addU4Item(++DATAID, "DATAID");
+	auto itemPjs = pMessage->getBody()->addItem();
+	for (auto pj : pjs) {
+		auto itemPj = itemPjs->addItem();
+		itemPj->addItem(pj->id().c_str(), "PRJOBID");
+		itemPj->addBinaryItem(szMF, 1, "MF");
+		auto itemCarriers = itemPj->addItem();
+		for (auto c : pj->carriers()) {
+			auto itemCarrier = itemCarriers->addItem();
+			itemCarrier->addItem(c.carrierId.c_str(), "CARRIERID");
+			auto itemSlots = itemCarrier->addItem();
+			for (auto s : c.slots) {
+				itemSlots->addU1Item(s, "SLOTID");
+			}
+		}
+
+		auto recipeItems = itemPj->addItem();
+		recipeItems->addU1Item(1, "PRRECIPEMETHOD");
+		recipeItems->addItem(pj->recipeSpec().c_str(), "RCPSPEC");
+		recipeItems->addItem();
+
+		itemPj->addBoolItem(false, "PRPROCESSSTART");
+		itemPj->addItem();
+	}
+
+	m_pActive->sendMessage(pMessage);
+	HSMS_Destroy1Message(pMessage);
+
+	return 0;
+}
+
 int CHsmsActive::replyAck0(IMessage* pMessage)
 {
 	return 0;

--
Gitblit v1.9.3