LAPTOP-SNT8I5JK\Boounion
2025-07-14 375342c11638685d6b7fecc2a979825c56d770f9
SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -8,6 +8,7 @@
#include <time.h>  
#include <stdlib.h>  
#include <string.h>  
#include <regex>
const char ACK[2] = {0, 1};
@@ -195,6 +196,64 @@
   return 0;
}
int CHsmsPassive::loadVarialbleList(const char* pszFilepath)
{
   CStdioFile file;
   if (!file.Open(pszFilepath, CFile::modeRead)) {
      return -1;
   }
   std::regex pattern("^\\d+,.*");  // 匹配以数字+逗号开头的字符串
   std::vector<SERVO::CVariable*> variables;
   int index, last;
   CString strLine;
   CString strId, strName, strFormat, strRemark;
   while (file.ReadString(strLine)) {
      if (!std::regex_match((LPTSTR)(LPCTSTR)strLine, pattern)) {
         continue;
      }
      last = 0;
      index = strLine.Find(",", last);
      if (index < 0) continue;
      strId = strLine.Left(index);
      last = index + 1;
      index = strLine.Find(",", last);
      if (index < 0) continue;
      strName = strLine.Mid(last, index - last);
      last = index + 1;
      index = strLine.Find(",", last);
      if (index < 0) continue;
      strFormat = strLine.Mid(last, index - last);
      strRemark = strLine.Right(strLine.GetLength() - index - 1);
      SERVO::CVariable* pVarialble = new SERVO::CVariable(
         (LPTSTR)(LPCTSTR)strId, (LPTSTR)(LPCTSTR)strName, (LPTSTR)(LPCTSTR)strFormat, (LPTSTR)(LPCTSTR)strRemark);
      variables.push_back(pVarialble);
   }
   if (!variables.empty()) {
      clearAllVariabel();
      for (auto item : variables) {
         m_variabels.push_back(item);
      }
   }
   file.Close();
   return 0;
}
void CHsmsPassive::clearAllVariabel()
{
   for (auto item : m_variabels) {
      delete item;
   }
   m_variabels.clear();
}
int CHsmsPassive::init(CModel* pModel, const char* pszName, unsigned int port)
{
   m_pModel = pModel;
@@ -325,6 +384,8 @@
      HSMS_DestroyPassive(m_pPassive);
      m_pPassive = NULL;
   }
   clearAllVariabel();
   return 0;
}
@@ -837,36 +898,9 @@
      if (!pItem->getSubItemU4(1, ALID)) goto MYREPLY;
      bCheckData = TRUE;
      LOGI("EanbleDisableAlarmReport ALED:0x%02x, ALID:%d", ALED[0], ALID);
      double d;
      float f;
      pItem->getSubItemF4(2, f);
      pItem->getSubItemF8(3, d);
      LOGI("EanbleDisableAlarmReport d:%lf, f:%f",
         d, f);
      /*
      unsigned long long n1;
      unsigned int n2;
      unsigned short n3;
      unsigned char n4;
      long long sn1;
      int sn2;
      short sn3;
      char sn4;
      pItem->getSubItemU8(2, n1);
      pItem->getSubItemU4(3, n2);
      pItem->getSubItemU2(4, n3);
      pItem->getSubItemU1(5, n4);
      pItem->getSubItemI8(6, sn1);
      pItem->getSubItemI4(7, sn2);
      pItem->getSubItemI2(8, sn3);
      pItem->getSubItemI1(9, sn4);
      LOGI("EanbleDisableAlarmReport n1:%llu, n2:%u, n3:%hu, n4:%hhu",
         n1, n2, n3, n4);
      LOGI("EanbleDisableAlarmReport sn1:%lld, sn2:%d, sn3:%hd, sn4:%hhd",
         sn1, sn2, sn3, sn4);
         */
      if (m_listener.onEnableDisableAlarmReport != nullptr) {
         m_listener.onEnableDisableAlarmReport(this, ALED[0] != 0, ALID);
      }
   }