|
|
|
|
|
#include "JELOperate.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JELOperate::JELOperate()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JELOperate::~JELOperate()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool JELOperate::InitJEL()
|
|
|
|
|
|
{
|
|
|
|
|
|
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(&JELOperate::OnRobotCommRecv, this));
|
|
|
|
|
|
|
|
|
|
|
|
CRobotCmdInfo RobotCmd;
|
|
|
|
|
|
RobotCmd.m_RobotCmdType = _RobotCmd_ResetErr;
|
|
|
|
|
|
SendRobotCmd(RobotCmd);
|
|
|
|
|
|
Sleep(500);
|
|
|
|
|
|
RobotCmd.m_RobotCmdType = _RobotCmd_Org;
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = 60;
|
|
|
|
|
|
bool issuccess = SendRobotCmd(RobotCmd);
|
|
|
|
|
|
if (!issuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
/*if (!issuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
CRobotCmdInfo RobotCmd2;
|
|
|
|
|
|
RobotCmd2.m_RobotCmdType = _RobotCmd_ResetErr;
|
|
|
|
|
|
SendRobotCmd(RobotCmd2);
|
|
|
|
|
|
Sleep(500);
|
|
|
|
|
|
SendRobotCmd(RobotCmd2);
|
|
|
|
|
|
Sleep(500);
|
|
|
|
|
|
RobotCmd2.m_RobotCmdType = _RobotCmd_Org;
|
|
|
|
|
|
bool issuccess = SendRobotCmd(RobotCmd2);
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
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 JELOperate::InitAlign()
|
|
|
|
|
|
{
|
|
|
|
|
|
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()))
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC>ֱ<D7BC><D6B1>
|
|
|
|
|
|
CRobotCmdInfo RobotCmd;
|
|
|
|
|
|
RobotCmd.m_RobotCmdType = _RobotCmd_Init_Align;
|
|
|
|
|
|
return SendRobotCmd(RobotCmd);
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool JELOperate::SendRobotCmd(CRobotCmdInfo& RobotCmd)
|
|
|
|
|
|
{
|
|
|
|
|
|
int m_nSlot = 0;
|
|
|
|
|
|
//ȡ<><C8A1>
|
|
|
|
|
|
/*CRobotCmdInfo RobotCmd;
|
|
|
|
|
|
RobotCmd.m_RobotCmdType = _RobotCmd_TransferWafer;
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_ImmediateReadFeedback;
|
|
|
|
|
|
RobotCmd.m_Slot = m_nSlot + 1;
|
|
|
|
|
|
RobotCmd.m_FromPos = _WaferPos_Cassette;
|
|
|
|
|
|
RobotCmd.m_ToPos = _WaferPos_Arm1;*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eGlobalVariableType AlarmType = _GlobalVar_NULL;
|
|
|
|
|
|
//if (!m_RobotComm.IsOpen())
|
|
|
|
|
|
//{
|
|
|
|
|
|
// //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
// RobotCmd.m_ErrStr = "Com Port Not Open";
|
|
|
|
|
|
// //return _GlobalVar_Alarm_Robot_ComPortNotOpen;
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
//}
|
|
|
|
|
|
std::string InfoStr = GetRobotCmdInfoStr(RobotCmd);
|
|
|
|
|
|
|
|
|
|
|
|
//m_CurRobotCmdType = RobotCmd.m_RobotCmdType;
|
|
|
|
|
|
//<2F>ȰѴ<C8B0><D1B4>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1>
|
|
|
|
|
|
{
|
|
|
|
|
|
char Buf[256];
|
|
|
|
|
|
memset(Buf, 0, 256);
|
|
|
|
|
|
m_RobotComm.ReadBuf(Buf, 256);
|
|
|
|
|
|
}
|
|
|
|
|
|
bool m_IsbJelCommRecv = false;//<2F>Ƿ<EFBFBD><C7B7>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
RobotJel_GetSendCmd(RobotCmd);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
if (RobotCmd.m_SendCmdStr == "")
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_ErrStr = "GetSendCmd Failed";
|
|
|
|
|
|
//return _GlobalVar_Alarm_Robot_CmdNak;
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
//robot<6F>˶<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD>foup <20><>
|
|
|
|
|
|
/*bool bLoadPortSafetyLock = (m_CurRobotCmdType == _RobotCmd_TransferWafer || m_CurRobotCmdType == _RobotCmd_ToWaitPos || m_CurRobotCmdType == _RobotCmd_Org);
|
|
|
|
|
|
if (bLoadPortSafetyLock)
|
|
|
|
|
|
{
|
|
|
|
|
|
gLogMgr->WriteDebugLog("LoadPortSafety-->Lock");
|
|
|
|
|
|
}*/
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD>robot(<28><><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣)
|
|
|
|
|
|
AlarmType = RobotJel_SendCmdToRobotExt(RobotCmd);
|
|
|
|
|
|
/*if (bLoadPortSafetyLock)
|
|
|
|
|
|
{
|
|
|
|
|
|
gLogMgr->WriteDebugLog("LoadPortSafety-->Unlock");
|
|
|
|
|
|
}*/
|
|
|
|
|
|
//<2F><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>״̬ʱ<CCAC><CAB1>ȡrobot <20><>aligner<65>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
if (AlarmType != _GlobalVar_NULL && RobotCmd.m_RobotCmdSendType == _RobotCmdSendType_WaitCmdEnd)
|
|
|
|
|
|
{
|
|
|
|
|
|
CheckRobotErrState(RobotCmd);
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
std::string JELOperate::GetRobotCmdInfoStr(CRobotCmdInfo &RobotCmd)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string InfoStr;
|
|
|
|
|
|
switch (RobotCmd.m_RobotCmdType)
|
|
|
|
|
|
{
|
|
|
|
|
|
case _RobotCmd_TransferWafer:
|
|
|
|
|
|
case _RobotCmd_ToWaitPos:
|
|
|
|
|
|
{
|
|
|
|
|
|
InfoStr = "TransferWafer : ";
|
|
|
|
|
|
//InfoStr += GetWaferPosTypeStr(RobotCmd.m_FromPos);
|
|
|
|
|
|
InfoStr += " -> ";
|
|
|
|
|
|
//InfoStr += GetWaferPosTypeStr(RobotCmd.m_ToPos);
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Cassette || RobotCmd.m_ToPos == _WaferPos_Cassette)
|
|
|
|
|
|
{
|
|
|
|
|
|
InfoStr += " Slot: ";
|
|
|
|
|
|
InfoStr += std::to_string(RobotCmd.m_Slot);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_ResetErr:
|
|
|
|
|
|
InfoStr = "_RobotCmd_ResetErr";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_Arm1Arm2MergePos:
|
|
|
|
|
|
InfoStr = "_RobotCmd_Arm1Arm2MergePos";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_QueryState:
|
|
|
|
|
|
InfoStr = "_RobotCmd_QueryState";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_QueryCoord1:
|
|
|
|
|
|
InfoStr = "_RobotCmd_QueryCoord1";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_QueryCoord2:
|
|
|
|
|
|
InfoStr = "_RobotCmd_QueryCoord2";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_QueryCoord3:
|
|
|
|
|
|
InfoStr = "_RobotCmd_QueryCoord3";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_AlignerExt:
|
|
|
|
|
|
InfoStr = "_RobotCmd_AlignerExt";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_AlignerOrg:
|
|
|
|
|
|
InfoStr = "_RobotCmd_AlignerOrg";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_AlignerVacOn:
|
|
|
|
|
|
InfoStr = "_RobotCmd_AlignerVacOn";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_AlignerVacOff:
|
|
|
|
|
|
InfoStr = "_RobotCmd_AlignerVacOff";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case _RobotCmd_AlignerSetPar:
|
|
|
|
|
|
InfoStr = "_RobotCmd_AlignerSetPar";
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
return InfoStr;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void JELOperate::RobotJel_GetSendCmd(CRobotCmdInfo &RobotCmd)
|
|
|
|
|
|
{
|
|
|
|
|
|
int RobotCmdWaitTime = m_nWaitTime;
|
|
|
|
|
|
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RobotCmd_RunToCassMappingPoint)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.LoadportId == LOADPORT_LEFT)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G300";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.LoadportId == LOADPORT_CENTER)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G301";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.LoadportId == LOADPORT_RIGHT)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G302";
|
|
|
|
|
|
}
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_ImmediateReadFeedback;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RobotCmd_ReadMappingData)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G35";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_ImmediateReadFeedback;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RobotCmd_Mapping)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.LoadportId == LOADPORT_LEFT)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G7";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.LoadportId == LOADPORT_CENTER)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G8";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.LoadportId == LOADPORT_RIGHT)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G9";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RObotCmd_RotateToWaferIdPos)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G310";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RobotCmd_Init_Align)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G299";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RObotCmd_Switch_bank)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RobotCmd.m_Slot == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G5";
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G4";
|
|
|
|
|
|
}
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RobotCmd_AlignerOrg)//reset err->org->ȡ<><C8A1>λ<EFBFBD><CEBB>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G112";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RobotCmd_Port1Org)//reset err->org->ȡ<><C8A1>λ<EFBFBD><CEBB>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G105";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.m_RobotCmdType == _RobotCmd_Port2Org)//reset err->org->ȡ<><C8A1>λ<EFBFBD><CEBB>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G106";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_AlignerExt)//ִ<><D6B4>ֱ
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = 20;
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G294";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_AlignerVacOn)//aligner<65><72><EFBFBD><EFBFBD>on
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$2WUC";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_AlignerVacOff)//aligner<65><72><EFBFBD><EFBFBD>off
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$2WDF";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_AlignerSetPar)//<2F><><EFBFBD><EFBFBD>aligner<65>Ƕ<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
std::string str = "$2WOP" + std::to_string(m_nAligner);
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = str;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_ResetErr)//Robot<6F><74><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1RD";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_QueryState)//<2F><>ѯ״̬
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitFeedback;//<2F><><EFBFBD>ͺ<EFBFBD>ֻ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1ER";
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_Org)//ROBOT ORG
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G3";
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_QueryCoord1)//Robot<6F><74>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_ImmediateReadFeedback;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>(ͬ<><CDAC>)
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$16X";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_QueryCoord2)//Robot<6F><74>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_ImmediateReadFeedback;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>(ͬ<><CDAC>)
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$16R";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_QueryCoord3)//Robot<6F><74>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_ImmediateReadFeedback;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>(ͬ<><CDAC>)
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$16Y";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_Arm1VacOff)//Arm1<6D><31><EFBFBD><EFBFBD>off
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1DS20";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_Arm2VacOff)//Arm2<6D><32><EFBFBD><EFBFBD>off
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1DS10";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_Arm1VacOn)//Arm1<6D><31><EFBFBD><EFBFBD>on
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1DS21";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_Arm2VacOn)//Arm2<6D><32><EFBFBD><EFBFBD>on
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1DS11";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_AdsVacOn)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G91";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_AdsVacOff)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G82";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_InitSet)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_SendOnly;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G80";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_Arm_Check)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//ֻ<><D6BB><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Arm1)
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G36";
|
|
|
|
|
|
else
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G37";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_TransferWafer)//Robot<6F><74><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ָȡ_WaferPos_Cassette
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Cassette && RobotCmd.m_ToPos == _WaferPos_Arm1)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>Ϻ<EFBFBD>1ȡ<31><C8A1>Բָ<D4B2>$1G10->$1G34<33><34><EFBFBD>Ϻ<EFBFBD>2ȡ<32><C8A1>Բָ<D4B2>$1G80->$1G104
|
|
|
|
|
|
std::string cmdStr = "$1G";
|
|
|
|
|
|
int cmdIndex = 0;
|
|
|
|
|
|
RobotCmd.m_cassIndex == 1 ? cmdIndex = RobotCmd.m_Slot + 9 : cmdIndex = RobotCmd.m_Slot + 79;
|
|
|
|
|
|
cmdStr += std::to_string(cmdIndex);
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = cmdStr;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>_WaferPos_Cassette
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Arm1 && RobotCmd.m_ToPos == _WaferPos_Cassette)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>Ϻ<EFBFBD>1<EFBFBD>ž<EFBFBD>Բָ<D4B2>$1G40->$1G64<36><34><EFBFBD>Ϻ<EFBFBD>2ȡ<32><C8A1>Բָ<D4B2>$1G110->$1G134
|
|
|
|
|
|
std::string cmdStr = "$1G";
|
|
|
|
|
|
int cmdIndex = 0;
|
|
|
|
|
|
RobotCmd.m_cassIndex == 1 ? cmdIndex = RobotCmd.m_Slot + 39 : cmdIndex = RobotCmd.m_Slot + 109;
|
|
|
|
|
|
cmdStr += std::to_string(cmdIndex);
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = cmdStr;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ָȡ<D6B8><C8A1>Aligner
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Arm1 && RobotCmd.m_ToPos == _WaferPos_Aligner)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G291";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Aligner && RobotCmd.m_ToPos == _WaferPos_Arm1)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G290";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Aligner && RobotCmd.m_ToPos == _WaferPos_Arm2)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G292";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Arm2 && RobotCmd.m_ToPos == _WaferPos_Aligner)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G293";
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><>ָȡ<D6B8><C8A1>HotPlate
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Arm2 && RobotCmd.m_ToPos == _WaferPos_HotPlate)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G298";
|
|
|
|
|
|
}
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_HotPlate && RobotCmd.m_ToPos == _WaferPos_Arm2)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G297";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>ȴ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_ToWaitPos)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = RobotCmdWaitTime;
|
|
|
|
|
|
//Arm2<6D>ƶ<EFBFBD><C6B6><EFBFBD>ȡaligner <20>ȴ<EFBFBD>λ
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_Aligner && RobotCmd.m_ToPos == _WaferPos_Arm2)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G287";
|
|
|
|
|
|
}
|
|
|
|
|
|
//Arm2<6D>ƶ<EFBFBD><C6B6><EFBFBD>ȡpreheater <20>ȴ<EFBFBD>λ
|
|
|
|
|
|
if (RobotCmd.m_FromPos == _WaferPos_HotPlate && RobotCmd.m_ToPos == _WaferPos_Arm2)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G289";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//Arm1<6D><31>Arm2<6D>ϲ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
else if (RobotCmd.m_RobotCmdType == _RobotCmd_Arm1Arm2MergePos)
|
|
|
|
|
|
{
|
|
|
|
|
|
RobotCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitCmdEnd;//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
RobotCmd.m_SendCmdStr = "$1G295";
|
|
|
|
|
|
RobotCmd.m_WaitCmdTime = 20;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
eGlobalVariableType JELOperate::RobotJel_SendCmdToRobotExt(CRobotCmdInfo &RobotCmd)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::string RetStr;
|
|
|
|
|
|
std::string SendCmd = RobotCmd.m_SendCmdStr;
|
|
|
|
|
|
//gLogMgr->WriteDebugLog("ROBOT SEND:" + SendCmd);
|
|
|
|
|
|
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(1000);
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//RobotCmd.m_RobotCmdSendType == _RobotCmdSendType_WaitCmdEnd
|
|
|
|
|
|
if (RetStr.find(RobotCmd.m_SendCmdStr) != -1)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cmd<6D><64>ʾִ<CABE>н<EFBFBD><D0BD><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//gLogMgr->WriteDebugLog("REV_STR END");
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (RetStr.find("ERROR") != -1)
|
|
|
|
|
|
{
|
|
|
|
|
|
//gLogMgr->WriteDebugLog("REV_STR ERROR");
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
eGlobalVariableType JELOperate::CheckRobotErrState(CRobotCmdInfo &RobotCmd)
|
|
|
|
|
|
{
|
|
|
|
|
|
eGlobalVariableType AlarmType = _GlobalVar_NULL;
|
|
|
|
|
|
{
|
|
|
|
|
|
CRobotCmdInfo TempCmd;
|
|
|
|
|
|
TempCmd.m_SendCmdStr = "$1ERLG";//robot ״̬
|
|
|
|
|
|
TempCmd.m_RobotCmdSendType = _RobotCmdSendType_WaitFeedback;
|
|
|
|
|
|
AlarmType = RobotJel_SendCmdToRobotExt(TempCmd);
|
|
|
|
|
|
}
|
|
|
|
|
|
return _GlobalVar_NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void JELOperate::OnRobotCommRecv()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_IsbJelCommRecv = true;//<2F>Ƿ<EFBFBD><C7B7>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
}
|