mrDarker
2025-10-22 e8a27bb203fe2aff70390a5eca002d7438da9b0f
SourceCode/Bond/Servo/ServoCommo.h
@@ -1,5 +1,36 @@
#pragma once
#include <string>
#include <vector>
#define CHECK_READ_STEP_SIGNAL(addr, data, size) {                     \
   BOOL bFlag = isBitOn(data, size, addr);                           \
   SERVO::CStep* pStep = getStep(addr);                           \
   if (pStep != nullptr) {                                       \
      ((CReadStep*)pStep)->onReadSignal(bFlag ? addr : 0);            \
   }                                                      \
}
#define CHECK_WRITE_STEP_SIGNAL(addr, data, size) {                     \
   BOOL bFlag = isBitOn(data, size, addr);                           \
   SERVO::CStep* pStep = getStep(addr);                           \
   if (pStep != nullptr) {                                       \
      ((CWriteStep*)pStep)->onRecvSignal(bFlag ? addr : 0);            \
   }                                                      \
}
#define CHECK_RUN_ACTIVE_ROBOT_TASK(art) {                           \
   if (art != nullptr) {                                       \
      art->pick();                                          \
      std::string strDescription = art->getDescription();               \
      unlock();                                             \
      if (m_listener.onRobotTaskEvent != nullptr) {                  \
         m_listener.onRobotTaskEvent(this, art, ROBOT_EVENT_CREATE);      \
      }                                                   \
      LOGI("创建新任务<%s>...", strDescription.c_str());               \
      continue;                                             \
   }                                                      \
}
namespace SERVO {
#define BLOCK_BUFFER_MAX         1024
@@ -8,6 +39,19 @@
#define PATH_MAX               8
#define SIGNAL_MAX               8
#define ARM_ALL                  99
   enum class RET {
      OK = 1,
      NG,
   };
   using JobDataRequestAck = RET;
   enum class InspResult
   {
      NotInspected = 0,  // 初始化状态,尚未检测
      Pass,              // 检测合格
      Fail               // 检测不合格
   };
   enum class PortType {
      Loading = 1,
@@ -29,6 +73,7 @@
   };
   enum class MaterialsType {
      G0 = 0,
      G1 = 1,
      G2 = 2,
      G1G2 = 3
@@ -111,10 +156,12 @@
      Ready = 0,
      Running,
      Picking,
      Picked,
      Placing,
      Restoring,
      Error,
      Abort,
      Restored,
      Completed
   };
@@ -149,9 +196,48 @@
      BOOL armState[2];
   } ROBOT_MONITORING_DATA, RMDATA;
   /* 工艺(加工处理)状态 */
   enum class PROCESS_STATE {
      Ready = 0,
      Processing,
      Complete,
      Error
   };
   /* Port Status */
   struct SlotConfig {
      int nSlotID = 0;
      bool isEnabled = false;
   };
   struct PortConfig {
      int nMaterialType;            // 物料类型,1: G1, 2: G2, 3: G1+G2
      std::string strPortName;       // 例如 "Port 1"
      std::string strRecipe;         // 例如 "P1001"
      std::string strLotID;
      std::string strProductID;
      std::string strOperationID;
      std::vector<SlotConfig> vecSlot;
   };
   /* EQ Data changed code */
#define EDCC_FETCHOUT_JOB            1000   /* ȡƬ */
#define EDCC_STORED_JOB               1001   /* 放片 */
   /* Cassette Ctrl CMD */
#define CCC_MAP_DOWNLOAD         1
#define CCC_CLAMP               2
#define CCC_UNCLAMP               3
#define CCC_RECLAMP               4
#define CCC_PROCESS_START         5
#define CCC_PROCESS_START_BY_COUNT   6
#define CCC_PROCESS_PAUSE         7
#define CCC_PROCESS_RESUME         8
#define CCC_PROCESS_ABORT         9
#define CCC_PROCESS_CANCEL         10
#define CCC_PROCESS_END            11
#define CCC_ID_UPDATE            12
#define CCC_MAP_UPDATE            13
}