From 3f6e94d7de9694378114773ab48d8a61bcc3a01e Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期一, 01 二月 2021 09:22:20 +0800
Subject: [PATCH] 1. 报警生成前后端异步调用 2. 安全光栅方法单线程调用 3. 复位完成时修改界面显示 4. 机台状态拆分执行状态
---
src/Bro.M071.Process/UI/M071_MainForm.cs | 11 +++++
src/Bro.M071.Process/M071Process.cs | 26 +++++++++++--
src/Bro.M071.Process/M071Process_MotionCard.cs | 60 +++++++++++++++++------------
src/Bro.Process/ProcessControl.cs | 7 ++-
src/Bro.M071.Process/Properties/AssemblyInfo.cs | 4 +-
5 files changed, 75 insertions(+), 33 deletions(-)
diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index 7165338..7666577 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -48,6 +48,7 @@
public event Action<IShapeElement> OnElementUpdated;
public event Action<MachineState> OnMachineStateChanged;
public event Action OnFullResetDone;
+ public event Action OnResetDone;
#endregion
string _precision = "f3";
@@ -197,6 +198,8 @@
object productionLock = new object();
List<ProductionMeasurement> productionList = new List<ProductionMeasurement>();
+ bool _isdoing = false;
+
[ProcessMethod("", "StartJob", "寮�濮嬫壂鎻�", InvokeType.TestInvoke)]
[MethodImpl(MethodImplOptions.Synchronized)]
public ProcessResponse StartJob(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
@@ -207,6 +210,7 @@
}
string hint = "";
+
//if (MachineState != MachineState.Ready)
//{
// hint = "鏈哄彴鏈氨缁紝璇峰嬁寮�濮嬫祴閲�";
@@ -221,6 +225,8 @@
OnCheckHintUpload?.Invoke(hint, true);
throw new ProcessException(hint);
}
+
+ _isdoing = true;
MachineState = MachineState.Running;
@@ -317,6 +323,7 @@
});
LogAsync(DateTime.Now, $"{pMeasure.Barcode}娴嬮噺鍔ㄤ綔瀹屾垚", "");
+ _isdoing = false;
GC.Collect(0, GCCollectionMode.Optimized);
@@ -330,8 +337,11 @@
get => isLeftStart;
set
{
- isLeftStart = value;
- StartCheck();
+ if (IsLeftStart != value)
+ {
+ isLeftStart = value;
+ StartCheck();
+ }
}
}
@@ -341,8 +351,11 @@
get => isRightStart;
set
{
- isRightStart = value;
- StartCheck();
+ if (isRightStart != value)
+ {
+ isRightStart = value;
+ StartCheck();
+ }
}
}
@@ -350,6 +363,11 @@
{
if (isRightStart && isLeftStart)
{
+ if (_isdoing)
+ {
+ OnCheckHintUpload?.Invoke("璁惧杩愯涓�", false);
+ return;
+ }
StartJob(null, null, null);
}
}
diff --git a/src/Bro.M071.Process/M071Process_MotionCard.cs b/src/Bro.M071.Process/M071Process_MotionCard.cs
index 8806106..c49221c 100644
--- a/src/Bro.M071.Process/M071Process_MotionCard.cs
+++ b/src/Bro.M071.Process/M071Process_MotionCard.cs
@@ -7,6 +7,7 @@
using System.ComponentModel;
using System.Drawing.Design;
using System.Linq;
+using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -34,6 +35,8 @@
Task.Run(() =>
{
+ OnMachineStateChanged?.Invoke(machineState);
+
switch (machineState)
{
case MachineState.Ready:
@@ -123,9 +126,7 @@
default:
break;
}
- });
-
- OnMachineStateChanged?.Invoke(machineState);
+ });
}
}
@@ -248,7 +249,9 @@
MotionCardDefaultRun("Reset", ref opConfig, ref invokeDevice);
(invokeDevice as MotionCardBase).ResetAlarm();
+ _isdoing = false;
RaisedAlarm("");
+ OnCheckHintUpload?.Invoke("", false);
//if (MachineState != MachineState.Pause)
//{
@@ -268,6 +271,7 @@
}
LogAsync(DateTime.Now, "鏅�氬浣嶅姩浣滃畬鎴�", "");
+ OnResetDone?.Invoke();
return new ProcessResponse(true);
}
@@ -646,39 +650,43 @@
ManualResetEventSlim _pausedHandle = new ManualResetEventSlim(true);
MachineState _machineStateBeforePause = MachineState.Unknown;
- private void CheckMachinePauseState()
+ object _pauseLock = new object();
+ private async void CheckMachinePauseState()
{
- //await Task.Run(() =>
+ await Task.Run(() =>
{
- if (IsMachinePaused)
+ lock (_pauseLock)
{
- if (MachineState == MachineState.Ready || MachineState == MachineState.Running)
+ if (IsMachinePaused)
{
- _machineStateBeforePause = MachineState;
- }
- MachineState = MachineState.Pause;
- _pausedHandle.Reset();
+ if (MachineState == MachineState.Ready || MachineState == MachineState.Running)
+ {
+ _machineStateBeforePause = MachineState;
+ }
+ MachineState = MachineState.Pause;
+ _pausedHandle.Reset();
- if (_machineStateBeforePause == MachineState.Running)
- {
- Pause();
- }
- }
- else
- {
- if (MachineState == MachineState.Pause)
- {
if (_machineStateBeforePause == MachineState.Running)
{
- Resume(true);
+ Pause();
}
- _pausedHandle.Set();
- RaisedAlarm("");
- MachineState = _machineStateBeforePause;
+ }
+ else
+ {
+ if (MachineState == MachineState.Pause)
+ {
+ if (_machineStateBeforePause == MachineState.Running || _machineStateBeforePause == MachineState.Ready)
+ {
+ Resume(true);
+ }
+ _pausedHandle.Set();
+ RaisedAlarm("");
+ MachineState = _machineStateBeforePause;
+ }
}
}
}
- //);
+ );
}
public bool IsMachinePaused
@@ -687,6 +695,7 @@
}
[ProcessMethod("", "SafetyDoorSignal", "瀹夊叏闂ㄤ俊鍙风洃鎺э紝姝e父ON锛孫FF鏃舵姤璀�", InvokeType.TestInvoke)]
+ [MethodImpl(MethodImplOptions.Synchronized)]
public ProcessResponse SafetyDoorSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
{
//if (MachineState != MachineState.Running && MachineState != MachineState.Pause)
@@ -706,6 +715,7 @@
}
[ProcessMethod("", "SafetyBeamSignal", "瀹夊叏鍏夊箷淇″彿鐩戞帶锛屾甯窸N锛孫FF鏃舵姤璀�", InvokeType.TestInvoke)]
+ [MethodImpl(MethodImplOptions.Synchronized)]
public ProcessResponse SafetyBeamSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
{
if (opConfig.InputPara == null || opConfig.InputPara.Count == 0)
diff --git a/src/Bro.M071.Process/Properties/AssemblyInfo.cs b/src/Bro.M071.Process/Properties/AssemblyInfo.cs
index 974f550..86af5ac 100644
--- a/src/Bro.M071.Process/Properties/AssemblyInfo.cs
+++ b/src/Bro.M071.Process/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.3.0")]
-[assembly: AssemblyFileVersion("1.0.3.0")]
+[assembly: AssemblyVersion("1.0.4.1")]
+[assembly: AssemblyFileVersion("1.0.4.1")]
diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs
index c92a0ec..1266611 100644
--- a/src/Bro.M071.Process/UI/M071_MainForm.cs
+++ b/src/Bro.M071.Process/UI/M071_MainForm.cs
@@ -119,6 +119,9 @@
Process_M071.OnFullResetDone -= Process_M071_FullResetDone;
Process_M071.OnFullResetDone += Process_M071_FullResetDone;
+ Process_M071.OnResetDone -= Process_M071_ResetDone;
+ Process_M071.OnResetDone += Process_M071_ResetDone;
+
Config.PropertyChanged -= Config_PropertyChanged;
Config.PropertyChanged += Config_PropertyChanged;
@@ -129,6 +132,14 @@
Process_M071.OnOperatorLogin = OnOperatorLogin;
}
+ private void Process_M071_ResetDone()
+ {
+ lblCT.BeginInvoke(new Action(() =>
+ {
+ lblCT.Text = "";
+ }));
+ }
+
private void Config_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
txtBarcode.Enabled = !Config.IsBarcodeManualInputBlocked;
diff --git a/src/Bro.Process/ProcessControl.cs b/src/Bro.Process/ProcessControl.cs
index 9519754..7e900ab 100644
--- a/src/Bro.Process/ProcessControl.cs
+++ b/src/Bro.Process/ProcessControl.cs
@@ -732,9 +732,12 @@
OnAlarmUpdate?.BeginInvoke(alarmMsg, null, null);
}
- public virtual void RaisedAlarm(string alarmMsg)
+ public async virtual void RaisedAlarm(string alarmMsg)
{
- OnAlarmUpdate?.Invoke(alarmMsg);
+ await Task.Run(() =>
+ {
+ OnAlarmUpdate?.Invoke(alarmMsg);
+ });
}
#endregion
--
Gitblit v1.8.0