From e69865a1a3739740201bac8782b721da35d49923 Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期一, 25 一月 2021 18:45:28 +0800
Subject: [PATCH] 1. gocator添加重试和清理缓存操作 2. gts板卡调整监听频率 3. 记录产品数据使用filsstream避免程序崩溃影响
---
src/Bro.UI.Config/MenuForms/FrmStatistic.Designer.cs | 23 +++++
src/Bro.Device.GTSCard/GTSCardDriver.cs | 23 ++++-
src/Bro.UI.Config/MenuForms/FrmStatistic.cs | 97 +++++++++++++++++++----
src/Bro.M071.Process/UI/M071_MainForm.cs | 2
src/Bro.M071.Process/M071Process.cs | 2
src/Bro.UI.Config/MenuForms/FrmStatistic.resx | 3
src/Bro.Device.Gocator/GocatorDriver.cs | 56 ++++++++++---
src/Bro.UI.Config/Properties/AssemblyInfo.cs | 4
src/Bro.Device.Gocator/Properties/AssemblyInfo.cs | 4
src/Bro.Common.Device/Base/DeviceBase.cs | 1
src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs | 4
11 files changed, 176 insertions(+), 43 deletions(-)
diff --git a/src/Bro.Common.Device/Base/DeviceBase.cs b/src/Bro.Common.Device/Base/DeviceBase.cs
index 382f53d..ba49b47 100644
--- a/src/Bro.Common.Device/Base/DeviceBase.cs
+++ b/src/Bro.Common.Device/Base/DeviceBase.cs
@@ -70,6 +70,7 @@
}
set
{
+ LogAsync(DateTime.Now, $"璁惧鐘舵�佸垏鎹細{_currentState.ToString()}->{value.ToString()}", "");
_currentState = value;
if (value != EnumHelper.DeviceState.TBD)
diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs
index 25ec672..a1c7aa6 100644
--- a/src/Bro.Device.GTSCard/GTSCardDriver.cs
+++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -312,7 +312,6 @@
}
}
-
public override bool AllAxisOn()
{
List<Task<bool>> taskList = new List<Task<bool>>(); ;
@@ -387,7 +386,7 @@
responseMessage.Result = resultList.All(u => u == true);
if (!responseMessage.Result)
{
- responseMessage.Message = $"鐐逛綅杩愬姩寮傚父";
+ responseMessage.Message = $"鐐逛綅杩愬姩寮傚父,杩愬姩缁撴灉锛歿string.Join(" ", resultList.Select(u => u ? "1" : "0"))}";
}
}
return responseMessage;
@@ -770,7 +769,14 @@
repeatTime--;
}
- return (ret == (short)GTSRetCode.GRCRunOK) && isStop;
+ if (repeatTime <= 0)
+ {
+ LogAsync(DateTime.Now, "杞�" + optionPara.AxisIndex + "APS_absolute_move鏈仠姝�", "");
+ return false;
+ }
+
+ //return (ret == (short)GTSRetCode.GRCRunOK) && isStop;
+ return true;
}
catch (Exception ex)
{
@@ -1056,6 +1062,10 @@
OnExceptionOccured?.Invoke(DateTime.Now, ex);
return false;
}
+ finally
+ {
+
+ }
}
/// <summary>
@@ -1235,7 +1245,9 @@
}
});
- _positionWait.SpinOnce();
+ Task.Delay(100).Wait();
+
+ //_positionWait.SpinOnce();
}
catch (Exception ex)
{
@@ -1272,7 +1284,8 @@
}
});
- _statusWait.SpinOnce();
+ Thread.Sleep(10);
+ //Task.Delay(10).Wait();
}
catch (Exception ex)
{
diff --git a/src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs b/src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs
index 507b541..f5ccf9a 100644
--- a/src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs
+++ b/src/Bro.Device.GTSCard/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.1.0")]
+[assembly: AssemblyFileVersion("1.0.1.0")]
diff --git a/src/Bro.Device.Gocator/GocatorDriver.cs b/src/Bro.Device.Gocator/GocatorDriver.cs
index fb7e04f..52c32df 100644
--- a/src/Bro.Device.Gocator/GocatorDriver.cs
+++ b/src/Bro.Device.Gocator/GocatorDriver.cs
@@ -13,6 +13,7 @@
using System.Drawing;
using System.IO;
using System.Linq;
+using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
@@ -218,6 +219,7 @@
}
}
+ [MethodImpl(MethodImplOptions.Synchronized)]
public override IImageSet Snapshot(IOperationConfig config)
{
GocatorOperationConfig opConfig = config as GocatorOperationConfig;
@@ -234,7 +236,8 @@
{
try
{
- system.Start();
+ sensor.Start();
+ LogAsync(DateTime.Now, $"浼犳劅鍣ㄧ姸鎬侊細{sensor.State.ToString()}", "");
if (sensor.State != GoState.Running)
{
Thread.Sleep(100);
@@ -247,6 +250,7 @@
catch (Exception ex)
{
LogAsync(DateTime.Now, $"寮�鍚紓甯革細{ex.GetExceptionMessage()}", "");
+ Thread.Sleep(100);
}
} while (true);
@@ -284,17 +288,27 @@
return null;
}
- try
+ int reTryTime = 3;
+ do
{
- dataSet = system.ReceiveData(IIConfig.SnapshotTimeout);
- }
- catch (Exception ex)
- {
- LogAsync(DateTime.Now, $"{Name}鑾峰彇鍥惧儚寮傚父", ex.GetExceptionMessage());
- imgSet.HImage = null;
- dataSet = null;
- //return imgSet;
- }
+ try
+ {
+ dataSet = system.ReceiveData(IIConfig.SnapshotTimeout);
+ reTryTime = 0;
+ }
+ catch (Exception ex)
+ {
+ reTryTime--;
+ LogAsync(DateTime.Now, $"{Name}鑾峰彇鍥惧儚寮傚父", ex.GetExceptionMessage());
+
+ if (reTryTime <= 0)
+ {
+ imgSet.HImage = null;
+ dataSet = null;
+ system.ClearData();
+ }
+ }
+ } while (reTryTime > 0);
}
if (!IIConfig.IsAsyncMode)
@@ -310,8 +324,9 @@
{
try
{
- system.Stop();
+ sensor.Stop();
+ LogAsync(DateTime.Now, $"浼犳劅鍣ㄧ姸鎬侊細{sensor.State.ToString()}", "");
if (sensor.State != GoState.Ready)
{
Thread.Sleep(100);
@@ -324,6 +339,7 @@
catch (Exception ex)
{
LogAsync(DateTime.Now, $"鍏抽棴寮傚父锛歿ex.GetExceptionMessage()}", "");
+ Thread.Sleep(100);
}
} while (true);
@@ -442,10 +458,22 @@
{
base.Start();
- //system.Start();
+ if (sensor.State != GoState.Ready)
+ {
+ system.Start();
+ }
if (IIConfig.IsAsyncMode)
- system.Start();
+ {
+ sensor.Start();
+ }
+ else
+ {
+ //if (sensor.State == GoState.Ready)
+ {
+ sensor.Stop();
+ }
+ }
}
protected override void Stop()
diff --git a/src/Bro.Device.Gocator/Properties/AssemblyInfo.cs b/src/Bro.Device.Gocator/Properties/AssemblyInfo.cs
index 43f4501..3407a97 100644
--- a/src/Bro.Device.Gocator/Properties/AssemblyInfo.cs
+++ b/src/Bro.Device.Gocator/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.1.0")]
-[assembly: AssemblyFileVersion("1.0.1.0")]
+[assembly: AssemblyVersion("1.0.2.0")]
+[assembly: AssemblyFileVersion("1.0.2.0")]
diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index f4108cd..7165338 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -19,6 +19,7 @@
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
+using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -197,6 +198,7 @@
List<ProductionMeasurement> productionList = new List<ProductionMeasurement>();
[ProcessMethod("", "StartJob", "寮�濮嬫壂鎻�", InvokeType.TestInvoke)]
+ [MethodImpl(MethodImplOptions.Synchronized)]
public ProcessResponse StartJob(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
{
if (!IsAllowedWork)
diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs
index 8ef45d1..c92a0ec 100644
--- a/src/Bro.M071.Process/UI/M071_MainForm.cs
+++ b/src/Bro.M071.Process/UI/M071_MainForm.cs
@@ -7,8 +7,10 @@
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.IO;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using static Bro.Common.Helper.EnumHelper;
diff --git a/src/Bro.UI.Config/MenuForms/FrmStatistic.Designer.cs b/src/Bro.UI.Config/MenuForms/FrmStatistic.Designer.cs
index e4aa25e..236ea20 100644
--- a/src/Bro.UI.Config/MenuForms/FrmStatistic.Designer.cs
+++ b/src/Bro.UI.Config/MenuForms/FrmStatistic.Designer.cs
@@ -28,9 +28,12 @@
/// </summary>
private void InitializeComponent()
{
+ this.components = new System.ComponentModel.Container();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.plStatistic = new System.Windows.Forms.Panel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.ctmsClearQty = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.tsmiClearQty = new System.Windows.Forms.ToolStripMenuItem();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
@@ -71,6 +74,7 @@
this.flowLayoutPanel1.SuspendLayout();
this.plStatistic.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
+ this.ctmsClearQty.SuspendLayout();
this.plCT.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.plOEE.SuspendLayout();
@@ -104,6 +108,7 @@
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F));
+ this.tableLayoutPanel1.ContextMenuStrip = this.ctmsClearQty;
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.label3, 0, 2);
@@ -122,6 +127,20 @@
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 33F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(215, 100);
this.tableLayoutPanel1.TabIndex = 0;
+ //
+ // ctmsClearQty
+ //
+ this.ctmsClearQty.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.tsmiClearQty});
+ this.ctmsClearQty.Name = "ctmsClearQty";
+ this.ctmsClearQty.Size = new System.Drawing.Size(125, 26);
+ //
+ // tsmiClearQty
+ //
+ this.tsmiClearQty.Name = "tsmiClearQty";
+ this.tsmiClearQty.Size = new System.Drawing.Size(124, 22);
+ this.tsmiClearQty.Text = "璁℃暟娓呴浂";
+ this.tsmiClearQty.Click += new System.EventHandler(this.tsmiClearQty_Click);
//
// label1
//
@@ -226,6 +245,7 @@
this.btnClearStatistic.TabIndex = 8;
this.btnClearStatistic.Text = "娓� 闆�";
this.btnClearStatistic.UseVisualStyleBackColor = true;
+ this.btnClearStatistic.Visible = false;
this.btnClearStatistic.Click += new System.EventHandler(this.btnClearStatistic_Click);
//
// plCT
@@ -588,6 +608,7 @@
this.plStatistic.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
+ this.ctmsClearQty.ResumeLayout(false);
this.plCT.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
@@ -641,5 +662,7 @@
private System.Windows.Forms.Button btnRefreshOEE;
private System.Windows.Forms.Label lblCT;
private System.Windows.Forms.Label lblUPH;
+ private System.Windows.Forms.ContextMenuStrip ctmsClearQty;
+ private System.Windows.Forms.ToolStripMenuItem tsmiClearQty;
}
}
\ No newline at end of file
diff --git a/src/Bro.UI.Config/MenuForms/FrmStatistic.cs b/src/Bro.UI.Config/MenuForms/FrmStatistic.cs
index 30b5409..d587aca 100644
--- a/src/Bro.UI.Config/MenuForms/FrmStatistic.cs
+++ b/src/Bro.UI.Config/MenuForms/FrmStatistic.cs
@@ -5,7 +5,9 @@
using System;
using System.Configuration;
using System.IO;
+using System.Runtime.CompilerServices;
using System.Threading.Tasks;
+using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
using static Bro.Common.Helper.EnumHelper;
@@ -403,10 +405,10 @@
CurrentState = RunState.Stop;
}
- if (state == EnumHelper.DeviceState.DSClose)
- {
- SaveNumRecord();
- }
+ //if (state == EnumHelper.DeviceState.DSClose)
+ //{
+ // SaveNumRecord();
+ //}
}
private void CheckIdle(object state)
@@ -436,7 +438,7 @@
Task.Run(() =>
{
- SaveNumRecord();
+ SaveNumRecord(Qty_OK, Qty_NG);
});
}
@@ -505,22 +507,52 @@
AvailableTime = AvailableTime.Add(new TimeSpan(0, 0, 1));
}
- private void OnClearQty()
- {
- Qty_OK = Qty_NG = 0;
- }
+ //private void OnClearQty()
+ //{
+ // Qty_OK = Qty_NG = 0;
+ //}
string numRecordFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Statistic.json");
static object numLock = new object();
- private void SaveNumRecord()
+
+ [MethodImpl(MethodImplOptions.Synchronized)]
+ private void SaveNumRecord(int okNum, int ngNum)
{
lock (numLock)
{
- using (StreamWriter writer = new StreamWriter(numRecordFile, false, System.Text.Encoding.UTF8))
+ try
{
- string dataStr = JsonConvert.SerializeObject(new { Qty_OK, Qty_NG });
- writer.Write(dataStr);
- writer.Flush();
+ //using (StreamWriter writer = new StreamWriter(numRecordFile, false, System.Text.Encoding.UTF8))
+ //{
+ // if (okNum % 5 == 0)
+ // {
+ // Application.Exit();
+ // throw new AccessViolationException();
+ // }
+ // string dataStr = JsonConvert.SerializeObject(new StatisticModel() { Qty_OK = okNum, Qty_NG = ngNum });
+ // if (!string.IsNullOrWhiteSpace(dataStr))
+ // {
+ // writer.Write(dataStr);
+ // writer.Flush();
+ // }
+ //}
+
+ using (FileStream fs = new FileStream(numRecordFile, FileMode.OpenOrCreate, FileAccess.Write))
+ {
+ fs.Seek(0, SeekOrigin.Begin);
+
+ string dataStr = JsonConvert.SerializeObject(new StatisticModel() { Qty_OK = okNum, Qty_NG = ngNum });
+
+ byte[] dataBuf = System.Text.Encoding.UTF8.GetBytes(dataStr);
+ fs.Write(dataBuf, 0, dataBuf.Length);
+ fs.SetLength(dataBuf.Length);
+ fs.Flush();
+ fs.Close();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogAsync(DateTime.Now, $"淇濆瓨缁熻鏁版嵁寮傚父锛寋ex.GetExceptionMessage()}");
}
}
}
@@ -535,21 +567,50 @@
{
string dataStr = reader.ReadToEnd();
- JObject data = JsonConvert.DeserializeObject<JObject>(dataStr);
+ //JObject data = JsonConvert.DeserializeObject<JObject>(dataStr);
- if (data != null)
+ //if (data != null)
+ //{
+ // Qty_OK = data.Value<int>("Qty_OK");
+ // Qty_NG = data.Value<int>("Qty_NG");
+ //}
+
+ StatisticModel model = JsonConvert.DeserializeObject<StatisticModel>(dataStr);
+ if (model != null)
{
- Qty_OK = data.Value<int>("Qty_OK");
- Qty_NG = data.Value<int>("Qty_NG");
+ Qty_OK = model.Qty_OK;
+ Qty_NG = model.Qty_NG;
+ }
+ else
+ {
+ //LogAsync(DateTime.Now, $"杞藉叆缁熻鏁版嵁閿欒", "");
+ MessageBox.Show($"杞藉叆缁熻鏁版嵁閿欒");
}
}
}
+ }
+ else
+ {
+ //LogAsync(DateTime.Now, $"缁熻鏁版嵁鏂囦欢涓嶅瓨鍦�", "");
+ MessageBox.Show($"缁熻鏁版嵁鏂囦欢涓嶅瓨鍦�");
}
}
private void btnClearStatistic_Click(object sender, EventArgs e)
{
+ //Qty_OK = Qty_NG = 0;
+ }
+
+ private void tsmiClearQty_Click(object sender, EventArgs e)
+ {
Qty_OK = Qty_NG = 0;
}
}
+
+ public class StatisticModel
+ {
+ public int Qty_OK { get; set; }
+
+ public int Qty_NG { get; set; }
+ }
}
diff --git a/src/Bro.UI.Config/MenuForms/FrmStatistic.resx b/src/Bro.UI.Config/MenuForms/FrmStatistic.resx
index 1af7de1..7a151da 100644
--- a/src/Bro.UI.Config/MenuForms/FrmStatistic.resx
+++ b/src/Bro.UI.Config/MenuForms/FrmStatistic.resx
@@ -117,4 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
+ <metadata name="ctmsClearQty.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
</root>
\ No newline at end of file
diff --git a/src/Bro.UI.Config/Properties/AssemblyInfo.cs b/src/Bro.UI.Config/Properties/AssemblyInfo.cs
index d627c5c..18d26fe 100644
--- a/src/Bro.UI.Config/Properties/AssemblyInfo.cs
+++ b/src/Bro.UI.Config/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@
// 鍙互鎸囧畾鎵�鏈夊�硷紝涔熷彲浠ヤ娇鐢ㄤ互涓嬫墍绀虹殑 "*" 棰勭疆鐗堟湰鍙峰拰淇鍙�
// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�: :
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.1.0")]
+[assembly: AssemblyFileVersion("1.0.1.0")]
--
Gitblit v1.8.0