using Estsh.Client.Base; namespace Estsh.Client.StepLibrary { public class GYRFIDWrite : StepBase { private System.Windows.Forms.Timer timRFID; private System.ComponentModel.IContainer components; private Label lblMessage; RFIDApp app = null; private string sn = ""; private int terminal_id = 0; private bool writeSnStatus = false; public GYRFIDWrite() { InitializeComponent(); // 有用户界面的工步在初始化时需要设置为不可见 // 开始执行此工步后再置为可见 this.Visible = false; } public override bool Do() { try { // 置为可见并加载到最前端 //this.Visible = true; //this.BringToFront(); app = new RFIDApp(httpClient); sn = Context["serial_number"].ToString(); terminal_id = Convert.ToInt32(Context["terminal_id"].ToString()); string planCode = app.validataLimit("PlanCode"); string partLoc = app.getPartLocation(sn); if (planCode == "GY" && partLoc == "0B") //贵阳三排是双托盘(托盘上的第二个产品不需要写入RFID),需要特殊处理 { Complate(this, new EventArgs()); } else { timRFID.Enabled = true; } 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 void timRFID_Tick(object sender, EventArgs e) { //检测PLC RFID写入完成信号 string WriteRfidOk = app.ReadyPlc("RfidWriteOk", terminal_id); if (WriteRfidOk == "TRUE") { timRFID.Enabled = false; Complate(this, new EventArgs()); return; } else { ShowMessage(this, "green|RFID正在写入,请稍等!"); lblMessage.ForeColor = Color.Yellow; } //完成写入后不再写入,防止循环写入。 if (writeSnStatus) { return; } //检测就绪信号 string TAGState = app.ReadyPlc("OPC_TAGState", terminal_id); if (TAGState == "TRUE") { //写入条码 bool WrietSN = app.UpdatePLC("WriteSN", Convert.ToInt32(terminal_id), sn); //条码写入完成信号 bool WrietSNOK = app.UpdatePLC("WriteSNOk", Convert.ToInt32(terminal_id), "TRUE"); if (WrietSN) { writeSnStatus = true; } using (StreamWriter sw = new StreamWriter(terminal_id + " PLC_Log_" + DateTime.Now.ToString("yyyyMM") + ".txt", true)) { sw.WriteLine(string.Format("{0} {1}", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] ", sn + " 写入PLC成功! 状态1:" + WrietSN.ToString() + " 状态2:" + WrietSNOK.ToString())); sw.Flush(); sw.Close(); } } else { ShowMessage(this, "red|准备信号未就绪,请稍等!"); lblMessage.ForeColor = Color.Yellow; } } private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.lblMessage = new System.Windows.Forms.Label(); this.timRFID = new System.Windows.Forms.Timer(this.components); this.SuspendLayout(); // // lblMessage // this.lblMessage.AutoSize = true; this.lblMessage.Font = new System.Drawing.Font("微软雅黑", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lblMessage.Location = new System.Drawing.Point(214, 64); this.lblMessage.Name = "lblMessage"; this.lblMessage.Size = new System.Drawing.Size(146, 42); this.lblMessage.TabIndex = 0; this.lblMessage.Text = "提示信息"; // // timRFID // this.timRFID.Interval = 1000; this.timRFID.Tick += new System.EventHandler(this.timRFID_Tick); // // GYRFIDWrite // this.Controls.Add(this.lblMessage); this.Name = "GYRFIDWrite"; this.Size = new System.Drawing.Size(1003, 499); this.ResumeLayout(false); this.PerformLayout(); } } }