You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

181 lines
6.3 KiB
C#

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<dynamic> _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();
}
/// <summary>
/// 将已获取的关键数据更新至程序数据网格中
/// </summary>
/// <param name="sn">条码</param>
/// <param name="terminalId">工位ID</param>
public void WriteKeydataFactValue()
{
try
{
//获取当前工位操作的扭矩信息
List<dynamic> 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();
}
}
}