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