This commit is contained in:
TD
2025-04-11 10:42:40 +08:00
parent 4765e0e5bd
commit f9d472295b
6 changed files with 210 additions and 175 deletions

View File

@ -183,7 +183,7 @@ namespace DHSoftware
public MainWindow()
{
InitializeComponent();
InitialCameraSumsView(); //refreshTimer.Start();
//refreshTimer.Start();
//初始化数据
InitData();
//绑定事件
@ -591,7 +591,7 @@ namespace DHSoftware
cam.CameraName = cameraBase.CameraName;
cam.CameraIP = cameraBase.CameraIP;
cam.IsEnabled = cameraBase.IsEnabled;
cam.ImageSaveDirectory = "D://Cam1//";
cam.ImageSaveDirectory = Path.Combine("D://Projects", cameraBase.CameraName);
Cameras.Add(cam);
if(cameraBase.IsEnabled)
{
@ -691,6 +691,8 @@ namespace DHSoftware
//
_visionEngine = new SimboVisionDriver();
_visionEngine.DetectionConfigs = DetectionConfigs;
_visionEngine.LoggerHelper .LogPath = "D://PROJECTS//Logs//";
_visionEngine.LoggerHelper.LogPrefix = "Vision";
_visionEngine.OnLog += _visionEngine_OnLog;
//初始化模型 加载模型
_visionEngine.Init();
@ -703,7 +705,7 @@ namespace DHSoftware
private void _visionEngine_OnLog(LogMsg msg)
{
OnLog?.Invoke(msg);
//OnLog?.Invoke(msg);
LogDisplay(msg);
}
private void LogDisplay(LogMsg msg)
@ -736,12 +738,13 @@ namespace DHSoftware
LogAsync(new LogMsg(dt, logLevel, msg));
}
System.Windows.Forms.Timer _refreshUITimer = new System.Windows.Forms.Timer();
private void BindEventHandler()
{
btnAddProject.Click += BtnAddProject_Click;
btnDeleteProject.Click += BtnDeleteProject_Click;
btnLoadProject.Click += BtnLoadProject_Click;
LoggerHelper.LogPath = "D://";
LoggerHelper.LogPath = "D://PROJECTS//Logs//";
LoggerHelper.LogPrefix = "Process";
OnLog -= LogDisplay;
OnLog += LogDisplay;
@ -751,6 +754,30 @@ namespace DHSoftware
OnUpdateCamResult += UpdateCamResult;
OnUpdateResult -= UpdateResult;
OnUpdateResult += UpdateResult;
Load += (s, e) =>
{
_refreshUITimer.Interval = 1000;
_refreshUITimer.Tick += _refreshUITimer_Tick;
_refreshUITimer.Enabled = true;
};
}
private void _refreshUITimer_Tick(object sender, EventArgs e)
{
_refreshUITimer.Enabled = false;
if (this != null)
{
lblStartTime.Text = StartTime == null ? "" : StartTime.Value.ToString("yyyy/MM/dd HH:mm:ss");
lblTotalTime.Text = TotalTime.ToString(); // 运行时间
// lblRunTime.Text = RunTime.ToString(); // 有效时间
// lblIdleTime.Text = ProcessControl.IdleTime.ToString(); // 空闲时间
// lblDownTime.Text = ProcessControl.DownTime.ToString(); // 宕机时间
lblOEE_Total.Text = ProductNum_Total.ToString();
// lblOEE_OK.Text = ProcessControl.ProductNum_OK.ToString();
}
_refreshUITimer.Enabled = true;
}
private void UpdateCamResult(DateTime updateTime, object objData, string customMessage)
{
@ -767,17 +794,17 @@ namespace DHSoftware
{
this.Invoke(new Action(() =>
{
dgvProductNums.DataSource = null;
dgvProductNums.DataSource = ProductSummaries;
dgvProductNums.DataSource = new BindingList<ProductSummary>(ProductSummaries);
if (dgvProductNums.Rows.Count > 0)
{
dgvProductNums.Height = dgvProductNums.Rows[0].Height * dgvProductNums.Rows.Count + 15;
}
else
{
dgvProductNums.Height = 15;
}
//if (dgvProductNums.Rows.Count > 0)
//{
// dgvProductNums.Height = dgvProductNums.Rows[0].Height * dgvProductNums.Rows.Count + 15;
//}
//else
//{
// dgvProductNums.Height = 35;
//}
//lblOEE_Rate.Text = ProcessControl.OEE.ToString("f2") + " %";
lblUPH.Text = UPH.ToString();
@ -994,6 +1021,7 @@ namespace DHSoftware
private void HandleStartButton()
{
InitialCameraSumsView();
LogAsync(DateTime.Now, LogLevel.Information, "流程启动中,请稍候...");
StartProcess();
LogAsync(DateTime.Now, LogLevel.Action, "流程启动完成!");
@ -1004,7 +1032,7 @@ namespace DHSoftware
private void StartProcess()
{
ProcessstartTime = DateTime.Now;
lblstarttime.Text = ProcessstartTime.ToString("yyyy-MM-dd HH:mm:ss");
lblStartTime.Text = ProcessstartTime.ToString("yyyy-MM-dd HH:mm:ss");
//计数清零
PieceCount = 0;
@ -1110,7 +1138,7 @@ namespace DHSoftware
//流程执行时PLC
PLC.StartProcess();
InitialOEEStatistic();
@ -1231,7 +1259,7 @@ namespace DHSoftware
return;
}
// LogAsync(DateTime.Now, LogLevel.Information, $"{camera.Name} 找到产品{productNumber},队列{index}数量:{tmpDic.Count}");
LogAsync(DateTime.Now, LogLevel.Information, $"{camera.CameraName} 找到产品{productNumber},队列{index}数量:{tmpDic.Count}");
if (!_cameraRelatedDetectionDict.ContainsKey(camera.CameraName))
{
@ -1275,24 +1303,32 @@ namespace DHSoftware
{
return;
}
UpdateResultPro(DateTime.Now, null, product.ProductResult.GetEnumDescription());
#region 6.
product.ProductResult = product.ResultCollection.Any(u => u.ResultState != ResultState.OK)
? ResultState.B_NG
: ResultState.OK;
//if (product.ProductResult == ResultState.OK)
//{
// PLC.Blowing(productNumber, 1);
//}
//else
//{
// PLC.Blowing(productNumber, 2);
//}
product.ProductLabelCategory = product.ProductResult.GetEnumDescription();
product.ProductLabel = product.ProductResult.GetEnumDescription();
UpdateResultPro(DateTime.Now, null, product.ProductResult.GetEnumDescription());
LogAsync(DateTime.Now, LogLevel.Information, $"产品{product.PieceNumber}获取结果:{product.ProductResult} {(product.IsA2B ? "IsA2B" : "")}");
if (product.ProductResult == ResultState.OK)
{
PLC.Blowing(productNumber, 1);
LogAsync(DateTime.Now, LogLevel.Action, $"产品{product.PieceNumber}PLC,OK吹气");
}
else
{
PLC.Blowing(productNumber, 2);
LogAsync(DateTime.Now, LogLevel.Action, $"产品{product.PieceNumber}PLC,NG吹气");
}
#endregion 6.
@ -1344,10 +1380,7 @@ namespace DHSoftware
}));
//重新生成实例 销毁之前的实例
var saveData = temp.GetProductData();
using (StreamWriter sw = new StreamWriter("D://123log.txt", true, Encoding.UTF8))
{
sw.WriteLine(logStr);
}
}
catch (Exception) { }
finally