chenluhua1980
2026-01-09 6e0341c6356cdb6e527fbd89d1dc876f4e47ce46
SourceCode/Bond/Servo/HsmsPassive.h
@@ -135,7 +135,10 @@
   // 取消 define report
   bool removeReport(int rptid);
   void clearAllReport();
   int deleteReport(int rptid);
   int addReport(int rptid, const std::vector<unsigned int>& vids);
   int updateReport(int rptid, const std::vector<unsigned int>& vids);
   void clearAllReport(BOOL bSave = FALSE);
   // 从文件中加载CVariable列表
   int loadVarialbles(const char* pszFilepath);
@@ -147,6 +150,8 @@
   // 取得指定Variable
   SERVO::CVariable* getVariable(int variableId);
   SERVO::CVariable* getVariable(const char* pszName);
   int getCurrentControlState();
   bool isHostCommandAllowed();
   int deleteVariable(int variableId);
   int addVariable(const char* pszName, const char* pszFormat, const char* pszRemark, int& outId);
   int updateVariable(int variableId, const char* pszName, const char* pszFormat, const char* pszRemark);
@@ -155,21 +160,28 @@
   void setVariableValue(const char* pszName, __int64 value);
   void setVariableValue(const char* pszName, const char* value);
   void setVariableValue(const char* pszName, std::vector<SERVO::CVariable>& vars);
   // 执行一段持锁的代码块,用于保证 set+send 的原子性
   void withVariableLock(const std::function<void()>& fn);
   // 从文件中加载CReport列表
   int loadReports(const char* pszFilepath);
   // 取得Report列表
   std::vector<SERVO::CReport*>& getReports();
   unsigned int getMaxReportId() const;
   // 从文件中加载CCollectionEvent列表
   int loadCollectionEvents(const char* pszFilepath);
   // 取得CCollectionEvent列表
   std::vector<SERVO::CCollectionEvent*>& getCollectionEvents();
   unsigned int getMaxCollectionEventId() const;
   // 取消/删除所有CollectionEvent
   void clearAllCollectionEvent();
   int deleteCollectionEvent(unsigned short CEID);
   int addCollectionEvent(unsigned int CEID, const char* name, const char* desc, const std::vector<unsigned int>& rptids);
   int updateCollectionEvent(unsigned int CEID, const char* name, const char* desc, const std::vector<unsigned int>& rptids);
   // 取得CCollectionEvent
   SERVO::CCollectionEvent* getEvent(unsigned short CEID);
@@ -195,8 +207,12 @@
   int requestEventReportSend(unsigned int CEID);
   int requestEventReportSend(const char* pszEventName);
   int requestEventReportSend_CarrierID_Readed();
   int requestEventReportSend_CheckSlotMap();
   int requestEventReportSend_SlotMapVerificationOK();
   int requestEventReportSend_SlotMapVerificationNG();
   int requestEventReportSend_Port_Unload_Ready();
   int requestEventReportSend_Port_Load_Ready();
   int requestEventReportSend_Port_Ready_To_Release();
   int requestEventReportSend_Port_Blocked();
   int requestEventReportSend_PJ_Queued();
   int requestEventReportSend_PJ_Start();
@@ -206,6 +222,10 @@
   int requestEventReportSend_Panel_Start();
   int requestEventReportSend_Panel_End();
   int requestEventReportSend_OCR_PanelID_Read_OK();
   int requestEventReportSend_LoadPortNotAssoc();
   int requestEventReportSend_ProcessDataReport();
   int requestEventReportSend_SubEqpStart();
   int requestEventReportSend_SubEqpEnd();
private:
   void replyAck(int s, int f, unsigned int systemBytes, BYTE ack, const char* pszAckName);
@@ -214,6 +234,8 @@
   int replyAreYouThere(IMessage* pRecv);
   int replyEstablishCommunications(IMessage* pRecv);
   int replySelectedEquipmentStatusData(IMessage* pRecv);
   int replyStatusVariableNamelistRequest(IMessage* pRecv);  // S1F11/S1F12
   int replyCollectionEventNamelistRequest(IMessage* pRecv); // S1F23/S1F24
   int replyOnLine(IMessage* pRecv);
   int replyOffLine(IMessage* pRecv);
   int replyEquipmentConstantRequest(IMessage* pRecv);
@@ -239,6 +261,8 @@
   void clearAllVariabel();
   std::vector<unsigned int> parseVidList(CString& strNums);
   int writeVariablesToFile(const std::string& filepath);
   int writeReportsToFile(const std::string& filepath);
   int writeCollectionEventsToFile(const std::string& filepath);
private:
   CModel* m_pModel;
@@ -259,6 +283,12 @@
   std::string m_strVariableFilepath;
   bool m_bVariableUtf8{ false };
   bool m_bVariableUtf8Bom{ false };
   std::string m_strReportFilepath;
   bool m_bReportUtf8{ false };
   bool m_bReportUtf8Bom{ false };
   std::string m_strCollectionEventFilepath;
   bool m_bCollectionUtf8{ false };
   bool m_bCollectionUtf8Bom{ false };
   BOOL m_bCimWorking;
   HANDLE m_hCimWorkEvent;
   HANDLE m_hCimWorkThreadHandle;
@@ -276,7 +306,13 @@
   // CollectionEvent vector
   std::vector<SERVO::CCollectionEvent*> m_collectionEvents;
   // Spooling Config
   std::map<uint16_t, std::set<uint16_t>> m_spoolingConfig;
};
   // Spooling blacklist: StreamId -> {FunctionId...}
   // In this map means DO NOT spool/cache.
   // Special case: stream 1 is not spooled regardless of config.
   // If a stream key exists with empty set => blacklist ALL functions in that stream.
   std::map<uint16_t, std::set<uint16_t>> m_spoolBlacklistByStream;
   bool m_spoolingEnabled{ true };
private:
   bool shouldSpool(uint8_t streamId, uint8_t functionId) const;
};