From 73d6d058983ff914e5092bba4b2c403eef2caec5 Mon Sep 17 00:00:00 2001 From: peizhiyong <zhiyong.pei@broconcentric.com> Date: 星期三, 06 八月 2025 18:40:38 +0800 Subject: [PATCH] 检测产品线轮廓度的结果添加双重补偿,深度图存图绑定产品二维码 --- src/Bro.M141.Process/M141Process.cs | 250 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 226 insertions(+), 24 deletions(-) diff --git a/src/Bro.M141.Process/M141Process.cs b/src/Bro.M141.Process/M141Process.cs index 21f4dc8..3fbe71a 100644 --- a/src/Bro.M141.Process/M141Process.cs +++ b/src/Bro.M141.Process/M141Process.cs @@ -98,9 +98,6 @@ - - - public override void Open() { base.Open(); @@ -592,7 +589,8 @@ { item1.IsAbandoned = false; item1.FinalResult = ResultState.NG; - LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"浜у搧{products[0].PID}_{products[0].SEQUENCE}宸ヤ綅{measureBind.WorkPosition} S3S5缁勫悎妫�娴嬫鍑虹己闄�:{item1.NetName}"); + //products[0].Result = M141Config.defectname; + LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"浜у搧{products[0].PID}_{products[0].SEQUENCE}宸ヤ綅{measureBind.WorkPosition} S3S5缁勫悎妫�娴嬫鍑虹己闄�:{item1.NetName}锛屼骇鍝佺粨鏋滀负{products[0].Result}"); break; } } @@ -698,10 +696,19 @@ } string ngImageFile = Path.Combine(folder, $"{id}.{post}"); - var bitmap = imgSet.HImage.ConvertHImageToBitmap(); - bitmap.Save(ngImageFile, M141Config.ImageFormatNG); - LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}NG鍥剧墖宸蹭繚瀛�"); - bitmap.Dispose(); + //var bitmap = imgSet.HImage.ConvertHImageToBitmap(); + //bitmap.Save(ngImageFile, M141Config.ImageFormatNG); + //LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}NG鍥剧墖宸蹭繚瀛�"); + //bitmap.Dispose(); + try + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}NG鍥剧墖娴嬭瘯杞瓨{ngImageFile}"); + imgSet.HImage.WriteImage(M141Config.ImageFormatOK.ToString().ToLower(), 0, ngImageFile); + } + catch (Exception) + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"{id}NG鍥剧墖淇濆瓨澶辫触"); + } } } } @@ -734,11 +741,20 @@ post = M141Config.ImageFormatOK.ToString().ToLower(); } - string ngImageFile = Path.Combine(folder, $"{id}.{post}"); - var bitmap = imgSet.HImage.ConvertHImageToBitmap(); - bitmap.Save(ngImageFile, M141Config.ImageFormatOK); - LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}OK鍥剧墖宸蹭繚瀛�"); - bitmap.Dispose(); + string ngImageFile = Path.Combine(folder, $"{id}.{post}"); + //var bitmap = imgSet.HImage.ConvertHImageToBitmap(); + //bitmap.Save(ngImageFile, M141Config.ImageFormatOK); + //LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}OK鍥剧墖宸蹭繚瀛�"); + //bitmap.Dispose(); + try + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"{id}OK鍥剧墖娴嬭瘯杞瓨{ngImageFile}"); + imgSet.HImage.WriteImage(M141Config.ImageFormatOK.ToString().ToLower(), 0, ngImageFile); + } + catch (Exception) + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Error, $"{id}OK鍥剧墖淇濆瓨澶辫触"); + } } } } @@ -1064,10 +1080,12 @@ if (M141Config.Isreadbasketcode) { p.BasketCode = M141Config.basketcode; + p.Zword = M141Config.zwoid; } else { - p.BasketCode = mysqlhelper.Getbasketcode(p.SEQUENCE, out string sntem); + p.BasketCode = mysqlhelper.Getbasketcode(p.SEQUENCE, out string sntem, out string zword); + p.Zword = zword; p.SN = sntem; p.PID = $"{sntem}_{i}"; if ("NoRead".Equals(p.BasketCode)) @@ -1231,17 +1249,7 @@ } } }); - //ReplyPlcData(positionSet, plcresult); - if (positionSet.IsLastPosition) - { - if (_ct != null) - { - UpdateCT(null, (float)((DateTime.Now - _ct.Value).TotalSeconds)); - } - _ct = DateTime.Now; - } - //ReplyPlcData(positionName, config.TriggerValue); cameraIds.ForEach(c => { @@ -1252,6 +1260,199 @@ LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"鐩告満{camera.Name}娓呯悊缂撳瓨"); } }); + + //ReplyPlcData(positionSet, plcresult); + if (positionSet.IsLastPosition) + { + if (_ct != null) + { + UpdateCT(null, (float)((DateTime.Now - _ct.Value).TotalSeconds)); + } + _ct = DateTime.Now; + + if (M141Config.ISupMES && (M141Config.MESchannel == -1 || M141Config.MESchannel == 1)) + { + if (M141Config.numpro >= 50) + { + M141Config.numpro = 0; + } + + string Msgreceice = null; + + if (pList[0].Result == "OK") + { + M141Config.numpro++; + Msgreceice = Task.Run(() => mqtt.MESForProduceAsync(pList[0], M141Config.mesnum2.ToString(), M141Config.numpro)).Result; + } + else + { + if (M141Config.ISupNG) + { + Msgreceice = Task.Run(() => mqtt.MESForProduceAsync(pList[0], M141Config.mesnum2.ToString(), M141Config.numpro)).Result; + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{pList[0].PID}鍚姩NG涓婁紶"); + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{pList[0].PID}鍏抽棴NG涓婁紶"); + } + } + M141Config.mesnum2++; + if (Msgreceice == null) + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{pList[0].PID}鏁版嵁涓婁紶MES寮傚父 杩斿洖鏁版嵁涓簄ull"); + } + else + { + try + { + var obj = JsonConvert.DeserializeObject<AutoLineMacBarcodeQueueBak>(Msgreceice); + + if (obj.zstatus == "200") + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{pList[0].PID}鏁版嵁涓婁紶MES鎴愬姛 {Msgreceice}"); + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{pList[0].PID}鏁版嵁涓婁紶MES澶辫触 {Msgreceice}"); + } + } + catch + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"浜у搧{pList[0].PID}鏁版嵁涓婁紶MES寮傚父 {Msgreceice}"); + } + } + + + + int numplca = Convert.ToInt32(pList[0].SEQUENCE.Split('_')[0]); + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"plc缁欏嚭鐨勪骇鍝佸簭鍙蜂负{numplca}"); + + lock (plcnumlock)//1-29999 + { + + if (PlcNumForAll == -1) + { + PlcNumForAll = numplca; + } + + int differ = numplca - PlcNumForAll; + + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"涓や釜浜у搧涓棿鐨勫樊鍊糳iffer涓簕differ}"); + + if (differ > 1) + { + for (int i = PlcNumForAll + 1; i < numplca; i++) + { + try + { + var plist = mysqlhelper.GetProductList(i + "_1"); + ProductModel newp = new ProductModel(); + newp.SEQUENCE = plist[0].SEQUENCE; + newp.PID = plist[0].PID; + newp.BasketCode = plist[0].BasketCode; + newp.Zword = plist[0].Zword; + newp.Result = "NG"; + newp.SN = plist[0].SN; + if (M141Config.ISupNG) + { + var tems = Task.Run(() => mqtt.MESForProduceAsync(newp, M141Config.mesnum2.ToString(), M141Config.numpro)).Result; + M141Config.mesnum2++; + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{newp.PID}鍚姩NG涓婁紶"); + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{newp.PID}鍏抽棴NG涓婁紶"); + } + + } + catch + { + + } + } + } + else if (differ == -29998 && differ == 1 && differ == 0) + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"鐢熶骇杩囩▼涓湭澶卞幓浜у搧"); + } + else if ( differ<0 && differ>-29998) + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"PlcNumForAll涓簕PlcNumForAll}锛宯umplca涓簕numplca}"); + //浜у搧浠庢柊璁℃暟鏃� + for (int i = PlcNumForAll + 1; i <= 29999; i++) + { + try + { + var plist = mysqlhelper.GetProductList(i + "_1"); + ProductModel newp = new ProductModel(); + newp.SEQUENCE = plist[0].SEQUENCE; + newp.PID = plist[0].PID; + newp.Zword = plist[0].Zword; + newp.BasketCode = plist[0].BasketCode; + newp.Result = "NG"; + newp.SN = plist[0].SN; + if (M141Config.ISupNG) + { + var tems = Task.Run(() => mqtt.MESForProduceAsync(newp, M141Config.mesnum2.ToString(), M141Config.numpro)).Result; + M141Config.mesnum2++; + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{newp.PID}鍚姩NG涓婁紶"); + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{newp.PID}鍏抽棴NG涓婁紶"); + } + //var tems = Task.Run(() => mqtt.MESForProduceAsync(newp, M141Config.mesnum2.ToString(), M141Config.numpro)).Result; + //M141Config.mesnum2++; + //LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"PlcNumForAll锛屽墠绔橬G鎺掓枡涓攑lc瑙﹀彂娓呴浂浜у搧{newp.PID}鏁版嵁涓婁紶,缁撴灉涓簕newp.Result}"); + + } + catch + { + + } + } + for (int i = 1; i < numplca; i++) + { + try + { + var plist = mysqlhelper.GetProductList(i + "_1"); + ProductModel newp = new ProductModel(); + newp.SEQUENCE = plist[0].SEQUENCE; + newp.PID = plist[0].PID; + newp.BasketCode = plist[0].BasketCode; + newp.Zword = plist[0].Zword; + newp.Result = "NG"; + newp.SN = plist[0].SN; + if (M141Config.ISupNG) + { + var tems = Task.Run(() => mqtt.MESForProduceAsync(newp, M141Config.mesnum2.ToString(), M141Config.numpro)).Result; + M141Config.mesnum2++; + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{newp.PID}鍚姩NG涓婁紶"); + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"浜у搧{newp.PID}鍏抽棴NG涓婁紶"); + } + + //var tems = Task.Run(() => mqtt.MESForProduceAsync(newp, M141Config.mesnum2.ToString(), M141Config.numpro)).Result; + //M141Config.mesnum2++; + //LogAsync(DateTime.Now, EnumHelper.LogLevel.Assist, $"numplca锛屽墠绔橬G鎺掓枡涓攑lc瑙﹀彂娓呴浂浜у搧{newp.PID}鏁版嵁涓婁紶,缁撴灉涓簕newp.Result}"); + } + catch + { + } + } + } + PlcNumForAll = numplca; + } + + } + + } + + //ReplyPlcData(positionName, config.TriggerValue); + + return pList; @@ -1287,6 +1488,7 @@ newp.SEQUENCE = p.SEQUENCE; newp.PID = p.PID; newp.BasketCode = p.BasketCode; + newp.Zword = p.Zword; newp.Result = p.Result; newp.SN = p.SN; -- Gitblit v1.8.0