From 2120c4a86e6b7bfe2b8e27f79c0ebe2efddbc0e0 Mon Sep 17 00:00:00 2001
From: kingno <30263@KINGNO>
Date: 星期二, 01 四月 2025 17:25:38 +0800
Subject: [PATCH] 数据汇总调整
---
src/Bro.M141.Process/UI/UI.cs | 2
src/Bro.M141.Process/UI/UIPrinter.cs | 5
src/Bro.M141_AOI1.Process/AOI1Process.cs | 94 ++++++++++-----
src/Bro.M135.Common/ProductModel.cs | 9
src/Bro.M141.Process/M141Process_Mysql.cs | 110 +++++++++++++++---
src/Bro.M141.Process/M141Config.cs | 37 ++++++
src/Bro.M135.DBManager/Models/P_PRODUCT.cs | 3
src/Bro.M141.Process/M141Process.cs | 77 +++++++++++-
src/Bro.M141.Process/M141Process_ImageCheck.cs | 12 -
9 files changed, 273 insertions(+), 76 deletions(-)
diff --git a/src/Bro.M135.Common/ProductModel.cs b/src/Bro.M135.Common/ProductModel.cs
index 5e1df4b..ecca1b3 100644
--- a/src/Bro.M135.Common/ProductModel.cs
+++ b/src/Bro.M135.Common/ProductModel.cs
@@ -193,7 +193,7 @@
});
});
- head = $"PID,鏉$爜,姹囨�绘娴嬬粨鏋�,";
+ head = $"鏃堕棿,PID,鏍忓叿鐮�,鐗╂枡鐮�,鏉$爜,姹囨�绘娴嬬粨鏋�,";
positionList = new List<string>();
Details = Details.OrderBy(u => u.PositionName).ToList();
@@ -233,7 +233,8 @@
});
});
- string data = $"{PID},{SN},{Result},";
+ //鏃堕棿,PID,鏍忓叿鐮�,鐗╂枡鐮�,鏉$爜,姹囨�绘娴嬬粨鏋�,";
+ string data = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}T,{PID},{BasketCode},{SEQUENCE},{SN},{Result},";
positionList.ForEach(pName =>
{
var detail = Details.FirstOrDefault(u => $"{u.STATION_CODE}_{u.PositionName}" == pName);
@@ -301,7 +302,7 @@
});
});
- head = $"鏃堕棿,PID,搴忓彿,鏉$爜,";
+ head = $"鏃堕棿,鏍忓叿鐮�,PID,搴忓彿,鏉$爜,";
foreach (var d in positionDetail)
{
@@ -338,7 +339,7 @@
});
});
- string data = $"{DateTime.Now.ToString("HH:mm:ss.fff")}T,{PID},{SEQUENCE},{SN},";
+ string data = $"{DateTime.Now.ToString("HH:mm:ss.fff")}T,{BasketCode},{PID},{SEQUENCE},{SN},";
positionDetail.ForEach(detail =>
{
if (!detail.IsDone)
diff --git a/src/Bro.M135.DBManager/Models/P_PRODUCT.cs b/src/Bro.M135.DBManager/Models/P_PRODUCT.cs
index 11da7c0..659c26e 100644
--- a/src/Bro.M135.DBManager/Models/P_PRODUCT.cs
+++ b/src/Bro.M135.DBManager/Models/P_PRODUCT.cs
@@ -11,6 +11,9 @@
public string SN { get; set; } = "NOREAD";
+
+ public string BasketCode { get; set; } = "NOREAD";
+
public string Result { get; set; } = "";
[NotMapped]
diff --git a/src/Bro.M141.Process/M141Config.cs b/src/Bro.M141.Process/M141Config.cs
index 065be49..1cd2cdd 100644
--- a/src/Bro.M141.Process/M141Config.cs
+++ b/src/Bro.M141.Process/M141Config.cs
@@ -100,12 +100,49 @@
public ImageFormat ImageFormatOK { get; set; } = ImageFormat.Png;
+
+ [Category("鏁版嵁搴撻厤缃�")]
+ [Description("IP")]
+ [DisplayName("IP")]
+ public string IPforall { get; set; } = "192.168.44.122";
+
+ [Category("鏁版嵁搴撻厤缃�")]
+ [Description("鏄惁涓虹粓鐐硅澶�")]
+ [DisplayName("鏄惁涓虹粓鐐硅澶�")]
+ public bool IsfinDevice { get; set; } = false;
+
+
+
+
+ [Category("鏍忓叿鏉$爜閰嶇疆")]
+ [Description("褰撳墠鏍忓叿鐮�")]
+ [DisplayName("褰撳墠鏍忓叿鐮�")]
+ public string basketcode { get; set; } = "NoRead";
+
+ [Category("鏍忓叿鏉$爜閰嶇疆")]
+ [Description("鏈珯鏄惁璇诲彇鏍忓叿鐮�")]
+ [DisplayName("鏈珯鏄惁璇诲彇鏍忓叿鐮�")]
+ public bool Isreadbasketcode { get; set; } = false;
+
+
+ //[Category("鏁版嵁搴撻厤缃�")]
+ //[Description("鏄惁涓虹粓鐐硅澶�")]
+ //[DisplayName("鏄惁涓虹粓鐐硅澶�")]
+ //public bool IsfinDevice { get; set; } = false;
+
+
}
public class WorkPositionSet : IComplexDisplay
{
[Category("plc鍦板潃")]
+ [Description("鏄惁鍙栧浘鍗冲畬鎴�")]
+ [DisplayName("鏄惁鍙栧浘鍗冲畬鎴�")]
+ public bool ispiccover { get; set; } = false;
+
+
+ [Category("plc鍦板潃")]
[Description("瀹屾垚鍦板潃")]
[DisplayName("瀹屾垚鍦板潃")]
public int plcover { get; set; }
diff --git a/src/Bro.M141.Process/M141Process.cs b/src/Bro.M141.Process/M141Process.cs
index 91e0e62..4444bcc 100644
--- a/src/Bro.M141.Process/M141Process.cs
+++ b/src/Bro.M141.Process/M141Process.cs
@@ -97,6 +97,7 @@
_positionCheckTimeDict.Clear();
_positionSpecHeads.Clear();
+ mysqlhelper.IniDBIP(M141Config.IPforall);
if (ThHeartPlc == null)
{
@@ -263,6 +264,15 @@
if (isSaveDB)
{
+ if (M141Config.Isreadbasketcode)
+ {
+ p.BasketCode = M141Config.basketcode;
+ }
+ else
+ {
+ p.BasketCode = mysqlhelper.Getbasketcode(p.SEQUENCE);
+ }
+
mysqlhelper.NewProduct(p);
}
@@ -294,7 +304,7 @@
p.PID = p.PID + "_" + sequence.Split('_')[sequence.Split('_').Length - 1];
p.Initial(M141Config.StationCode, M141Config.WorkPositionCollection.Where(u => u.IsEnabled).Select(u => u.PositionName).ToList());
- //LogAsync(DateTime.Now, EnumHelper.LogLevel.Warning, $"鏈兘浠庢暟鎹簱鑾峰彇浜у搧瀵硅薄锛屼娇鐢ㄤ复鏃舵柊寤轰骇鍝佸璞�");
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Warning, $"鏈兘浠庢暟鎹簱鑾峰彇浜у搧瀵硅薄锛屼娇鐢ㄤ复鏃舵柊寤轰骇鍝佸璞�");
}
NewProductIntoList(p, false);
@@ -704,6 +714,7 @@
try
{
ConcurrentDictionary<MeasureBind, IImageSet> imgSetDicts = new ConcurrentDictionary<MeasureBind, IImageSet>();
+ var positionSet = M141Config.WorkPositionCollection.Where(u => u.IsEnabled).FirstOrDefault(u => u.TriggerValue == triggerDatas[0]);
measureBinds.AsParallel().ForAll(b =>
{
@@ -715,6 +726,10 @@
try
{
imgSetDicts[b] = CollectHImage(camera, b.SnapshotOpConfig);
+ if (positionSet.ispiccover)
+ {
+ Plc1.WriteSingleAddress(positionSet.plcover,1,out _);
+ }
}
catch (Exception ea)
{
@@ -930,10 +945,8 @@
plcresult.Add(isOK);
List<string> specHeads = new List<string>();
string head = p.GetCSVHead(ref specHeads, positionName);
- if (!_positionSpecHeads.ContainsKey(positionName))
- {
- _positionSpecHeads[positionName] = specHeads;
- }
+
+ _positionSpecHeads[positionName] = specHeads;
string data = p.GetCSVData(_positionSpecHeads[positionName], positionName);
CSVRecordAsync($"{positionName}_Record_{DateTime.Now.ToString("yyyyMMdd")}.csv", data, head);
@@ -941,10 +954,15 @@
//UpdatePositionResultToDB(detail);
var seqData = p.SEQUENCE.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries).ToList();
-
+ mysqlhelper.UpdateProduct(p);
if (positionSet.IsLastPosition)
{
UpdateProductResultAsync(p);
+ mysqlhelper.NewForAll(p, M141Config.StationCode);
+ if (M141Config.IsfinDevice)
+ {
+ SummaryAllprodata(p);
+ }
}
});
ReplyPlcData(positionSet, plcresult);
@@ -993,6 +1011,53 @@
}
+
+
+
+ public void SummaryAllprodata(ProductModel p)
+ {
+ _taskFactory.StartNew(() =>
+ {
+ try
+ {
+
+ ProductModel newp = new ProductModel();
+ newp.SEQUENCE = p.SEQUENCE;
+ newp.PID = p.PID;
+ newp.BasketCode = p.BasketCode;
+ newp.Result = p.Result;
+ newp.SN = p.SN;
+ newp.Details.AddRange(p.Details);
+
+ var plist = mysqlhelper.GetProductList(p.SEQUENCE);
+
+ if (plist != null)
+ {
+ foreach (var item in plist)
+ {
+ newp.Details.AddRange(item.Details);
+ }
+ }
+
+ List<string> specHeadListforall = new List<string>();
+ List<string> positionListforall = new List<string>();
+ string csvHeadforall = p.GetCSVHead(ref specHeadListforall, ref positionListforall);
+ CSVRecordAsync($"AllDeviceProductRecord.csv", p.GetCSVData(specHeadListforall, positionListforall), csvHeadforall);
+
+ }
+ catch(Exception exx)
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, "AllDeviceProductRecord鏁版嵁姹囨�诲紓甯� " + exx.ToString());
+ }
+ });
+
+ }
+
+
+
+
+
+
#endregion
}
diff --git a/src/Bro.M141.Process/M141Process_ImageCheck.cs b/src/Bro.M141.Process/M141Process_ImageCheck.cs
index 78e0296..e76e5cf 100644
--- a/src/Bro.M141.Process/M141Process_ImageCheck.cs
+++ b/src/Bro.M141.Process/M141Process_ImageCheck.cs
@@ -436,8 +436,6 @@
}
-
-
[ProcessMethod("", "ProductDataUpload", "浜у搧鏁版嵁姹囨��", InvokeType.TestInvoke)]
public ResponseMessage ProductDataUpload(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
{
@@ -498,11 +496,6 @@
return msg;
}
-
-
-
-
-
@@ -638,10 +631,7 @@
_taskFactory.StartNew(() =>
{
- if (string.IsNullOrWhiteSpace(_csvHead))
- {
- _csvHead = p.GetCSVHead(ref _specHeadList, ref _positionList);
- }
+ _csvHead = p.GetCSVHead(ref _specHeadList, ref _positionList);
CSVRecordAsync($"ProductRecord_{DateTime.Now.ToString("yyyyMMdd")}.csv", p.GetCSVData(_specHeadList, _positionList), _csvHead);
//_manager_P_Product.UpdateProductResult(p.ID, p.PID, p.SN, p.Result);
});
diff --git a/src/Bro.M141.Process/M141Process_Mysql.cs b/src/Bro.M141.Process/M141Process_Mysql.cs
index d6b7296..b9f00c8 100644
--- a/src/Bro.M141.Process/M141Process_Mysql.cs
+++ b/src/Bro.M141.Process/M141Process_Mysql.cs
@@ -1,4 +1,5 @@
锘縰sing Bro.Common.Helper;
+using Bro.Common.Interface;
using Bro.M135.Common;
using MySql.Data.MySqlClient;
using Newtonsoft.Json;
@@ -17,8 +18,8 @@
public class M141Process_Mysql
{
- string connStrAll = "server=127.0.0.1;port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
- string connStrLocal = "server=127.0.0.1;port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
+ string connStrAll = "server=localhost;port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
+ string connStrLocal = "server=localhost;port=3306;user id=root;password=123456;database=BroDB;charset=utf8";
@@ -43,7 +44,7 @@
}
catch (Exception e)
{
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴搷浣滃紓甯� {e.ToString()}");
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴搷浣滃紓甯� {sql} {e.ToString()}");
}
con.Close();
}
@@ -64,7 +65,7 @@
}
catch (Exception e)
{
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈠紓甯� {e.ToString()}");
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈠紓甯� {str} {e.ToString()}");
}
con.Close();
return dt;
@@ -88,7 +89,7 @@
}
catch (Exception e)
{
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈡暟鎹紓甯� {e.ToString()}");
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴撴煡璇㈡暟鎹紓甯� {str} {e.ToString()}");
}
con.Close();
@@ -103,7 +104,18 @@
{
try
{
- string mysqlstr = $"insert into forlocal (pid,plcnum,sn,data,time) values('{pro.PID}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro)}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
+ //淇濈暀鏁版嵁搴撴渶鏂扮殑1000鏉℃暟鎹�
+ //string destr = "delete from forlocal where id not in (select id from (select id from forlocal order BY id desc limit 1000) as subquery)";
+ //Operatoremysql(destr, connStrAll);
+
+ string str1 = "select id from forlocal order by id desc limit 1";
+ string index = selectmysql(str1, connStrLocal);
+
+ string str2 = $"delete from forlocal where id < ({index}-1000)";
+ Operatoremysql(str2, connStrLocal);
+
+
+ string mysqlstr = $"insert into forlocal (basketcode,pid,plcnum,sn,data,time) values('{pro.BasketCode}','{pro.PID}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro)}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
Operatoremysql(mysqlstr, connStrLocal);
}
@@ -128,32 +140,46 @@
public void NewForAll(ProductModel pro, string devicestr)
{
- try
+ Task.Run(() =>
{
- string mysqlstr = $"insert into forall (device,plcnum,sn,data,time) values('{devicestr}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro)}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
+ try
+ {
- Operatoremysql(mysqlstr, connStrAll);
- }
- catch (Exception e)
- {
- CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁寮傚父 {e.ToString()}");
- }
+ //淇濈暀鏁版嵁搴撴渶鏂扮殑1000鏉℃暟鎹�
+ //string destr = "delete from forall where id not in (select id from (select id from forall order BY id desc limit 1000) as subquery)";
+ //Operatoremysql(destr, connStrAll);
+
+ string str1 = "select id from forall order by id desc limit 1";
+ string index = selectmysql(str1, connStrAll);
+
+ string str2 = $"delete from forall where id < ({index}-1000)";
+ Operatoremysql(str2, connStrAll);
+
+
+ string mysqlstr = $"insert into forall (basketcode,device,plcnum,sn,data,time) values('{pro.BasketCode}','{devicestr}','{pro.SEQUENCE}','{pro.SN}','{JsonConvert.SerializeObject(pro)}','{DateTime.Now.ToString("yyyyMMddHHmmss")}')";
+
+ Operatoremysql(mysqlstr, connStrAll);
+ }
+ catch (Exception e)
+ {
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orall鎻掑叆鏁版嵁寮傚父 {e.ToString()}");
+ }
+ });
}
-
public ProductModel GetProduct(string plcnum)
{
try
{
- string mysqlstr = $"select data from forlocal where plcnum='{plcnum}'";
- string str= selectmysql(mysqlstr, connStrLocal);
+ string mysqlstr = $"select data from forlocal where plcnum='{plcnum}' order by id desc limit 1";
+ string str = selectmysql(mysqlstr, connStrLocal);
if (string.IsNullOrEmpty(str))
{
return null;
}
else
{
- ProductModel p = JsonConvert.DeserializeObject<ProductModel>(str);
+ ProductModel p = JsonConvert.DeserializeObject<ProductModel>(str, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
return p;
}
}
@@ -164,6 +190,54 @@
return null;
}
+ public string Getbasketcode(string plcnum)
+ {
+ try
+ {
+ string mysqlstr = $"select basketcode from forall where plcnum='{plcnum}' && device='S2' order by id desc limit 1";
+ string str = selectmysql(mysqlstr, connStrAll);
+ if (!string.IsNullOrEmpty(str))
+ {
+ return str;
+ }
+ }
+ catch (Exception e)
+ {
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orlocal鏇存柊鏁版嵁寮傚父 {e.ToString()}");
+ }
+ return "NoRead";
+ }
+
+
+ public List<ProductModel> GetProductList(string plcnum)
+ {
+ try
+ {
+ string mysqlstr = $"select data from forall where plcnum='{plcnum}'";
+ var dt = selectdt(mysqlstr, connStrAll);
+ if (dt == null)
+ {
+ return null;
+ }
+ else
+ {
+ List<ProductModel> plist = new List<ProductModel>();
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ ProductModel p = JsonConvert.DeserializeObject<ProductModel>(dt.Rows[i][0].ToString(), new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
+
+ //JsonConvert.DeserializeObject<IProcessConfig>(_configBackupStr, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All });
+ plist.Add(p);
+ }
+ return plist;
+ }
+ }
+ catch (Exception e)
+ {
+ CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏁版嵁搴揻orall鏁版嵁寮傚父 {e.ToString()}");
+ }
+ return null;
+ }
}
diff --git a/src/Bro.M141.Process/UI/UI.cs b/src/Bro.M141.Process/UI/UI.cs
index 43d859a..3f0436d 100644
--- a/src/Bro.M141.Process/UI/UI.cs
+++ b/src/Bro.M141.Process/UI/UI.cs
@@ -14,7 +14,7 @@
namespace Bro.M141.Process
{
- [MenuNode("ProductStatus", "浜у搧妫�娴嬬姸鎬佹樉绀虹晫闈�1", 1, EnumHelper.TopMenu.SystemInfo, MenuNodeType.Form)]
+ //[MenuNode("ProductStatus", "浜у搧妫�娴嬬姸鎬佹樉绀虹晫闈�1", 1, EnumHelper.TopMenu.SystemInfo, MenuNodeType.Form)]
public partial class ProUI : MenuFormBase
//public partial class ProUI : UserControl
diff --git a/src/Bro.M141.Process/UI/UIPrinter.cs b/src/Bro.M141.Process/UI/UIPrinter.cs
index e0aa2ab..950a1d0 100644
--- a/src/Bro.M141.Process/UI/UIPrinter.cs
+++ b/src/Bro.M141.Process/UI/UIPrinter.cs
@@ -18,9 +18,8 @@
namespace Bro.M141.Process
{
- [MenuNode("PrinterStatus", "鎵撳嵃鏈烘樉绀虹晫闈�", 1, EnumHelper.TopMenu.SystemInfo, MenuNodeType.Form)]
+ [MenuNode("PrinterStatus", "鎵撳嵃鏈烘樉绀虹晫闈�", 2, EnumHelper.TopMenu.SystemInfo, MenuNodeType.Form)]
public partial class UIPrinter : MenuFormBase
-
//public partial class UIPrinter : UserControl
{
M141Config Config141 => Process.IConfig as M141Config;
@@ -50,7 +49,7 @@
ttheigh = 160;
message = str;
- this.printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = "Honeywell PX240 (300 dpi)";
+ this.printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = "Honeywell PX240S (300 dpi)";
this.printDocument1.DefaultPageSettings.PaperSize = new PaperSize("Custum", ttwith, ttheigh);
this.printDocument1.PrintController = new System.Drawing.Printing.StandardPrintController();
diff --git a/src/Bro.M141_AOI1.Process/AOI1Process.cs b/src/Bro.M141_AOI1.Process/AOI1Process.cs
index 139b24d..78b73b9 100644
--- a/src/Bro.M141_AOI1.Process/AOI1Process.cs
+++ b/src/Bro.M141_AOI1.Process/AOI1Process.cs
@@ -28,19 +28,18 @@
#endregion
AOI1Config ConfigAOI1 => Config as AOI1Config;
- TcpClientWrapBase BarcodeScanner = null;
+
public override void Open()
{
base.Open();
- BarcodeScanner = DeviceCollection.FirstOrDefault(u => u is TcpClientWrapBase) as TcpClientWrapBase;
+
}
[ProcessMethod("", "PositionCheck_P1", "宸ヤ綅1妫�娴�", InvokeType.TestInvoke)]
public ResponseMessage PositionCheck_P1(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
{
-
var positionSet = M141Config.WorkPositionCollection.Where(u => u.IsEnabled).FirstOrDefault(u => u.TriggerValue == "1#");
if (positionSet == null)
{
@@ -97,65 +96,94 @@
ResponseMessage msg = new ResponseMessage();
if (config is IImageCheckOperationConfig opConfig)
{
- var results = opConfig.Products.Select(u =>
+ if (invokeDevice is TcpClientWrapBase BarcodeScanner)
{
- DetectResult result = new DetectResult();
- result.PID = u.PID;
- result.Specs = GetSpecListFromConfigSelection(opConfig.SpecCollection);
- return result;
- }).ToList();
+ var results = opConfig.Products.Select(u =>
+ {
+ DetectResult result = new DetectResult();
+ result.PID = u.PID;
+ result.Specs = GetSpecListFromConfigSelection(opConfig.SpecCollection);
+ return result;
+ }).ToList();
- msg.DataObj = results;
+ msg.DataObj = results;
- string barcode = BarcodeScannerCommunicate();
+ string barcode = BarcodeScannerCommunicate(BarcodeScanner);
- List<double> ret = new List<double>();
- if ("NOREAD".Equals(barcode.ToUpper()))
- {
- ret.Add(999);
+ List<double> ret = new List<double>();
+ if ("NOREAD".Equals(barcode.ToUpper()))
+ {
+ ret.Add(999);
+ }
+ else
+ {
+ ret.Add(1);
+ }
+
+ FillSpecResults(results[0].PID, results[0].Specs, ret, opConfig.Products[0].SEQUENCE);
+
+
+ opConfig.Products[0].SN = barcode;
+ opConfig.Products[0].Details.ForEach(u => u.SN = barcode);
+
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"浜у搧{opConfig.Products[0].PID}鏉$爜鑾峰彇涓簕barcode}");
}
- else
- {
- ret.Add(1);
- }
-
- FillSpecResults(results[0].PID, results[0].Specs, ret, opConfig.Products[0].SEQUENCE);
-
-
- opConfig.Products[0].SN = barcode;
- opConfig.Products[0].Details.ForEach(u => u.SN = barcode);
-
- LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"浜у搧{opConfig.Products[0].PID}鏉$爜鑾峰彇涓簕barcode}");
-
}
return msg;
}
+ [ProcessMethod("ImageCheck", "ReadBarcode2", "璇绘爮鍏风爜", InvokeType.TestInvoke)]
+ public ResponseMessage ReadBarcode2(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
+ {
+ ResponseMessage msg = new ResponseMessage();
- private string BarcodeScannerCommunicate()
+ if (invokeDevice is TcpClientWrapBase BarcodeScanner2)
+ {
+ string barcode = BarcodeScannerCommunicate(BarcodeScanner2);
+ if (string.IsNullOrEmpty(barcode) || "noread".Equals(barcode.ToLower()))
+ {
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"鏍忓叿鐮佽幏鍙栧け璐�");
+ Plc1.WriteSingleAddress(1524, 2, out _);
+ Plc1.WriteSingleAddress(1514, 1, out _);
+ }
+ else
+ {
+ Plc1.WriteSingleAddress(1524, 1, out _);
+ Plc1.WriteSingleAddress(1514, 1, out _);
+ ConfigAOI1.basketcode = barcode;
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鑾峰彇鍒版爮鍏风爜涓簕barcode}");
+ }
+ }
+
+ return msg;
+ }
+
+
+
+ private string BarcodeScannerCommunicate(TcpClientWrapBase client)
{
string barcode = "";
for (int i = 0; i < 3; i++)
{
- if (BarcodeScanner.WriteAndRead("start", out string error, out barcode, true))
+ if (client.WriteAndRead("start", out string error, out barcode, true))
{
barcode = barcode.Trim(' ', '\r', '\n');
if (CheckBarcodeValid(barcode))
{
- LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{BarcodeScanner.Name}鎵爜瀹屾垚锛屽弽棣坽barcode}");
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{client.Name}鎵爜瀹屾垚锛屽弽棣坽barcode}");
return barcode;
}
else
{
- LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{BarcodeScanner.Name}绗瑊i + 1}鎵爜瀹屾垚锛屽弽棣坽barcode}锛屼笉鏄悎娉曟潯鐮�");
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{client.Name}绗瑊i + 1}鎵爜瀹屾垚锛屽弽棣坽barcode}锛屼笉鏄悎娉曟潯鐮�");
Thread.Sleep(200);
}
}
else
{
- LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"{BarcodeScanner.Name}鎵爜澶辫触锛寋error}");
+ LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"{client.Name}鎵爜澶辫触锛寋error}");
break;
}
}
--
Gitblit v1.8.0