using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using MECF.Framework.Simulator.Core.Driver; namespace MECF.Framework.Simulator.Core.Robots { public class YaskawaSR100RobotSimulator : YaskawaSR100ControllerSimulator { public YaskawaSR100RobotSimulator() : base(10110) { } //$,(,),INIT,,,(,) //$,(,),,,INIT,,,(,) //!,(,),,,INIT,,…,(,) public override void HandleINIT(string msg) { string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string cmd = arrayMsg[3]; string sts = 0.ToString("X02"); string Ackcd = 0.ToString("X04"); string errorClr = arrayMsg[4]; string srvOn = arrayMsg[5]; string axis = arrayMsg[6]; string feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},{7},", unit, seq, sts, Ackcd, cmd, errorClr, srvOn, axis); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", arrayMsg[0], feedback, sum); OnWriteMessage(result); Thread.Sleep(3000); Random rd = new Random(); int executeTime = rd.Next(10000, 999999); string exeTime = executeTime.ToString("D6"); string posData = GetPosData(); string error = 0.ToString("X04"); feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},", unit, seq, sts, error, cmd, exeTime, posData); sum = CheckSum(feedback); result = String.Format("{0}{1}{2}", "!", feedback, sum); OnWriteMessage(result); } //$,(,),CCLR,(,) //$,(,),,,CCLR,(,) //!,(,),,,CCLR,,…,(,) public override void HandleCCLR(string msg) { string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string cmd = arrayMsg[3]; string sts = 0.ToString("X02"); string Ackcd = 0.ToString("X04"); string cmode = arrayMsg[4]; string feedback = string.Format(",{0},{1},{2},{3},{4},{5},", unit, seq, sts, Ackcd, cmd, cmode); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", arrayMsg[0], feedback, sum); OnWriteMessage(result); Thread.Sleep(3000); int executeTime = _rd.Next(10000, 999999); string exeTime = executeTime.ToString("D6"); string posData = GetPosData(); string error = 0.ToString("X04"); feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},", unit, seq, sts, error, cmd, exeTime, posData); sum = CheckSum(feedback); result = String.Format("{0}{1}{2}", "!", feedback, sum); OnWriteMessage(result); } //$,(,),RSTS(,) //$,(,),,,RSTS,,(,) public override void HandleRSTS(string msg) { string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string cmd = arrayMsg[3]; string sts = 0.ToString("X02"); string Ackcd = 0.ToString("X04"); string error = 0.ToString("X04"); int status1 = Convert.ToInt32("0011", 2); string status = string.Format("{0}000", status1.ToString("X1")); string feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},", unit, seq, sts, Ackcd, cmd, error, status); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", arrayMsg[0], feedback, sum); OnWriteMessage(result); } //$,(,),MALN,,(,) //$,(,),,,MALN,,(,) //!,(,),,,MALN,,…,,…,(,) public override void HandleMALN(string msg) { string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string cmd = arrayMsg[3]; string sts = 0.ToString("X02"); string Ackcd = 0.ToString("X04"); string mode = arrayMsg[4]; string angle = arrayMsg[5]; string feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},", unit, seq, sts, Ackcd, cmd, mode, angle); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", arrayMsg[0], feedback, sum); OnWriteMessage(result); Thread.Sleep(3000); string error = 0.ToString("X04"); int executeTime = _rd.Next(10000, 999999); string exeTime = executeTime.ToString("D6"); string posData = GetPosData(); string valueData = GetValueData(); feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},{7},", unit, seq, sts, error, cmd, exeTime, posData, valueData); sum = CheckSum(feedback); result = String.Format("{0}{1}{2}", "!", feedback, sum); OnWriteMessage(result); } //$,(,),MTRS,,,,,,(,,,)(,)(,) //$,(,),,,MTRS,,,,,,(,,,)(,)(,) //!,(,),,,MTRS,,…,(,) public override void HandleMTRS(string msg) { string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string cmd = arrayMsg[3]; string sts = 0.ToString("X02"); string Ackcd = 0.ToString("X04"); string leftAll = ""; for (int i = 4; i < arrayMsg.Length - 1; i++) leftAll += arrayMsg[i] + ","; string feedback = string.Format(",{0},{1},{2},{3},{4},{5}", unit, seq, sts, Ackcd, cmd, leftAll); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", arrayMsg[0], feedback, sum); OnWriteMessage(result); Thread.Sleep(3000); string error = 0.ToString("X04"); int executeTime = _rd.Next(10000, 999999); string exeTime = executeTime.ToString("D6"); string posData = GetPosData(); feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},", unit, seq, sts, error, cmd, exeTime, posData); sum = CheckSum(feedback); result = String.Format("{0}{1}{2}", "!", feedback, sum); OnWriteMessage(result); OnWriteMessage(result); } //$,(,),RMAP,,(,) //$,(,),,,RMAP,,,01:…,N:(,) public override void HandleRMAP(string msg) { Random rd = new Random(); string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string cmd = arrayMsg[3]; string trs = arrayMsg[4]; string slot = arrayMsg[5]; string sts = 0.ToString("X02"); string Ackcd = 0.ToString("X04"); string error = 0.ToString("X04"); //bool random = false; bool full = trs == "C01" || trs == "C02"; //string mapData = GetMapData(random, full); bool pre = trs == "C01" || trs == "C02"; bool mid = trs == "C03" || trs == "C04"; bool post = trs == "C05" || trs == "C06"; string mapData = full? GetMapData(true, true, true) : GetMapData(pre, mid, post); if (trs == "C01") mapData = GetMapData(1, 2); if (trs == "C02") mapData = GetMapData(4, 5); if (trs == "C07") mapData = GetMapData(4, 5); if (trs == "C08") mapData = GetMapData(4, 5); if (trs == "C06") mapData = GetMapData(4, 5); string feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},{7},", unit, seq, sts, Ackcd, cmd, trs, slot, mapData); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", arrayMsg[0], feedback, sum); OnWriteMessage(result); } //$,(,),MMAP,,(,)(,) //$,(,),,,MMAP,,(,)(,) //!,(,),,,MMAP,,,… ,01:…,N:(,) public override void HandleMMAP(string msg) { string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string cmd = arrayMsg[3]; string trs = arrayMsg[4]; string slot = arrayMsg[5]; string sts = 0.ToString("X02"); string Ackcd = 0.ToString("X04"); string leftAll = ""; for (int i = 4; i < arrayMsg.Length - 1; i++) leftAll += arrayMsg[i] + ","; string feedback = string.Format(",{0},{1},{2},{3},{4},{5}", unit, seq, sts, Ackcd, cmd, leftAll); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", arrayMsg[0], feedback, sum); OnWriteMessage(result); Thread.Sleep(2000); string error = 0.ToString("X04"); int executeTime = _rd.Next(10000, 999999); string exeTime = executeTime.ToString("D6"); string posData = GetPosData(); //bool random = false; bool full = trs == "C01" || trs == "C02"; bool pre = trs == "C03" || trs == "C04" || trs == "C05" || trs == "C06"; bool mid = trs == "C03" || trs == "C04" ; bool post = trs == "C05" || trs == "C06"; string mapData = full ? GetMapData(true, true, true) : GetMapData(pre, mid, post); feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},{7},", unit, seq, sts, error, cmd, exeTime, posData, mapData); sum = CheckSum(feedback); result = String.Format("{0}{1}{2}", "!", feedback, sum); OnWriteMessage(result); } public override void HandleRMPD(string msg) { Random rd = new Random(); string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string cmd = arrayMsg[3]; string trs = arrayMsg[4]; //string slot = arrayMsg[5]; string sts = 0.ToString("X02"); string Ackcd = 0.ToString("X04"); string error = 0.ToString("X04"); //bool random = false; bool full = trs == "C01" || trs == "C02"; //string mapData = GetMapData(random, full); bool pre = trs == "C01" || trs == "C02"; bool mid = trs == "C03" || trs == "C04"; bool post = trs == "C05" || trs == "C06"; string mapData = full ? GetMapData(true, true, true) : GetMapData(pre, mid, post); if (trs == "C01") mapData = GetMapThickData(0, 1); if (trs == "C02") mapData = GetMapThickData(1, 5); mapData = GetMapThickData(1, 5); string feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},", unit, seq, sts, Ackcd, cmd, trs, mapData); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", arrayMsg[0], feedback, sum); OnWriteMessage(result); } public override void HandleCSOL(string msg) { Response("CSOL", msg); Thread.Sleep(3000); string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string sts = 0.ToString("X02"); string error = 0.ToString("X04"); string type = arrayMsg[3]; int executeTime = _rd.Next(10000, 999999); string exeTime = executeTime.ToString("D6"); string posData = GetPosData(); int status1 = Convert.ToInt32("0011", 2); string status = string.Format("{0}000", status1.ToString("X1")); string feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},", unit, seq, sts, error, type, exeTime, posData); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", "!", feedback, sum); OnWriteMessage(result); } public override void HandleMPNT(string msg) { Response("MPNT", msg); Thread.Sleep(3000); string[] arrayMsg = msg.Split(','); string unit = arrayMsg[1]; string seq = arrayMsg[2]; string sts = 0.ToString("X02"); string error = 0.ToString("X04"); string type = arrayMsg[3]; int executeTime = _rd.Next(10000, 999999); string exeTime = executeTime.ToString("D6"); string posData = GetPosData(); int status1 = Convert.ToInt32("0011", 2); string status = string.Format("{0}000", status1.ToString("X1")); string feedback = string.Format(",{0},{1},{2},{3},{4},{5},{6},", unit, seq, sts, error, type, exeTime, posData); string sum = CheckSum(feedback); string result = String.Format("{0}{1}{2}", "!", feedback, sum); OnWriteMessage(result); } } }