|
|
|
|
|
#include "JelExcecute.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JelExcecute::JelExcecute()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JelExcecute::~JelExcecute()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool JelExcecute::InitJelRobot(int serialPort, int baudRate)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_nPort = serialPort;
|
|
|
|
|
|
m_nBaud = baudRate;
|
|
|
|
|
|
|
|
|
|
|
|
m_RobotComm.SetWorkMode(FALSE, 100);
|
|
|
|
|
|
std::string strCom = std::to_string(m_nBaud) + ",N,8,1";
|
|
|
|
|
|
m_nPort = 2;
|
|
|
|
|
|
if (m_RobotComm.Open(m_nPort, (char*)strCom.c_str()))
|
|
|
|
|
|
{
|
|
|
|
|
|
//m_RobotComm.SetWnd(gChildPCS_WaferTransfer->GetSafeHwnd());
|
|
|
|
|
|
m_RobotComm.SetNotify(std::bind(&JelExcecute::OnRobotCommRecv, this));
|
|
|
|
|
|
|
|
|
|
|
|
CRobotCmdInfo RobotCmd;
|
|
|
|
|
|
RobotCmd.m_RobotCmdType = _RobotCmd_ResetErr;
|
|
|
|
|
|
SendRobotCmd(RobotCmd);
|
|
|
|
|
|
Sleep(1000);
|
|
|
|
|
|
RobotCmd.m_RobotCmdType = _RobotCmd_Org;
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = 60;
|
|
|
|
|
|
bool issuccess = SendRobotCmd(RobotCmd);
|
|
|
|
|
|
if (!issuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Sleep(500);
|
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC>ֱ<D7BC><D6B1>
|
|
|
|
|
|
RobotCmd.m_RobotCmdType = _RobotCmd_Init_Align;
|
|
|
|
|
|
issuccess = SendRobotCmd(RobotCmd);
|
|
|
|
|
|
if (!issuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool JelExcecute::SendRobotCmd(CRobotCmdInfo& RobotCmd)
|
|
|
|
|
|
{
|
|
|
|
|
|
eGlobalVariableType AlarmType = _GlobalVar_NULL;
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ȰѴ<C8B0><D1B4>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1>
|
|
|
|
|
|
char Buf[256];
|
|
|
|
|
|
memset(Buf, 0, 256);
|
|
|
|
|
|
m_RobotComm.ReadBuf(Buf, 256);
|
|
|
|
|
|
}
|
|
|
|
|
|
m_IsbJelCommRecv = false;//<2F>Ƿ<EFBFBD><C7B7>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>Ҫִ<D2AA>е<EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
RobotJel_GetSendCmd(RobotCmd);
|
|
|
|
|
|
|
|
|
|
|
|
AlarmType = RobotJel_SendCmdToRobotExt(RobotCmd);
|
|
|
|
|
|
if (AlarmType != _GlobalVar_NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void JelExcecute::OnRobotCommRecv()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_IsbJelCommRecv = true;//<2F>Ƿ<EFBFBD><C7B7>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void JelExcecute::RobotJel_GetSendCmd(CRobotCmdInfo& RobotCmd)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = m_nWaitTime;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RobotCmd_Check_ARM_EXIST_WAFER)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.m_armPos == "up")
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1CS4";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_armPos == "down")
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1CS8";
|
|
|
|
|
|
}
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_ImmediateReadFeedback;
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = m_nWaitTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_ResetErr) //<2F><>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>$1RD $2RD<52><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<D7BC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1RD";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(RobotCmd.m_RobotCmdType == _RobotCmd_Org)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G2";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_RunToCassMappingPoint)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string smdStr = "$1G";
|
|
|
|
|
|
if (RobotCmd.LoadportId == POS_CASS_LEFT)
|
|
|
|
|
|
{
|
|
|
|
|
|
smdStr.append(std::to_string(SCRIPT_X_RUN_TO_MAPPING_POS_INDEX + 4 * 0));
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.LoadportId == POS_CASS_CENTER)
|
|
|
|
|
|
{
|
|
|
|
|
|
smdStr.append(std::to_string(SCRIPT_X_RUN_TO_MAPPING_POS_INDEX + 4 * 1));
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.LoadportId == POS_CASS_RIGHT)
|
|
|
|
|
|
{
|
|
|
|
|
|
smdStr.append(std::to_string(SCRIPT_X_RUN_TO_MAPPING_POS_INDEX + 4 * 2));
|
|
|
|
|
|
}
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = smdStr;
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_Mapping)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string smdStr = "$1G";
|
|
|
|
|
|
if (RobotCmd.LoadportId == POS_CASS_LEFT)
|
|
|
|
|
|
{
|
|
|
|
|
|
smdStr.append(std::to_string(SCRIPT_MAPPING_INDEX + 0));
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.LoadportId == POS_CASS_CENTER)
|
|
|
|
|
|
{
|
|
|
|
|
|
smdStr.append(std::to_string(SCRIPT_MAPPING_INDEX + 1));
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.LoadportId == POS_CASS_RIGHT)
|
|
|
|
|
|
{
|
|
|
|
|
|
smdStr.append(std::to_string(SCRIPT_MAPPING_INDEX + 2));
|
|
|
|
|
|
}
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = smdStr;
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_ReadMappingData)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G274";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_ImmediateReadFeedback;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RObotCmd_Switch_bank)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string cmdStr = "$1G";
|
|
|
|
|
|
cmdStr.append(std::to_string(SCRIPT_BANK_INDEX + RobotCmd.m_bankIndex));
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = cmdStr;
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_SelectCass)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string cmdStr = "$1G";
|
|
|
|
|
|
cmdStr.append(std::to_string(SCRIPT_CASS_START_INDEX + (RobotCmd.m_cassIndex - 1)));
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = cmdStr;
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_SelectSlot)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string cmdStr = "$1G";
|
|
|
|
|
|
if (RobotCmd.m_cassIndex <= 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
cmdStr.append(std::to_string(SCRIPT_SLOT_START_INDEX + (RobotCmd.m_Slot - 1)));
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
cmdStr.append(std::to_string(SCRIPT_SLOT_START_INDEX));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = cmdStr;
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_X_Move)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string cmdStr = "$1G";
|
|
|
|
|
|
int xMoveIndex = SCRIPT_X_MOVE_INDEX;
|
|
|
|
|
|
if (RobotCmd.m_dealWaferType == DEAL_WAFER_TAKE)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.m_bankIndex == BANK_WAFER)
|
|
|
|
|
|
{
|
|
|
|
|
|
xMoveIndex = xMoveIndex + 4 * (RobotCmd.m_cassIndex - 1) + 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_bankIndex == BANK_RING)
|
|
|
|
|
|
{
|
|
|
|
|
|
xMoveIndex = xMoveIndex + 4 * (RobotCmd.m_cassIndex - 1) + 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(RobotCmd.m_dealWaferType == DEAL_WAFER_RETURN)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.m_bankIndex == BANK_WAFER)
|
|
|
|
|
|
{
|
|
|
|
|
|
xMoveIndex = xMoveIndex + 4 * (RobotCmd.m_cassIndex - 1) + 3;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_bankIndex == BANK_RING)
|
|
|
|
|
|
{
|
|
|
|
|
|
xMoveIndex = xMoveIndex + 4 * (RobotCmd.m_cassIndex - 1) + 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
cmdStr.append(std::to_string(xMoveIndex));
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = cmdStr;
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_TakeWafer)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.m_dealWaferType == DEAL_WAFER_TAKE)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.m_bankIndex == BANK_WAFER)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "1G52";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_bankIndex == BANK_RING)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "1G50";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_dealWaferType == DEAL_WAFER_RETURN)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.m_bankIndex == BANK_WAFER)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "1G53";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_bankIndex == BANK_RING)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "1G51";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
eGlobalVariableType JelExcecute::RobotJel_SendCmdToRobotExt(CRobotCmdInfo &RobotCmd)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string RetStr;
|
|
|
|
|
|
std::string SendCmd = RobotCmd.m_SendCmdStr;
|
|
|
|
|
|
bool bOvertime = false;
|
|
|
|
|
|
std::string ErrMsg;
|
|
|
|
|
|
{
|
|
|
|
|
|
int len = SendCmd.length();
|
|
|
|
|
|
SendCmd += " ";//<2F><><EFBFBD><EFBFBD>2 <20>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CR><LF>
|
|
|
|
|
|
char *pStr = (char*)SendCmd.c_str();
|
|
|
|
|
|
pStr[len++] = 0x0d;//<CR>
|
|
|
|
|
|
pStr[len++] = 0x0a;//<LF>
|
|
|
|
|
|
char Buf[COM_BUF_LEN];
|
|
|
|
|
|
memset(Buf, 0, COM_BUF_LEN);
|
|
|
|
|
|
memcpy(Buf, pStr, len);
|
|
|
|
|
|
m_RobotComm.WriteBuf(Buf, len);
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdSendType == _RobotCmdSendType_SendOnly)//ֻ<><D6BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
{
|
|
|
|
|
|
return _GlobalVar_NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdSendType == _RobotCmdSendType_ImmediateReadFeedback)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_armIsExistWafer = false;
|
|
|
|
|
|
Sleep(2000);
|
|
|
|
|
|
m_IsbJelCommRecv = false;//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
memset(Buf, 0, COM_BUF_LEN);
|
|
|
|
|
|
m_RobotComm.ReadBuf(Buf, COM_BUF_LEN);
|
|
|
|
|
|
std::string RetStr(Buf);
|
|
|
|
|
|
|
|
|
|
|
|
//>$10<31><30>ʾ<EFBFBD><CABE><EFBFBD>ϣ<EFBFBD>>$11<31><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
|
int findIndex = 0;
|
|
|
|
|
|
findIndex = RetStr.find(">$11");
|
|
|
|
|
|
findIndex >= 0 ? m_armIsExistWafer = true : m_armIsExistWafer = false;
|
|
|
|
|
|
|
|
|
|
|
|
if (RetStr.find(">") != -1)//<2F><><EFBFBD><EFBFBD>">"<22><>ʾִ<CABE><D6B4><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RevStr = RetStr;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
ErrMsg = "Read Feed back Err";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else//<2F>첽<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ȡ
|
|
|
|
|
|
{
|
|
|
|
|
|
int WaitDelay = RobotCmd.m_WaitCmdTime * 1000;//<2F>ܹ<EFBFBD><DCB9>ȴ<EFBFBD><C8B4><EFBFBD>ʱ<EFBFBD><CAB1>ms
|
|
|
|
|
|
int CheckDelay = 200;//ÿ<><C3BF>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>ʱ
|
|
|
|
|
|
int CurDelay = 0;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
|
|
|
|
|
|
bOvertime = false;
|
|
|
|
|
|
ErrMsg = "";
|
|
|
|
|
|
while (1)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_IsbJelCommRecv)//<2F>յ<EFBFBD><D5B5>µ<EFBFBD><C2B5><EFBFBD>Ϣʱ<CFA2><CAB1>ȥ<EFBFBD><C8A5>ȡ
|
|
|
|
|
|
{
|
|
|
|
|
|
Sleep(CheckDelay);
|
|
|
|
|
|
m_IsbJelCommRecv = false;//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
memset(Buf, 0, COM_BUF_LEN);
|
|
|
|
|
|
m_RobotComm.ReadBuf(Buf, COM_BUF_LEN);
|
|
|
|
|
|
std::string RetStr(Buf);
|
|
|
|
|
|
if (RetStr.find(">") != -1)//<2F><><EFBFBD><EFBFBD>">"<22><>ʾִ<CABE><D6B4><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD>ͺ<EFBFBD>ֻ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdSendType == _RobotCmdSendType_WaitFeedback)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RevStr = RetStr;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RetStr.find(RobotCmd.m_SendCmdStr) != -1)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cmd<6D><64>ʾִ<CABE>н<EFBFBD><D0BD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RetStr.find("ERROR") != -1)
|
|
|
|
|
|
{
|
|
|
|
|
|
ErrMsg = "<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
CurDelay += CheckDelay;
|
|
|
|
|
|
if (CurDelay > WaitDelay)
|
|
|
|
|
|
{
|
|
|
|
|
|
bOvertime = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
Sleep(CheckDelay);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (bOvertime)//<2F><><EFBFBD>ⳬʱ
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string AddInfo;
|
|
|
|
|
|
AddInfo = "Cmd Over Time:";
|
|
|
|
|
|
AddInfo += RobotCmd.m_SendCmdStr;
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_ErrStr = AddInfo;
|
|
|
|
|
|
return _GlobalVar_Alarm_Robot_CmdOverTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//ERR:code:Description
|
|
|
|
|
|
if (ErrMsg != "")//ִ<>д<EFBFBD><D0B4><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string AddInfo = RobotCmd.m_SendCmdStr;
|
|
|
|
|
|
AddInfo += "Cmd Execute Error:";
|
|
|
|
|
|
AddInfo += ErrMsg;
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_ErrStr = AddInfo;
|
|
|
|
|
|
return _GlobalVar_Alarm_Robot_StateErr;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return _GlobalVar_NULL;
|
|
|
|
|
|
}
|