Compare commits
5 Commits
95bc9ce3b3
...
KM
Author | SHA1 | Date | |
---|---|---|---|
bb943740da | |||
71bbea56a7 | |||
6c1d86619e | |||
1a84519874 | |||
4e75b0d4da |
@ -85,11 +85,15 @@ namespace DH.Devices.Motion
|
||||
|
||||
public void NewPieces(int diskIndex, uint pieceNumber)
|
||||
{
|
||||
_taskFactory.StartNew(() =>
|
||||
Task.Run(() =>
|
||||
{
|
||||
Thread.CurrentThread.Priority = ThreadPriority.Highest;
|
||||
try {
|
||||
Thread.CurrentThread.Priority = ThreadPriority.Highest;
|
||||
|
||||
OnNewPieces?.Invoke(diskIndex, pieceNumber);
|
||||
OnNewPieces?.Invoke(diskIndex, pieceNumber);
|
||||
}
|
||||
catch (Exception ex) { /* 记录异常 */ }
|
||||
|
||||
});
|
||||
}
|
||||
public void SetResetFlag(bool isReset)
|
||||
|
@ -627,11 +627,22 @@ namespace DH.Devices.PLC
|
||||
|
||||
public void NewPieces(int axisIndex, uint pieceNumber)
|
||||
{
|
||||
_taskFactory.StartNew(() =>
|
||||
{
|
||||
Thread.CurrentThread.Priority = ThreadPriority.Highest;
|
||||
//_taskFactory.StartNew(() =>
|
||||
//{
|
||||
// Thread.CurrentThread.Priority = ThreadPriority.Highest;
|
||||
|
||||
// OnNewPieces?.Invoke(axisIndex, pieceNumber);
|
||||
//});
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Thread.CurrentThread.Priority = ThreadPriority.Highest;
|
||||
|
||||
OnNewPieces?.Invoke(axisIndex, pieceNumber);
|
||||
}
|
||||
catch (Exception ex) { /* 记录异常 */ }
|
||||
|
||||
OnNewPieces?.Invoke(axisIndex, pieceNumber);
|
||||
});
|
||||
}
|
||||
public async Task HeartbeatAsync1()
|
||||
@ -697,14 +708,14 @@ namespace DH.Devices.PLC
|
||||
//while (CurrentState != DeviceState.DSClose && CurrentState != DeviceState.DSExcept && CurrentState != DeviceState.DSUninit)
|
||||
while (Connected)
|
||||
{
|
||||
Stopwatch sw = new Stopwatch();
|
||||
// Stopwatch sw = new Stopwatch();
|
||||
uint tmpPieceNumber = 0;
|
||||
sw.Start();
|
||||
// sw.Start();
|
||||
|
||||
// var ret = TcpNet.ReadUInt16("D1016");
|
||||
var ret = TcpNet.ReadUInt32(Count);
|
||||
|
||||
sw.Stop();
|
||||
//sw.Stop();
|
||||
if (ret.IsSuccess)
|
||||
{
|
||||
tmpPieceNumber = ret.Content;
|
||||
@ -712,7 +723,7 @@ namespace DH.Devices.PLC
|
||||
|
||||
if (ret.IsSuccess && ret.Content > piecesCount)
|
||||
{
|
||||
sw.Start();
|
||||
// sw.Start();
|
||||
// Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")} 板卡{station}产品入列触发{tmpPieceNumber}");
|
||||
//LogAsync(DateTime.Now, LogLevel.Information, $"转盘{0}产品入列 {piecesCountDic[0]} size:{sum}");
|
||||
if (tmpPieceNumber != piecesCount + 1)
|
||||
@ -724,8 +735,8 @@ namespace DH.Devices.PLC
|
||||
piecesCount = tmpPieceNumber;
|
||||
//NewPieces(ai, piecesCountDic[station]);
|
||||
NewPieces(1, piecesCount);
|
||||
sw.Stop();
|
||||
startTime = DateTime.Now;
|
||||
// sw.Stop();
|
||||
// startTime = DateTime.Now;
|
||||
//if (idalarm)
|
||||
//{
|
||||
// idalarm = false;
|
||||
|
@ -424,60 +424,61 @@ namespace DHSoftware
|
||||
private void InitialCameraSumsView()
|
||||
{
|
||||
|
||||
|
||||
|
||||
dgvCamreaNums.Columns.Clear();
|
||||
|
||||
// 添加 CCD 列
|
||||
dgvCamreaNums.Columns.Add(new DataGridViewTextBoxColumn
|
||||
this.BeginInvoke(new MethodInvoker(delegate ()
|
||||
{
|
||||
HeaderText = "CCD",
|
||||
DataPropertyName = "CameraName"
|
||||
});
|
||||
// 添加 触发数 列
|
||||
var TiggerCountColumn = new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "触发数",
|
||||
DataPropertyName = "TiggerCount"
|
||||
};
|
||||
|
||||
dgvCamreaNums.Columns.Add(TiggerCountColumn);
|
||||
dgvCamreaNums.Columns.Clear();
|
||||
|
||||
// 添加 合格 列
|
||||
var okColumn = new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "合格",
|
||||
DataPropertyName = "OKCount"
|
||||
};
|
||||
okColumn.DefaultCellStyle.ForeColor = Color.Green; // 设置背景为绿色
|
||||
dgvCamreaNums.Columns.Add(okColumn);
|
||||
// 添加 CCD 列
|
||||
dgvCamreaNums.Columns.Add(new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "CCD",
|
||||
DataPropertyName = "CameraName"
|
||||
});
|
||||
// 添加 触发数 列
|
||||
var TiggerCountColumn = new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "触发数",
|
||||
DataPropertyName = "TiggerCount"
|
||||
};
|
||||
|
||||
// 添加 不合格 列
|
||||
var ngColumn = new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "不合格",
|
||||
DataPropertyName = "NGCount"
|
||||
};
|
||||
ngColumn.DefaultCellStyle.ForeColor = Color.LightCoral; // 设置背景为红色
|
||||
dgvCamreaNums.Columns.Add(ngColumn);
|
||||
dgvCamreaNums.Columns.Add(TiggerCountColumn);
|
||||
|
||||
// 添加 总数 列
|
||||
dgvCamreaNums.Columns.Add(new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "总数",
|
||||
DataPropertyName = "TotalCount"
|
||||
// 添加 合格 列
|
||||
var okColumn = new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "合格",
|
||||
DataPropertyName = "OKCount"
|
||||
};
|
||||
okColumn.DefaultCellStyle.ForeColor = Color.Green; // 设置背景为绿色
|
||||
dgvCamreaNums.Columns.Add(okColumn);
|
||||
|
||||
});
|
||||
// 添加 不合格 列
|
||||
var ngColumn = new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "不合格",
|
||||
DataPropertyName = "NGCount"
|
||||
};
|
||||
ngColumn.DefaultCellStyle.ForeColor = Color.LightCoral; // 设置背景为红色
|
||||
dgvCamreaNums.Columns.Add(ngColumn);
|
||||
|
||||
// 添加 良率 列
|
||||
dgvCamreaNums.Columns.Add(new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "良率",
|
||||
DataPropertyName = "YieldStr"
|
||||
});
|
||||
dgvCamreaNums.AutoGenerateColumns = false;
|
||||
dgvCamreaNums.DataSource = new BindingList<CameraSummary>(CameraSummaries);
|
||||
}
|
||||
// 添加 总数 列
|
||||
dgvCamreaNums.Columns.Add(new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "总数",
|
||||
DataPropertyName = "TotalCount"
|
||||
|
||||
});
|
||||
|
||||
// 添加 良率 列
|
||||
dgvCamreaNums.Columns.Add(new DataGridViewTextBoxColumn
|
||||
{
|
||||
HeaderText = "良率",
|
||||
DataPropertyName = "YieldStr"
|
||||
});
|
||||
dgvCamreaNums.AutoGenerateColumns = false;
|
||||
dgvCamreaNums.DataSource = new BindingList<CameraSummary>(CameraSummaries);
|
||||
})); }
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
@ -653,9 +654,9 @@ namespace DHSoftware
|
||||
detectionConfig.IsEnabled = detection.IsEnabled;
|
||||
detectionConfig.ImageSaveDirectory = "D://Projects//Images";
|
||||
|
||||
detectionConfig.ShowLocation.X = (i + 1) % 5 + (i + 1) / 5;
|
||||
// detectionConfig.ShowLocation.X = detection.ShowLocation.X;
|
||||
detectionConfig.ShowLocation.Y = (i + 1) / 5 + 1;
|
||||
// 优化后代码
|
||||
detectionConfig.ShowLocation.X = (i % 5) + 1; // X坐标从1开始,每行1-5
|
||||
detectionConfig.ShowLocation.Y = (i / 5) + 1; // Y坐标从1开始,每5个换行
|
||||
// detectionConfig.ShowLocation.Y = detection.ShowLocation.Y;
|
||||
DetectionConfigs.Add(detectionConfig);
|
||||
}
|
||||
@ -998,8 +999,7 @@ namespace DHSoftware
|
||||
// 处理按钮状态变化
|
||||
if (startPressed)
|
||||
{
|
||||
PLC.TurnSpeed(0);
|
||||
PLC.TurnStart(false);
|
||||
|
||||
HandleStartButton();
|
||||
}
|
||||
if (resetPressed)
|
||||
@ -1015,7 +1015,7 @@ namespace DHSoftware
|
||||
//EmergencyStop(null, null, null);
|
||||
}
|
||||
|
||||
Thread.Sleep(50);
|
||||
Thread.Sleep(150);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -1394,15 +1394,15 @@ namespace DHSoftware
|
||||
//转盘2 的物料是不是重新覆盖之前的pDta
|
||||
if (axisIndex == 1)
|
||||
{
|
||||
ProductData pData = new ProductData("", pieceNumber, ProductBaseCount);
|
||||
ProductData pData = new ProductData(BatchNO, pieceNumber, ProductBaseCount);
|
||||
_productLists[index][pieceNumber] = pData;
|
||||
LogAsync(DateTime.Now, LogLevel.Action, $">> 轴{axisIndex}新产品{pieceNumber}加入队列{index}----板卡计数{PieceCount}");
|
||||
LogAsync(DateTime.Now, LogLevel.Action, $">> 转盘{axisIndex}新产品{pieceNumber}加入队列{index}----计数{PieceCount}");
|
||||
|
||||
}
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
UpdateCT(null, (float)(dtNow - _ctTime).TotalSeconds);
|
||||
_ctTime = dtNow;
|
||||
//DateTime dtNow = DateTime.Now;
|
||||
//UpdateCT(null, (float)(dtNow - _ctTime).TotalSeconds);
|
||||
// _ctTime = dtNow;
|
||||
}
|
||||
|
||||
public async Task UpdateCT(object objData, float ctTime)
|
||||
|
24
DHSoftware/Views/CameraControl.Designer.cs
generated
24
DHSoftware/Views/CameraControl.Designer.cs
generated
@ -41,18 +41,18 @@
|
||||
label1 = new AntdUI.Label();
|
||||
label2 = new AntdUI.Label();
|
||||
label3 = new AntdUI.Label();
|
||||
iptExposure = new AntdUI.InputNumber();
|
||||
iptGain = new AntdUI.InputNumber();
|
||||
iptExposure = new AntdUI.Input();
|
||||
iptGain = new AntdUI.Input();
|
||||
iptRevolve = new AntdUI.Select();
|
||||
label4 = new AntdUI.Label();
|
||||
sltAcquisitionMode = new AntdUI.Select();
|
||||
label5 = new AntdUI.Label();
|
||||
sltTriggerMode = new AntdUI.Select();
|
||||
label7 = new AntdUI.Label();
|
||||
iptROIX = new AntdUI.InputNumber();
|
||||
iptROIY = new AntdUI.InputNumber();
|
||||
iptROIW = new AntdUI.InputNumber();
|
||||
iptROIH = new AntdUI.InputNumber();
|
||||
iptROIX = new AntdUI.Input();
|
||||
iptROIY = new AntdUI.Input();
|
||||
iptROIW = new AntdUI.Input();
|
||||
iptROIH = new AntdUI.Input();
|
||||
label6 = new AntdUI.Label();
|
||||
sthPic = new AntdUI.Switch();
|
||||
label8 = new AntdUI.Label();
|
||||
@ -497,18 +497,18 @@
|
||||
private AntdUI.Label label1;
|
||||
private AntdUI.Label label2;
|
||||
private AntdUI.Label label3;
|
||||
private AntdUI.InputNumber iptExposure;
|
||||
private AntdUI.InputNumber iptGain;
|
||||
private AntdUI.Input iptExposure;
|
||||
private AntdUI.Input iptGain;
|
||||
private AntdUI.Select iptRevolve;
|
||||
private AntdUI.Label label4;
|
||||
private AntdUI.Select sltAcquisitionMode;
|
||||
private AntdUI.Label label5;
|
||||
private AntdUI.Select sltTriggerMode;
|
||||
private AntdUI.Label label7;
|
||||
private AntdUI.InputNumber iptROIX;
|
||||
private AntdUI.InputNumber iptROIY;
|
||||
private AntdUI.InputNumber iptROIW;
|
||||
private AntdUI.InputNumber iptROIH;
|
||||
private AntdUI.Input iptROIX;
|
||||
private AntdUI.Input iptROIY;
|
||||
private AntdUI.Input iptROIW;
|
||||
private AntdUI.Input iptROIH;
|
||||
private AntdUI.Label label6;
|
||||
private AntdUI.Switch sthPic;
|
||||
private AntdUI.Label label8;
|
||||
|
@ -116,22 +116,20 @@ namespace DHSoftware.Views
|
||||
switch1.DataBindings.Add(nameof(switch1.Checked), CameraBase, nameof(CameraBase.IsZoomCamera),
|
||||
true, DataSourceUpdateMode.OnPropertyChanged);
|
||||
// 曝光时间绑定(假设iptExposure是NumericUpDown)
|
||||
iptExposure.DataBindings.Add(nameof(iptExposure.Value), CameraBase, nameof(CameraBase.Exposure),
|
||||
true, DataSourceUpdateMode.OnPropertyChanged, 0M, "N2");
|
||||
|
||||
|
||||
iptExposure.DataBindings.Add(nameof(iptExposure.Text), CameraBase, nameof(CameraBase.Exposure));
|
||||
// 增益绑定
|
||||
iptGain.DataBindings.Add(nameof(iptGain.Value), CameraBase, nameof(CameraBase.Gain),
|
||||
true, DataSourceUpdateMode.OnPropertyChanged, 0M, "N2");
|
||||
|
||||
iptGain.DataBindings.Add(nameof(iptGain.Text), CameraBase, nameof(CameraBase.Gain));
|
||||
// 旋转角度绑定
|
||||
iptRevolve.DataBindings.Add(nameof(iptRevolve.Text), CameraBase, nameof(CameraBase.RotateImage),
|
||||
true, DataSourceUpdateMode.OnPropertyChanged, 0M, "N2");
|
||||
iptRevolve.DataBindings.Add(nameof(iptRevolve.Text), CameraBase, nameof(CameraBase.RotateImage));
|
||||
|
||||
|
||||
// ROI坐标绑定
|
||||
iptROIX.DataBindings.Add(nameof(iptROIX.Value), CameraBase, nameof(CameraBase.ROIX));
|
||||
iptROIY.DataBindings.Add(nameof(iptROIY.Value), CameraBase, nameof(CameraBase.ROIY));
|
||||
iptROIW.DataBindings.Add(nameof(iptROIW.Value), CameraBase, nameof(CameraBase.ROIW));
|
||||
iptROIH.DataBindings.Add(nameof(iptROIH.Value), CameraBase, nameof(CameraBase.ROIH));
|
||||
iptROIX.DataBindings.Add(nameof(iptROIX.Text), CameraBase, nameof(CameraBase.ROIX));
|
||||
iptROIY.DataBindings.Add(nameof(iptROIY.Text), CameraBase, nameof(CameraBase.ROIY));
|
||||
iptROIW.DataBindings.Add(nameof(iptROIW.Text), CameraBase, nameof(CameraBase.ROIW));
|
||||
iptROIH.DataBindings.Add(nameof(iptROIH.Text), CameraBase, nameof(CameraBase.ROIH));
|
||||
|
||||
// 采集模式下拉框处理
|
||||
sltAcquisitionMode.SelectedIndexChanged += (s, e) =>
|
||||
|
2
DHSoftware/Views/FrmLog.Designer.cs
generated
2
DHSoftware/Views/FrmLog.Designer.cs
generated
@ -55,7 +55,7 @@
|
||||
this.tsmiClearLog.Name = "tsmiClearLog";
|
||||
this.tsmiClearLog.Size = new System.Drawing.Size(124, 22);
|
||||
this.tsmiClearLog.Text = "清空日志";
|
||||
this.tsmiClearLog.Click += new System.EventHandler(this.tsmiClearLog_Click);
|
||||
// this.tsmiClearLog.Click += new System.EventHandler(this.tsmiClearLog_Click);
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
|
@ -30,8 +30,11 @@ namespace DHSoftware.Views
|
||||
#region 常量配置
|
||||
private const string SOURCE_PROCESS = "流程";
|
||||
private const int LOG_NUM_LIMIT = 2000;
|
||||
private const int BATCH_SIZE = 50;
|
||||
private const int PROCESS_INTERVAL = 100;
|
||||
// private const int BATCH_SIZE = 50;
|
||||
// 调整常量配置
|
||||
private const int BATCH_SIZE = 100; // 从50提升到100
|
||||
private const int PROCESS_INTERVAL = 200; // 从100ms调整到200ms
|
||||
// private const int PROCESS_INTERVAL = 100;
|
||||
private const int FIRST_COL_WIDTH = 120;
|
||||
#endregion
|
||||
|
||||
|
@ -571,6 +571,7 @@ namespace DHSoftware.Views
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
menu1.Remove(clickedItem);
|
||||
ConfigModel.CameraBaseList.RemoveAll(c => c.CameraName == clickedItem.Text);
|
||||
foreach (var tab in tabs1.Pages)
|
||||
{
|
||||
if (tab is AntdUI.TabPage existingTab && existingTab.Text == $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}")
|
||||
@ -583,7 +584,7 @@ namespace DHSoftware.Views
|
||||
return;
|
||||
}
|
||||
}
|
||||
ConfigModel.CameraBaseList.RemoveAll(c => c.CameraName == clickedItem.Text);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
@ -658,6 +659,7 @@ namespace DHSoftware.Views
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
menu1.Remove(clickedItem);
|
||||
ConfigModel.CameraBaseList.RemoveAll(c => c.CameraName == clickedItem.Text);
|
||||
foreach (var tab in tabs1.Pages)
|
||||
{
|
||||
if (tab is AntdUI.TabPage existingTab && existingTab.Text == $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}")
|
||||
|
Reference in New Issue
Block a user