public bool Cmd_SendHome_Z() { _WorkStatus = WORK_STATUS.MOVING; string strCmd = "HOME Z\r"; return(SendData(strCmd)); }
public void ResetSeq() { Flush(); m_nSeqNo = 0; m_RetryCount = 0; _WorkStatus = WORK_STATUS.IDLE; }
public bool Cmd_SendPlace(int nStage, int nSlot, ARM _Arm) { _WorkStatus = WORK_STATUS.MOVING; string strCmd = string.Format("PLACE {0} SLOT {1} ARM {2}\r" , nStage , nSlot , _Arm == ARM.LOWER ? "A" : "B"); return(SendData(strCmd)); }
public bool Cmd_Retract(int nStage, int nSlot, ARM _Arm, UPDOWN_POS _UpDnPos) { _WorkStatus = WORK_STATUS.MOVING; string strCmd = string.Format("RETRACT {0} {1} {2} {3}\r" , nStage , _UpDnPos == UPDOWN_POS.UP ? "UP" : "DN" , nSlot , _Arm == ARM.LOWER ? "A" : "B"); return(SendData(strCmd)); }
public bool Cmd_SendZAxis(int nStage, int nSlot, ARM _Arm, UPDOWN_POS _UpDnPos) { _WorkStatus = WORK_STATUS.MOVING; string strCmd = string.Format("ZAXIS {0} SLOT {1} {2} ARM {3}\r" , nStage , nSlot , _UpDnPos == UPDOWN_POS.UP ? "UP" : "DN" , _Arm == ARM.LOWER ? "A" : "B"); return(SendData(strCmd)); }
public bool Cmd_SendGoTo(int nStage, int nSlot, ARM _Arm, RADIAL_POS _RadialPos, UPDOWN_POS _UpDnPos) { _WorkStatus = WORK_STATUS.MOVING; string strCmd = string.Format("GOTO N {0} R {1} Z {2} SLOT {3} ARM {4}\r" , nStage , _RadialPos == RADIAL_POS.EXTENDED ? "EX" : "RE" , _UpDnPos == UPDOWN_POS.UP ? "UP" : "DN" , nSlot , _Arm == ARM.LOWER ? "A" : "B"); return(SendData(strCmd)); }
public bool Cmd_SendHomeAll() { _WorkStatus = WORK_STATUS.MOVING; char[] CH = new char[3]; CH[0] = (char)0x0d; CH[1] = (char)0x00; CH[1] = (char)0x00; StringBuilder st = new StringBuilder("HOME ALL"); st.Append(CH[0].ToString()); //string strCmd = st.ToString();//"HOME ALL\r"; //strCmd = strCmd + CH[0].ToString() + CH[1].ToString() + CH[2].ToString(); string strCmd = "HOME ALL\r"; return(SendData(strCmd)); }
public int Seq_Wait_Command_Test(string strCmd, ACK_MODE _CheckMode) { int nSeqNo = m_nSeqNo; int nRet = 0; switch (nSeqNo) { case 0: //상태 체크 { nSeqNo = 100; _WorkStatus = WORK_STATUS.ACK_CHECK; m_RetryCount = 0; } break; case 100: //명령 전송 { if (SendData(strCmd + "\n") == true) { nSeqNo = 200; m_TimeOut = DateTime.Now; } else { //알람 Flush(); nSeqNo = 0; nRet = -1; _ErrMsg = "Send Fail."; _WorkStatus = WORK_STATUS.ERROR; } } break; case 200: //ACK Check. { string strRcv = ""; ACK_MODE _AckMode = RcvCheck(ref strRcv); if ((int)_AckMode > 0) { if (_AckMode == _CheckMode) { //원하는 데이터 받을때 까지..돈다.. m_TimeOut = DateTime.Now; nSeqNo = 1000; } else { m_TimeOut = DateTime.Now; } } else if ((int)_AckMode < 0) { if (_AckMode == ACK_MODE.BEFORE_CMD_PROC) { //이미 명령 나가있는놈이 있어서, 방금보낸 명령이 안먹음...리트라이 해야한다. if (m_RetryCount < MaxRetryCount) { m_RetryCount += 1; nSeqNo = 100; m_TimeOut = DateTime.Now; LogTextOut(string.Format("{0}/Retry Count:{1})", strCmd, m_RetryCount)); } else { nRet = nSeqNo * -1; nSeqNo = 0; LogTextOut(string.Format("{0}/RetryCount Over.", strCmd)); } } else { _WorkStatus = WORK_STATUS.ERROR; nRet = nSeqNo * -1; nSeqNo = 0; } } else { if (strCmd == "OPEN" || strCmd == "CLOSE") { if (GetElapseTime(m_TimeOut) > READ_END_DELAY * 20) { _ErrMsg = "Receive Time Out."; _WorkStatus = WORK_STATUS.ERROR; nRet = nSeqNo * -1; nSeqNo = 0; Flush(); } } else { if (GetElapseTime(m_TimeOut) > READ_END_DELAY) { _ErrMsg = "Receive Time Out."; _WorkStatus = WORK_STATUS.ERROR; nRet = nSeqNo * -1; nSeqNo = 0; Flush(); } } } } break; case 1000: { nRet = 1; nSeqNo = 0; _WorkStatus = WORK_STATUS.IDLE; } break; default: { _ErrMsg = "Seq No Error."; _WorkStatus = WORK_STATUS.ERROR; nSeqNo = 0; nRet = -1; Flush(); } break; } m_nSeqNo = nSeqNo; return(nRet); }
public int Seq_ReadCommand_Test(string strCmd, ref string sRcvData) { int nSeqNo = m_nSeqNo; int nRet = 0; char STX = '#'; switch (nSeqNo) { case 0: //상태 체크 { nSeqNo = 100; _WorkStatus = WORK_STATUS.READING; } break; case 100: //명령 전송 { if (SendData(STX + strCmd + "\r") == true) { nSeqNo = 200; m_TimeOut = DateTime.Now; } else { //알람 Flush(); nSeqNo = 0; nRet = -1; } } break; case 200: //ACK Check. { ACK_MODE _AckMode = RcvCheck(ref sRcvData); if ((int)_AckMode > 0) { if (_AckMode == ACK_MODE.DATA) { m_strBeforeRcvData = sRcvData; _WorkStatus = WORK_STATUS.IDLE; nRet = 1; nSeqNo = 0; } } else if ((int)_AckMode < 0) { nRet = nSeqNo * -1; nSeqNo = 0; } else { if (GetElapseTime(m_TimeOut) > READ_END_DELAY) { nRet = nSeqNo * -1; nSeqNo = 0; Flush(); } } } break; default: { nSeqNo = 0; nRet = -1; Flush(); } break; } m_nSeqNo = nSeqNo; return(nRet); }
private int Seq_SendCommand_WaitComplete(string strCmd) { int nSeqNo = m_nSeqNo; int nRet = 0; char STX = '#'; switch (nSeqNo) { case 0: //상태 체크 { nSeqNo = 100; _WorkStatus = WORK_STATUS.MOVING; } break; case 100: //명령 전송 { if (SendData(STX + strCmd + "\r") == true) { nSeqNo = 200; m_TimeOut = DateTime.Now; } else { //알람 Flush(); nSeqNo = 0; nRet = -1; } } break; case 200: //ACK Check. { string strRcvData = ""; ACK_MODE _AckMode = RcvCheck(ref strRcvData); if ((int)_AckMode > 0) { m_TimeOut = DateTime.Now; if (_AckMode == ACK_MODE.COMPLETE) { _WorkStatus = WORK_STATUS.IDLE; nRet = 1; nSeqNo = 0; } } else if ((int)_AckMode < 0) { nRet = nSeqNo * -1; nSeqNo = 0; } else { //if (GetElapseTime(m_TimeOut) > MOVING_COMPLETE_DELAY) //{ // nRet = nSeqNo * -1; // nSeqNo = 0; // Flush(); //} } } break; default: { nSeqNo = 0; nRet = -1; Flush(); } break; } m_nSeqNo = nSeqNo; return(nRet); }
private int Seq_ReadCommand(string strCmd, ref string sRcvData) { int nSeqNo = m_nReadSeqNo; int nRet = 0; switch (nSeqNo) { case 0: //상태 체크 { nSeqNo = 100; _WorkStatus = WORK_STATUS.READING; //Console.WriteLine("Send 1->" + strCmd); } break; case 100: //명령 전송 { if (SendData(strCmd + "\r\n") == true) { //Console.WriteLine("Send 2->" + strCmd); nSeqNo = 200; m_TimeOut = DateTime.Now; } else { //알람 Flush(); nSeqNo = 0; nRet = -1; } } break; case 200: //ACK Check. { ACK_MODE _AckMode = RcvCheck(ref sRcvData); if ((int)_AckMode > 0) { switch (_AckMode) { case ACK_MODE.ACK: { //Ack 받고. m_TimeOut = DateTime.Now; //Console.WriteLine("Ack->" + sRcvData); } break; case ACK_MODE.DATA: { //데이터 받고.. m_TimeOut = DateTime.Now; sRcvData = sRcvData.Replace("\r\n", ""); sRcvData = sRcvData.Replace("*", ""); sRcvData = sRcvData.Replace(" ", ""); m_strBeforeRcvData = sRcvData; //Console.WriteLine("Data->" + sRcvData); } break; case ACK_MODE.COMPLETE: { //데이터 받는거 완료 되었다..진짜끝임. m_TimeOut = DateTime.Now; sRcvData = m_strBeforeRcvData; nRet = 1; nSeqNo = 0; //Console.WriteLine("Rcv Compl->" + strCmd); } break; } } else if ((int)_AckMode < 0) { nRet = nSeqNo * -1; nSeqNo = 0; } else { if (GetElapseTime(m_TimeOut) > READ_END_DELAY) { nRet = nSeqNo * -1; nSeqNo = 0; Flush(); //Console.WriteLine("Time Out"); } } } break; default: { Console.WriteLine("Error"); nSeqNo = 0; nRet = -1; Flush(); } break; } m_nReadSeqNo = nSeqNo; return(nRet); }
private int Seq_SendCommand(string strCmd) { int nSeqNo = m_nSeqNo; int nRet = 0; switch (nSeqNo) { case 0: //상태 체크 { nSeqNo = 100; _WorkStatus = WORK_STATUS.MOVING; } break; case 100: //명령 전송 { if (SendData(strCmd + "\r\n") == true) { nSeqNo = 200; m_TimeOut = DateTime.Now; } else { //알람 Flush(); nSeqNo = 0; nRet = -1; } } break; case 200: //ACK Check. { string strRcvData = ""; ACK_MODE _AckMode = RcvCheck(ref strRcvData); if ((int)_AckMode > 0) { nRet = 1; nSeqNo = 0; } else if ((int)_AckMode < 0) { nRet = nSeqNo * -1; nSeqNo = 0; } else { if (GetElapseTime(m_TimeOut) > READ_END_DELAY) { nRet = nSeqNo * -1; nSeqNo = 0; Flush(); } } } break; default: { nSeqNo = 0; nRet = -1; Flush(); } break; } m_nSeqNo = nSeqNo; return(nRet); }