#pragma once #include "CEquipment.h" #include "CLoadPort.h" #include "CAligner.h" #include "CFliper.h" #include "CArmTray.h" #include "Context.h" namespace SERVO { class CEFEM : public CEquipment { public: CEFEM(); virtual ~CEFEM(); public: virtual const char* getClassName(); virtual void init(); virtual void term(); virtual void initPins(); virtual void initSteps(); virtual void initSlots(); virtual void onTimer(UINT nTimerid); virtual void serialize(CArchive& ar); virtual void getAttributeVector(CAttributeVector& attrubutes); virtual int recvIntent(CPin* pPin, CIntent* pIntent); virtual void onReceiveLBData(const char* pszData, size_t size); virtual int onReceivedJob(int port, CJobDataS* pJobDataS); virtual int onSentOutJob(int port, CJobDataS* pJobDataS); virtual int onFetchedOutJob(int port, CJobDataB* pJobDataB); virtual int onStoredJob(int port, CJobDataB* pJobDataB); virtual int getIndexerOperationModeBaseValue(); public: void setContext(CContext* pContext); void setPort(unsigned int index, CLoadPort* pPort); void setAligner(CAligner* pAligner); void setFliper(CFliper* pFliper); void setArmTray(unsigned int index, CArmTray* pArmTray); int robotCmd(ROBOT_CMD_PARAM& robotCmdParam, ONWRITED onWritedBlock = nullptr); int robotCmds(ROBOT_CMD_PARAM* robotCmdParam, unsigned int count, ONWRITED onWritedBlock = nullptr); RMDATA& getRobotMonitoringData(); // ¿ì½Ý·â×° int robotSendHome(int seq, ONWRITED onWritedBlock = nullptr); int robotSendTransfer(int seq, int armNo, int fromPos, int toPos, int fromSlot, int toSlot, ONWRITED onWritedBlock = nullptr); int robotSendMoveToGet(int seq, int armNo, int pos, int slot, ONWRITED onWritedBlock = nullptr); int robotSendMoveToPut(int seq, int armNo, int pos, int slot, ONWRITED onWritedBlock = nullptr); int robotSendGet(int seq, int armNo, int pos, int slot, ONWRITED onWritedBlock = nullptr); int robotSendPut(int seq, int armNo, int pos, int slot, ONWRITED onWritedBlock = nullptr); int robotSendExchange(int seq, int armNo, int pos, int getSlot, int putSlot, ONWRITED onWritedBlock = nullptr); int robotSendCommandClear(int seq, ONWRITED onWritedBlock = nullptr); int robotSendBatchGet(int seq, int getPos, int getSlot, ONWRITED onWritedBlock = nullptr); int robotSendBatchPut(int seq, int putPos, int putSlot, ONWRITED onWritedBlock = nullptr); int robotSendMoveToGetAndHome(int seq, int armNo, int getPos, int getSlot, ONWRITED onWritedBlock = nullptr); int robotSendMoveToPutAndHome(int seq, int armNo, int putPos, int putSlot, ONWRITED onWritedBlock = nullptr); int robotSendTransferAndHome(int seq, int armNo, int fromPos, int toPos, int fromSlot, int toSlot, ONWRITED onWritedBlock = nullptr); int robotSendGetAndPut(int seq, int armNo, int getPos, int getSlot, int putPos, int putSlot, ONWRITED onWritedBlock = nullptr); int robotSendPutAndHome(int seq, int armNo, int putPos, int putSlot, ONWRITED onWritedBlock = nullptr); void printDebugRobotState(); private: CLoadPort* m_pPort[4]; CAligner* m_pAligner; CFliper* m_pFliper; CArmTray* m_pArmTray[2]; RMDATA m_robotData; CContext* m_pActiveContext; }; }