chenluhua1980
2026-01-08 2be286ac19bf2bb00e27f556e8b2cc292a58bd09
SourceCode/Bond/Servo/CBakeCooling.cpp
@@ -32,7 +32,7 @@
   void CBakeCooling::initPins()
   {
      // 加入Pin初始化代码
      LOGI("<CBakeCooling>initPins");
      LOGD("<CBakeCooling>initPins");
      addPin(SERVO::PinType::INPUT, _T("In1"));
      addPin(SERVO::PinType::INPUT, _T("In2"));
      addPin(SERVO::PinType::OUTPUT, _T("Out"));
@@ -188,12 +188,13 @@
         // master recipe list report
         CEqReadStep* pStep = new CEqReadStep(0x12955, 255 * 2,
            [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
               CEqReadStep* pTmpStep = (CEqReadStep*)pFrom;
               short ret = MRLRC_OK;
               if (code == ROK && pszData != nullptr && size > 0) {
                  // 此处解释配方数据
                  short ret = decodeRecipeListReport(pszData, size);
                  pStep->setReturnCode(ret);
                  ret = decodeRecipeListReport(pszData, size);
               }
               pStep->setReturnCode(MRLRC_OK);
               pTmpStep->setReturnCode(ret);
               return -1;
            });
         pStep->setName(STEP_EQ_MASTER_RECIPE_LIST);
@@ -206,33 +207,34 @@
      {
         // 请求配方参数
         //CEqWriteStep* pStep = new CEqWriteStep();
         //pStep->setName(STEP_EQ_RECIPE_PARAMETER_REQ);
         //pStep->setWriteSignalDev(0x967);
         //pStep->setDataDev(0x379b);
         //if (addStep(STEP_ID_RECIPE_PARAMETER_CMD_REPLY, pStep) != 0) {
         //   delete pStep;
         //}
         CEqWriteStep* pStep = new CEqWriteStep();
         pStep->setName(STEP_EQ_RECIPE_PARAMETER_REQ);
         pStep->setWriteSignalDev(0x967);
         pStep->setDataDev(0x24fb);
         if (addStep(STEP_ID_RECIPE_PARAMETER_CMD_REPLY, pStep) != 0) {
            delete pStep;
         }
      }
      {
         // recipe parameter report
         //CEqReadStep* pStep = new CEqReadStep(0x1aa54, 257 * 2,
         //   [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
         //      if (code == ROK && pszData != nullptr && size > 0) {
         //         // 此处解释配方数据
         //         short ret = decodeRecipeParameterReport(pszData, size);
         //         pStep->setReturnCode(ret);
         //      }
         //      pStep->setReturnCode(MRLRC_OK);
         //      return -1;
         //   });
         //pStep->setName(STEP_EQ_RECIPE_PARAMETER);
         //pStep->setWriteSignalDev(0x94c);
         //pStep->setReturnDev(m_nIndex == 0 ? 0x126c : 0x1bbc);
         //if (addStep(STEP_ID_RECIPE_PARAMETER_REPORT, pStep) != 0) {
         //   delete pStep;
         //}
         CEqReadStep* pStep = new CEqReadStep(0x12a54, 257 * 2,
            [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
               CEqReadStep* pTmpStep = (CEqReadStep*)pFrom;
               if (code == ROK && pszData != nullptr && size > 0) {
                  // 此处解释配方数据
                  short ret = decodeRecipeParameterReport(pszData, size);
                  pTmpStep->setReturnCode(ret);
               }
               pTmpStep->setReturnCode(MRLRC_OK);
               return -1;
            });
         pStep->setName(STEP_EQ_RECIPE_PARAMETER);
         pStep->setWriteSignalDev(0x94c);
         pStep->setReturnDev(0x250c);
         if (addStep(STEP_ID_RECIPE_PARAMETER_REPORT, pStep) != 0) {
            delete pStep;
         }
      }
      // 使用CEqReadStep替换CEqJobEventStep
@@ -332,6 +334,26 @@
         }
      }
      // FAC Data Report
      addFacDataReportStep(0x12589, 0x94d, 1);
      /*
      {
         CEqReadStep* pStep = new CEqReadStep(0x12589, 133 * 2,
            [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
               if (code == ROK && pszData != nullptr && size > 0) {
                  decodeFacDataReport((CStep*)pFrom, pszData, size);
               }
               return -1;
            });
         pStep->setName(STEP_EQ_FAC_DATA_REPORT);
         pStep->setProp("Port", (void*)1);
         pStep->setWriteSignalDev(0x94d);
         if (addStep(STEP_ID_FAC_DATA_REPORT, pStep) != 0) {
            delete pStep;
         }
      }
      */
      // process start/end report
      {
         CEqReadStep* pStep = new CEqReadStep(0x11D3F, 13 * 2,
@@ -419,6 +441,231 @@
   {
      CGlass* pGlass = getGlassFromSlot(slot);
      if (pGlass == nullptr) return false;
      return pGlass->isProcessed(m_nID, slot);
      return pGlass->isProcessed(m_nID, getSlotUnit(slot));
   }
   int CBakeCooling::parsingParams(const char* pszData, size_t size, std::vector<CParam>& params)
   {
      ASSERT(pszData);
      if (size < 250) return 0;
      int i = 0, v;
      // 1.A_腔烘烤时间
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("A_腔烘烤时间", "", this->getName().c_str(), v * 0.01f));
      i += 2;
      // 2.A_腔冷却时间
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("A_腔冷却时间", "", this->getName().c_str(), v * 0.01f));
      i += 2;
      // 3.B_腔烘烤时间
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("B_腔烘烤时间", "", this->getName().c_str(), v * 0.01f));
      i += 2;
      // 4.BB_腔冷却时间
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("B_腔冷却时间", "", this->getName().c_str(), v * 0.01f));
      i += 2;
      // 5.A_烘烤温度设定
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("A_烘烤温度设定", "", this->getName().c_str(), v * 0.1f));
      i += 2;
      // 6.B_烘烤温度设定
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("B_烘烤温度设定", "", this->getName().c_str(), v * 0.1f));
      i += 2;
      return (int)params.size();
   }
   int CBakeCooling::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params)
   {
      ASSERT(pszData);
      if (size < 250) return 0;
      int i = 0, v;
      // 1.工艺参数序号
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("工艺参数序号", "", this->getName().c_str(), v));
      i += 2;
      if (v == 1) {
         // 2.A_腔烘烤时间
         v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
         params.push_back(CParam("A_腔烘烤时间", "", this->getName().c_str(), v * 0.01f));
         i += 2;
         // 3.A_烘烤温度设定
         v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
         params.push_back(CParam("A_烘烤温度设定", "", this->getName().c_str(), v * 0.1f));
         i += 2;
      }
      else if (v == 2) {
         // 2.A_腔冷却时间
         v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
         params.push_back(CParam("A_腔冷却时间", "", this->getName().c_str(), v * 0.01f));
         i += 2;
      }
      else if (v == 3) {
         // 2.A_腔烘烤时间
         v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
         params.push_back(CParam("B_腔烘烤时间", "", this->getName().c_str(), v * 0.01f));
         i += 2;
         // 3.A_烘烤温度设定
         v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
         params.push_back(CParam("B_烘烤温度设定", "", this->getName().c_str(), v * 0.1f));
         i += 2;
      }
      else if (v == 4) {
         // 2.A_腔冷却时间
         v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
         params.push_back(CParam("B_腔冷却时间", "", this->getName().c_str(), v * 0.01f));
         i += 2;
      }
      return (int)params.size();
   }
   int CBakeCooling::parsingSVData(const char* pszData, size_t size, std::vector<CParam>& params)
   {
      /*
      1   A烘烤工艺运行步骤   1Word   123456
      2   A烘烤温控表1当前值   2Word   12345.6
      3   A烘烤温控表2当前值   2Word   12345.6
      4   A烘烤温控表4当前值   2Word   12345.6
      5   A烘烤温控表5当前值   2Word   12345.6
      6   A烘烤温控表6当前值   2Word   12345.6
      7   A烘烤温控表7当前值   2Word   12345.6
      8   A烘烤剩余时间   1Word   1234.56
      9   A冷却工艺运行步骤   1Word   123456
      10   A腔冷却剩余时间   1Word   1234.56
      11   B烘烤工艺运行步骤   1Word   123456
      12   B烘烤温控表1当前值   2Word   12345.6
      13   B烘烤温控表2当前值   2Word   12345.6
      14   B烘烤温控表4当前值   2Word   12345.6
      15   B烘烤温控表5当前值   2Word   12345.6
      16   B烘烤温控表6当前值   2Word   12345.6
      17   B烘烤温控表7当前值   2Word   12345.6
      18   B烘烤剩余时间   1Word   1234.56
      19   B冷却工艺运行步骤   1Word   123456
      20   B腔冷却剩余时间   1Word   1234.56
      */
      ASSERT(pszData);
      if (size < 125) return 0;
      int i = 0, v;
      // 1.A烘烤工艺运行步骤
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("A烘烤工艺运行步骤", "", this->getName().c_str(), v));
      i += 2;
      // 2.A烘烤温控表1当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("A烘烤温控表1当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 3.A烘烤温控表2当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("A烘烤温控表2当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 4.A烘烤温控表4当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("A烘烤温控表4当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 5.A烘烤温控表5当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("A烘烤温控表5当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 6.A烘烤温控表6当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("A烘烤温控表6当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 7.A烘烤温控表7当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("A烘烤温控表7当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 8.A烘烤剩余时间
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("A烘烤剩余时间", "", this->getName().c_str(), v * 0.01f));
      i += 2;
      // 9.A冷却工艺运行步骤
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("A冷却工艺运行步骤", "", this->getName().c_str(), v));
      i += 2;
      // 10.A腔冷却剩余时间
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("A腔冷却剩余时间", "", this->getName().c_str(), v * 0.01f));
      i += 2;
      // 11.B烘烤工艺运行步骤
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("B烘烤工艺运行步骤", "", this->getName().c_str(), v));
      i += 2;
      // 12.B烘烤温控表1当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("B烘烤温控表1当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 13.B烘烤温控表2当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("B烘烤温控表2当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 14.B烘烤温控表4当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("B烘烤温控表4当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 15.B烘烤温控表5当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("B烘烤温控表5当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 16.B烘烤温控表6当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("B烘烤温控表6当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 17.B烘烤温控表7当前值
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
      params.push_back(CParam("B烘烤温控表7当前值", "", this->getName().c_str(), v * 0.1f));
      i += 4;
      // 18.B烘烤剩余时间
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("B烘烤剩余时间", "", this->getName().c_str(), v * 0.01f));
      i += 2;
      // 19.B冷却工艺运行步骤
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("B冷却工艺运行步骤", "", this->getName().c_str(), v));
      i += 2;
      // 20.B腔冷却剩余时间
      v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
      params.push_back(CParam("B腔冷却剩余时间", "", this->getName().c_str(), v * 0.01f));
      i += 2;
      return (int)params.size();
   }
}