using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using Estsh.Client.Base; using System.Configuration; using System.IO; namespace Estsh.Client.StepLibrary { public partial class KpsnTorque : StepBase { private StepLibraryAPP app = null; private string _terminalID = string.Empty; private string _sn = string.Empty; private List _dtKeydataItems = null; //当前工位采集数据需求 public KpsnTorque() { InitializeComponent(); // 有用户界面的工步在初始化时需要设置为不可见 // 开始执行此工步后再置为可见 this.Visible = false; } public override bool Do() { try { ShowMessage(this, "green|正在采集扭矩信息..."); // 置为可见并加载到最前端 this.Visible = true; this.BringToFront(); app = new StepLibraryAPP(httpClient); // 从配置文件中加载工位编号 _terminalID = Context["terminal_id"].ToString(); _sn = Context["serial_number"].ToString(); ////测试代码 //_terminalID = "100003"; //_sn = "1PY448HUG985791400003"; _dtKeydataItems = app.GetKeyData(_sn, _terminalID); if (_dtKeydataItems == null || _dtKeydataItems.Count < 1) { ShowMessage(this, "red|扭矩信息配置错误"); // 工步完成(扭矩信息未配置,直接完成) Complate(this, null); } if (_dtKeydataItems.Count > 5) { dgbKeyDatas.RowTemplate.Height = 30; } dgbKeyDatas.AutoGenerateColumns = false; dgbKeyDatas.DataSource = _dtKeydataItems; CollectKeydata.Enabled = true; } 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; } // 执行父类的 Do 方法并返回 return base.Do(); } private void CollectKeydata_Tick(object sender, EventArgs e) { WriteKeydataFactValue(); } /// /// 将已获取的关键数据更新至程序数据网格中 /// /// 条码 /// 工位ID public void WriteKeydataFactValue() { try { //获取当前工位操作的扭矩信息 List dt = app.GetKeyDataValue(_sn, _terminalID); if (dt == null || dt.Count < 1) { return; } bool updateKeyDataResult = false; for (int i = 0; i < dt.Count; i++) { if (string.IsNullOrEmpty(_dtKeydataItems[i]["keydata_value"].ToString())) { Double maxValue = Convert.ToDouble(_dtKeydataItems[i]["max_value"].ToString()); Double minValue = Convert.ToDouble(_dtKeydataItems[i]["min_value"].ToString()); Double keyDataValue = Convert.ToDouble(dt[i]["keydata_value"].ToString()); if (keyDataValue > maxValue || keyDataValue < minValue) { updateKeyDataResult = app.updateKeyDataResult(_sn, keyDataValue.ToString()); dt.Remove(dt[i]); } } } for (int i = 0; i < dt.Count; i++) { if (string.IsNullOrEmpty(_dtKeydataItems[i]["keydata_value"].ToString())) { Double maxValue = Convert.ToDouble(_dtKeydataItems[i]["max_value"].ToString()); Double minValue = Convert.ToDouble(_dtKeydataItems[i]["min_value"].ToString()); Double keyDataValue = Convert.ToDouble(dt[i]["keydata_value"].ToString()); _dtKeydataItems[i]["keydata_value"] = dt[i]["keydata_value"].ToString(); _dtKeydataItems[i]["keydata_angle"] = dt[i]["keydata_angle"].ToString(); _dtKeydataItems[i]["keydata_status"] = dt[i]["keydata_status"].ToString(); _dtKeydataItems[i]["keydata_result"] = dt[i]["keydata_result"].ToString(); _dtKeydataItems[i]["keydata_ymd"] = dt[i]["keydata_ymd"].ToString(); _dtKeydataItems[i]["keydata_hms"] = dt[i]["keydata_hms"].ToString(); dgbKeyDatas.DataSource = _dtKeydataItems; dgbKeyDatas.Update(); dgbKeyDatas.Rows[i].DefaultCellStyle.BackColor = Color.Green; } } if (dt.Count == _dtKeydataItems.Count) { CollectKeydata.Enabled = false; // 工步完成 Complate(this, null); } } 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(); } } } private void dgbKeyDatas_SelectionChanged(object sender, EventArgs e) { dgbKeyDatas.ClearSelection(); } } }