using Estsh.Client.Base; using System.Net.NetworkInformation; namespace Estsh.Client.StepLibrary { public partial class SendRobotInfo : StepBase { private StepLibraryAPP app = null; public SendRobotInfo() { InitializeComponent(); // 有用户界面的工步在初始化时需要设置为不可见 // 开始执行此工步后再置为可见 this.Visible = false; } public override bool Do() { try { ShowMessage(this, "green|发送搬运轨迹信息!"); // 置为可见并加载到最前端 this.Visible = true; this.BringToFront(); string _sn = Context["serial_number"].ToString(); app = new StepLibraryAPP(httpClient); List dtList = app.GetSendRobotList(); dgvList.AutoGenerateColumns = false; dgvList.DataSource = dtList; string lastSN = string.Empty; if (dtList.Count > 0) { lastSN = dtList[0]["serial_number"].ToString(); } List snInfo = app.GetSNInfo(_sn); string partLocation = snInfo[0]["part_location"].ToString(); string locationSpec = snInfo[0]["enum_desc"].ToString(); string custPartNo = snInfo[0]["cust_part_no"].ToString(); txtJM.Text = custPartNo; txtLoc.Text = locationSpec; if (lastSN != _sn || string.IsNullOrEmpty(lastSN)) { if (IsActive()) { while (true) { if (app.robotIsReady()) { bool updateResult = app.UpdateOPCPointRobot(partLocation + custPartNo, "robotWrite"); if (updateResult) { lblMsg.Text = "机器人轨迹信息已发送成功!"; lblMsg.ForeColor = Color.Green; app.insertSendRobot(_sn, partLocation + custPartNo, locationSpec); break; } else { lblMsg.Text = "机器人轨迹信息发送失败!"; lblMsg.ForeColor = Color.Red; } } else { ShowMessage(this, "red|机器人准备未完成,请稍等!"); lblMsg.Text = "机器人准备未完成,请稍等!"; lblMsg.ForeColor = Color.Red; } Application.DoEvents(); Thread.Sleep(1500); } } else { lblMsg.Text = "机器人网络异常!"; lblMsg.ForeColor = Color.Red; } } // 工步执行完成后调用此方法 Complate(this, new EventArgs()); // 执行父类的 Do 方法并返回 return base.Do(); } catch (Exception ex) { // 记录日志 using (StreamWriter sw = new StreamWriter("Error_Log_" + DateTime.Now.ToString("yyyyMM") + ".txt", true)) { sw.WriteLine(string.Format("{0} {1}", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] ", ex.ToString())); sw.Flush(); sw.Close(); } return false; } } private bool IsActive() { Ping ping = new Ping(); PingReply reply = ping.Send("172.16.10.133"); //PingReply reply = ping.Send("127.0.0.1"); return reply.Status == IPStatus.Success; } private void dgvList_SelectionChanged(object sender, EventArgs e) { dgvList.ClearSelection(); } } }