| | |
| | | #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); \ |
| | | } \ |
| | | } |
| | | |
| | | namespace SERVO { |
| | | #define BLOCK_BUFFER_MAX 1024 |
| | |
| | | #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, |
| | |
| | | Ready = 0, |
| | | Running, |
| | | Picking, |
| | | Picked, |
| | | Placing, |
| | | Restoring, |
| | | Error, |
| | | Abort, |
| | | Restored, |
| | | Completed |
| | | }; |
| | | |
| | |
| | | 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 /* 放片 */ |