mrDarker
2025-05-29 958cfa6b2e1c1eec0e20edc50816ef18f10cbf09
SourceCode/Bond/Servo/CEFEM.cpp
@@ -126,6 +126,211 @@
      return 0;
   }
   int CEFEM::SendHome(int seq)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Robot_home);
      return robotCmd(cmd);
   }
   int CEFEM::SendTransfer(int seq, int armNo, int fromPos, int toPos, int fromSlot, int toSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Transfer);
      cmd.armNo = static_cast<short>(armNo);
      cmd.getPosition = static_cast<short>(fromPos);
      cmd.getSlotNo = static_cast<short>(fromSlot);
      cmd.putPosition = static_cast<short>(toPos);
      cmd.putSlotNo = static_cast<short>(toSlot);
      return robotCmd(cmd);
   }
   int CEFEM::SendMoveToGet(int seq, int armNo, int pos, int slot)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Move);
      cmd.armNo = static_cast<short>(armNo);
      cmd.getPosition = static_cast<short>(pos);
      cmd.getSlotNo = static_cast<short>(slot);
      cmd.subCmd = 1;
      return robotCmd(cmd);
   }
   int CEFEM::SendMoveToPut(int seq, int armNo, int pos, int slot)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Move);
      cmd.armNo = static_cast<short>(armNo);
      cmd.putPosition = static_cast<short>(pos);
      cmd.putSlotNo = static_cast<short>(slot);
      cmd.subCmd = 2;
      return robotCmd(cmd);
   }
   int CEFEM::SendGet(int seq, int armNo, int pos, int slot)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Get);
      cmd.armNo = static_cast<short>(armNo);
      cmd.getPosition = static_cast<short>(pos);
      cmd.getSlotNo = static_cast<short>(slot);
      return robotCmd(cmd);
   }
   int CEFEM::SendPut(int seq, int armNo, int pos, int slot)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Put);
      cmd.armNo = static_cast<short>(armNo);
      cmd.putPosition = static_cast<short>(pos);
      cmd.putSlotNo = static_cast<short>(slot);
      return robotCmd(cmd);
   }
   int CEFEM::SendExchange(int seq, int armNo, int pos, int getSlot, int putSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::One_Action_Exchange);
      cmd.armNo = static_cast<short>(armNo);
      cmd.getPosition = static_cast<short>(pos);
      cmd.putPosition = static_cast<short>(pos);
      cmd.getSlotNo = static_cast<short>(getSlot);
      cmd.putSlotNo = static_cast<short>(putSlot);
      return robotCmd(cmd);
   }
   int CEFEM::SendCommandClear(int seq)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Command_Clear);
      return robotCmd(cmd);
   }
   int CEFEM::SendBatchGet(int seq, int getPos, int getSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Batch_get);
      cmd.armNo = ARM_ALL;
      cmd.getPosition = static_cast<short>(getPos);
      cmd.getSlotNo = static_cast<short>(getSlot);
      return robotCmd(cmd);
   }
   int CEFEM::SendBatchPut(int seq, int putPos, int putSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmd = {};
      cmd.sequenceNo = static_cast<short>(seq);
      cmd.rcmd = static_cast<short>(SERVO::RCMD::Batch_put);
      cmd.armNo = ARM_ALL;
      cmd.putPosition = static_cast<short>(putPos);
      cmd.putSlotNo = static_cast<short>(putSlot);
      return robotCmd(cmd);
   }
   int CEFEM::SendMoveToGetAndHome(int seq, int armNo, int getPos, int getSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmds[2] = {};
      // Move to Get
      cmds[0].sequenceNo = static_cast<short>(seq);
      cmds[0].rcmd = static_cast<short>(SERVO::RCMD::Move);
      cmds[0].armNo = static_cast<short>(armNo);
      cmds[0].getPosition = static_cast<short>(getPos);
      cmds[0].getSlotNo = static_cast<short>(getSlot);
      cmds[0].subCmd = 1;
      // Home
      cmds[1].sequenceNo = static_cast<short>(seq + 1);
      cmds[1].rcmd = static_cast<short>(SERVO::RCMD::Robot_home);
      return robotCmds(cmds, 2);
   }
   int CEFEM::SendMoveToPutAndHome(int seq, int armNo, int putPos, int putSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmds[2] = {};
      // Move to Put
      cmds[0].sequenceNo = static_cast<short>(seq);
      cmds[0].rcmd = static_cast<short>(SERVO::RCMD::Move);
      cmds[0].armNo = static_cast<short>(armNo);
      cmds[0].putPosition = static_cast<short>(putPos);
      cmds[0].putSlotNo = static_cast<short>(putSlot);
      cmds[0].subCmd = 2;
      // Home
      cmds[1].sequenceNo = static_cast<short>(seq + 1);
      cmds[1].rcmd = static_cast<short>(SERVO::RCMD::Robot_home);
      return robotCmds(cmds, 2);
   }
   int CEFEM::SendTransferAndHome(int seq, int armNo, int fromPos, int toPos, int fromSlot, int toSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmds[2] = {};
      // Transfer
      cmds[0].sequenceNo = static_cast<short>(seq);
      cmds[0].rcmd = static_cast<short>(SERVO::RCMD::Transfer);
      cmds[0].armNo = static_cast<short>(armNo);
      cmds[0].getPosition = static_cast<short>(fromPos);
      cmds[0].getSlotNo = static_cast<short>(fromSlot);
      cmds[0].putPosition = static_cast<short>(toPos);
      cmds[0].putSlotNo = static_cast<short>(toSlot);
      // Home
      cmds[1].sequenceNo = static_cast<short>(seq + 1);
      cmds[1].rcmd = static_cast<short>(SERVO::RCMD::Robot_home);
      return robotCmds(cmds, 2);
   }
   int CEFEM::SendGetAndPut(int seq, int armNo, int getPos, int getSlot, int putPos, int putSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmds[2] = {};
      cmds[0].sequenceNo = static_cast<short>(seq);
      cmds[0].rcmd = static_cast<short>(SERVO::RCMD::Get);
      cmds[0].armNo = static_cast<short>(armNo);
      cmds[0].getPosition = static_cast<short>(getPos);
      cmds[0].getSlotNo = static_cast<short>(getSlot);
      cmds[1].sequenceNo = static_cast<short>(seq + 1);
      cmds[1].rcmd = static_cast<short>(SERVO::RCMD::Put);
      cmds[1].armNo = static_cast<short>(armNo);
      cmds[1].putPosition = static_cast<short>(putPos);
      cmds[1].putSlotNo = static_cast<short>(putSlot);
      return robotCmds(cmds, 2);
   }
   int CEFEM::SendPutAndHome(int seq, int armNo, int putPos, int putSlot)
   {
      SERVO::ROBOT_CMD_PARAM cmds[2] = {};
      // Put
      cmds[0].sequenceNo = static_cast<short>(seq);
      cmds[0].rcmd = static_cast<short>(SERVO::RCMD::Put);
      cmds[0].armNo = static_cast<short>(armNo);
      cmds[0].putPosition = static_cast<short>(putPos);
      cmds[0].putSlotNo = static_cast<short>(putSlot);
      // Home
      cmds[1].sequenceNo = static_cast<short>(seq + 1);
      cmds[1].rcmd = static_cast<short>(SERVO::RCMD::Robot_home);
      return robotCmds(cmds, 2);
   }
   void CEFEM::init()
   {
      CEquipment::init();
@@ -204,7 +409,7 @@
         // eq cim mode change
         CEqCimModeChangeStep* pStep = new CEqCimModeChangeStep();
         pStep->setName(STEP_CIM_MODE_CHANGE);
         pStep->setWriteSignalDev(0x70);
         pStep->setWriteSignalDev(0x60);
         pStep->setCimModeDev(0x15);
         if (addStep(STEP_ID_CIMMODE_CHANGED_CMD_REPLY, pStep) != 0) {
            delete pStep;
@@ -215,7 +420,7 @@
         // eq cim message
         CEqCimMessageCmdStep* pStep = new CEqCimMessageCmdStep();
         pStep->setName(STEP_CIM_MESSAGE_CMD);
         pStep->setWriteSignalDev(0x71);
         pStep->setWriteSignalDev(0x61);
         pStep->setCimMessageDev(0x0);
         if (addStep(STEP_ID_CIM_MSG_SET_CMD_REPLY, pStep) != 0) {
            delete pStep;
@@ -227,7 +432,7 @@
         // CIM Message Confirm
         CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, 0x5f80);
         pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM);
         pStep->setWriteSignalDev(0x59);
         pStep->setWriteSignalDev(0x49);
         if (addStep(STEP_ID_CIM_MSG_CONFIRM_REPORT, pStep) != 0) {
            delete pStep;
         }
@@ -255,7 +460,7 @@
         // eq cim message clear
         CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep();
         pStep->setName(STEP_CIM_MESSAGE_CLEAR);
         pStep->setWriteSignalDev(0x72);
         pStep->setWriteSignalDev(0x62);
         pStep->setClearCimMessageDev(0x13);
         if (addStep(STEP_ID_CIM_MSG_CLEAR_CMD_REPLY, pStep) != 0) {
            delete pStep;
@@ -266,7 +471,7 @@
         // datetime set cmd
         CEqDateTimeSetCmdStep* pStep = new CEqDateTimeSetCmdStep();
         pStep->setName(STEP_DATETIME_SET_CMD);
         pStep->setWriteSignalDev(0x73);
         pStep->setWriteSignalDev(0x63);
         pStep->setDateTimeDev(0x16);
         if (addStep(STEP_ID_DATETIME_SET_CMD_REPLY, pStep) != 0) {
            delete pStep;
@@ -277,7 +482,7 @@
         // vcr enable
         CEqVCREnableStep* pStep = new CEqVCREnableStep();
         pStep->setName(STEP_EQ_VCR_ENABLE);
         pStep->setWriteSignalDev(0x74);
         pStep->setWriteSignalDev(0x64);
         pStep->setEqVCRModeDev(0x1F);
         if (addStep(STEP_ID_VCR_ENABLE_CMD_REPLY, pStep) != 0) {
            delete pStep;
@@ -288,7 +493,7 @@
         // eq mode change
         CEqModeChangeStep* pStep = new CEqModeChangeStep();
         pStep->setName(STEP_EQ_MODE_CHANGE);
         pStep->setWriteSignalDev(0x75);
         pStep->setWriteSignalDev(0x65);
         pStep->setEqModeDev(0x1E);
         if (addStep(STEP_ID_EQMODE_CHANGE_CMD_REPLY, pStep) != 0) {
            delete pStep;