diff --git a/Admin.Core.Api/Admin.Core.Model.xml b/Admin.Core.Api/Admin.Core.Model.xml index 315ec4a3..9408fbfb 100644 --- a/Admin.Core.Api/Admin.Core.Model.xml +++ b/Admin.Core.Api/Admin.Core.Model.xml @@ -2486,9 +2486,9 @@ 条码2记录时间 - + - plc放行标志,2为放行通过,1为pda提示需要放行记录 + plc放行标志,1为自动放行,2为手动放行 @@ -2756,6 +2756,11 @@ 异常类型(1=69码校验;2=重复扫描;3=未绑条码;4=未终检) + + + 所在位置 + + 计划执行表 diff --git a/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.AssemblyInfo.cs b/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.AssemblyInfo.cs index 22897c45..7a3f49c3 100644 --- a/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.AssemblyInfo.cs +++ b/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Admin.Core.FrameWork")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+88718f3b34f7734324ee7cf97223cb04de12229c")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] [assembly: System.Reflection.AssemblyProductAttribute("Admin.Core.FrameWork")] [assembly: System.Reflection.AssemblyTitleAttribute("Admin.Core.FrameWork")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.AssemblyInfoInputs.cache b/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.AssemblyInfoInputs.cache index e61911a3..4390da2f 100644 --- a/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.AssemblyInfoInputs.cache +++ b/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.AssemblyInfoInputs.cache @@ -1 +1 @@ -20767d7337a3656e5cd7e3434c747ce5e30a077ccc10b646dba8956b775fa268 +7d60a94dd38c10522cbfe4a021ccb6e9c5da0354 diff --git a/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.GeneratedMSBuildEditorConfig.editorconfig b/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.GeneratedMSBuildEditorConfig.editorconfig index d6daf09f..417dcd7b 100644 --- a/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.GeneratedMSBuildEditorConfig.editorconfig +++ b/Admin.Core.FrameWork/obj/Debug/netcoreapp3.1/Admin.Core.FrameWork.GeneratedMSBuildEditorConfig.editorconfig @@ -1,9 +1,3 @@ is_global = true build_property.RootNamespace = Admin.Core.FrameWork -<<<<<<< HEAD build_property.ProjectDir = E:\c#\AUCMA\最新代码整合\new\Admin.Core.FrameWork\ -======= -build_property.ProjectDir = D:\Project\gitea\AUCMA\SCADA\Admin.Core.FrameWork\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = ->>>>>>> 97953438a8516959b94be7b8b7960a70eb343705 diff --git a/Admin.Core.Model/Model_New/CodeBindingRecord.cs b/Admin.Core.Model/Model_New/CodeBindingRecord.cs index 71bbd1e2..27965863 100644 --- a/Admin.Core.Model/Model_New/CodeBindingRecord.cs +++ b/Admin.Core.Model/Model_New/CodeBindingRecord.cs @@ -51,10 +51,10 @@ namespace Admin.Core.Model [SugarColumn(ColumnName = "RECORD_TIME2")] public DateTime RecordTime2 { get; set; } /// - /// plc放行标志,2为放行通过,1为pda提示需要放行记录 + /// plc放行标志,1为自动放行,2为手动放行 /// [SugarColumn(ColumnName = "IS_PASS")] - public int isPlcPass { get; set; } + public int IsPass { get; set; } /// /// 内胆码 diff --git a/Admin.Core.Model/Model_New/ExceptionRecord.cs b/Admin.Core.Model/Model_New/ExceptionRecord.cs index 4e077b05..e4a7d6a6 100644 --- a/Admin.Core.Model/Model_New/ExceptionRecord.cs +++ b/Admin.Core.Model/Model_New/ExceptionRecord.cs @@ -48,7 +48,12 @@ namespace Admin.Core.Model /// [SugarColumn(ColumnName = "EXCEPTION_TYPE")] public int ExceptionType { get; set; } - + + /// + /// 所在位置 + /// + [SugarColumn(ColumnName = "POSITION")] + public string Position { get; set; } } } diff --git a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfo.cs b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfo.cs index 313145e0..d49abd81 100644 --- a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfo.cs +++ b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Admin.Core.RealTimeService")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+729cf301e9ab353dd20c9ec69def8c859af3c743")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] [assembly: System.Reflection.AssemblyProductAttribute("Admin.Core.RealTimeService")] [assembly: System.Reflection.AssemblyTitleAttribute("Admin.Core.RealTimeService")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfoInputs.cache b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfoInputs.cache index 2b3802e0..d77b8cba 100644 --- a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfoInputs.cache +++ b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfoInputs.cache @@ -1 +1 @@ -35d441d2c06b8acc070021b643d99e568157135ec499290bc740c910bd515ee6 +0868e6bde5b49a65a126b91d794e990427a11761 diff --git a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.GeneratedMSBuildEditorConfig.editorconfig b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.GeneratedMSBuildEditorConfig.editorconfig index 8f33dc40..19085d53 100644 --- a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.GeneratedMSBuildEditorConfig.editorconfig +++ b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.GeneratedMSBuildEditorConfig.editorconfig @@ -8,6 +8,4 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Admin.Core.RealTimeService -build_property.ProjectDir = D:\Project\gitea\AUCMA\SCADA\Admin.Core.RealTimeService\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.ProjectDir = E:\c#\AUCMA\最新代码整合\new\Admin.Core.RealTimeService\ diff --git a/Admin.Core.Service/Service_New/ReportQualityInspectionServices.cs b/Admin.Core.Service/Service_New/ReportQualityInspectionServices.cs index 45e60169..ac754445 100644 --- a/Admin.Core.Service/Service_New/ReportQualityInspectionServices.cs +++ b/Admin.Core.Service/Service_New/ReportQualityInspectionServices.cs @@ -34,6 +34,10 @@ namespace Admin.Core.Service { try { + if (string.IsNullOrEmpty(BoxCode)) + { + return null; + } ReportQualityInsPection record = _qualityInspectionRepository.Db.Ado.SqlQuery($"select * from REPORT_QUALITY_INSPECTION where BAR_CODE = '{BoxCode}' AND STATION_CODE = 2010 AND TREATMENT_MEASURE = 3").FirstOrDefault(); return record; } diff --git a/Admin.Core.sln b/Admin.Core.sln index bbd02f6e..ddfa7af9 100644 --- a/Admin.Core.sln +++ b/Admin.Core.sln @@ -224,6 +224,7 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution + {CB159E16-8DA0-4125-B42F-BB5381AEDD4D} = {01AE8F7E-F6CB-4B8F-9B04-F9205E2CA3DB} {14F9C421-C016-4D1F-A0D7-9C1AAB989FCB} = {36DDDB80-7DE0-4A50-991D-24456D673E75} {33802553-78BF-4D8C-8925-9F7E4E7B6E9B} = {36DDDB80-7DE0-4A50-991D-24456D673E75} {3A639D2E-F8E1-4E71-B75F-BCE7D02B0FA6} = {36DDDB80-7DE0-4A50-991D-24456D673E75} diff --git a/Aucma.Core.CodeBinding/Aucma.Core.CodeBinding.csproj b/Aucma.Core.CodeBinding/Aucma.Core.CodeBinding.csproj index c722d4c6..2b3d3121 100644 --- a/Aucma.Core.CodeBinding/Aucma.Core.CodeBinding.csproj +++ b/Aucma.Core.CodeBinding/Aucma.Core.CodeBinding.csproj @@ -1,7 +1,7 @@  - Exe + WinExe net6.0-windows enable true diff --git a/Aucma.Core.CodeBinding/Business/GunBusiness.cs b/Aucma.Core.CodeBinding/Business/GunBusiness.cs index 37c3966e..6ad6f4aa 100644 --- a/Aucma.Core.CodeBinding/Business/GunBusiness.cs +++ b/Aucma.Core.CodeBinding/Business/GunBusiness.cs @@ -31,7 +31,7 @@ namespace Aucma.Core.CodeBinding.Business /// code1扫码信息刷新 /// /// - public delegate void BindingReceiveCode(string MesCode, string SnCode); + public delegate void BindingReceiveCode(string MesCode, string SnCode, int flag = 1); public static event BindingReceiveCode? BindingReceiveCodeEvent; #region 单例实现 @@ -117,7 +117,7 @@ namespace Aucma.Core.CodeBinding.Business if(!string.IsNullOrEmpty(MESCode) && !string.IsNullOrEmpty(SNCode)) { // 委托 - BindingReceiveCodeEvent?.Invoke(MESCode, SNCode); + BindingReceiveCodeEvent?.Invoke(MESCode, SNCode,2); SNCode = string.Empty; MESCode = string.Empty; } diff --git a/Aucma.Core.CodeBinding/Common/SpeechStr.cs b/Aucma.Core.CodeBinding/Common/SpeechStr.cs index 5a1dac7a..32b4f782 100644 --- a/Aucma.Core.CodeBinding/Common/SpeechStr.cs +++ b/Aucma.Core.CodeBinding/Common/SpeechStr.cs @@ -18,7 +18,7 @@ namespace Aucma.Core.CodeBinding.Common } } - public void speech(string str) { + public async void SpeakAsync(string str) { SpeechSynthesizer speech = new SpeechSynthesizer(); speech.Rate = 3;//设置语速 diff --git a/Aucma.Core.CodeBinding/Models/ReaderInfo.cs b/Aucma.Core.CodeBinding/Models/ReaderInfo.cs index 0779f860..8e81141d 100644 --- a/Aucma.Core.CodeBinding/Models/ReaderInfo.cs +++ b/Aucma.Core.CodeBinding/Models/ReaderInfo.cs @@ -34,9 +34,9 @@ namespace Aucma.Core.CodeBinding.Models /// public string? BindingResult { get; set; } /// - /// plc下传结果 + /// 放行方式,1-自动,2-手动 /// - public string? IsPlcPass { get; set; } + public string? IsPass { get; set; } /// /// 记录时间 /// diff --git a/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs b/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs index 77a6bbac..7ae0a039 100644 --- a/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs +++ b/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs @@ -68,6 +68,16 @@ namespace Aucma.Core.CodeBinding.ViewModels // sn扫码器ip private static string SnScannerIp = allScanners.First(x => x.Name == "sn扫码器").Ip; + private SpeechStr speechStr = SpeechStr.Instance; + + private string ProductLineCode = Appsettings.app("StationInfo", "ProductLineCode"); + + + + // 质检记录 + private readonly IReportQualityInspectionServices? _reportQualityInspectionServices; + //异常记录,记录质检失败情况 + private readonly IExceptionRecordServices? exceptionRecordServices; public IndexPageViewModel() { @@ -76,9 +86,10 @@ namespace Aucma.Core.CodeBinding.ViewModels _codeBindingRecordServices = App.ServiceProvider.GetService(); _baseBomInfoServices = App.ServiceProvider.GetService(); _baseMaterialInfoServices = App.ServiceProvider.GetService(); - + _reportQualityInspectionServices = App.ServiceProvider.GetService(); _printBarCodeServices = App.ServiceProvider.GetService(); _iMaterialCompletionServices = App.ServiceProvider.GetService(); + exceptionRecordServices = App.ServiceProvider.GetService(); // Business.MvCodeHelper.ReceiveCodeEvent += ReceiveCode; // Business.MvCodeHelper.BindingCodeEvent += BindingCode; // Business.MvCodeHelper.NoReadEvent += ReceiveNoRead; @@ -86,20 +97,15 @@ namespace Aucma.Core.CodeBinding.ViewModels TouchSocketService.NoReadReceiveEvent += ReceiveNoRead; GunBusiness.BindingReceiveCodeEvent += BindingCode; GunBusiness.RefreshMaterialCodeStrEvent += ReceiveCode; - + MsgUIColor = "White"; LoadData(); - + //实时绑定条码和实时下发plc放行信号 realBindingAndSendPlc(); LoadCharts(); - //Task.Run(() => - //{ - // Thread.Sleep(4000); - - //}); - + } catch (Exception ex) @@ -109,7 +115,6 @@ namespace Aucma.Core.CodeBinding.ViewModels } - /// /// 实时绑定条码和实时下发plc放行信号 /// @@ -118,28 +123,28 @@ namespace Aucma.Core.CodeBinding.ViewModels string tempCode1; string tempCode2; // 实时绑定条码 - Task.Run(() => - { - while (true) - { - try - { - if (!string.IsNullOrEmpty(code1Str) && !string.IsNullOrEmpty(code2Str)) - { - BindingCode(code1Str, code2Str); - code1Str = string.Empty; - code2Str = string.Empty; - } - } - catch (Exception ex) - { - code1Str = string.Empty; - code2Str = string.Empty; - Console.WriteLine(ex.ToString()); - } - Thread.Sleep(500); - } - }); + //Task.Run(() => + //{ + // while (true) + // { + // try + // { + // if (!string.IsNullOrEmpty(code1Str) && !string.IsNullOrEmpty(code2Str)) + // { + // BindingCode(code1Str, code2Str); + // code1Str = string.Empty; + // code2Str = string.Empty; + // } + // } + // catch (Exception ex) + // { + // code1Str = string.Empty; + // code2Str = string.Empty; + // Console.WriteLine(ex.ToString()); + // } + // Thread.Sleep(500); + // } + //}); // 心跳线程 Task.Run(() => @@ -234,6 +239,7 @@ namespace Aucma.Core.CodeBinding.ViewModels ProductCode = record.ProductCode, BoxName = record.BoxName, BindingResult = record.BindingResult, + IsPass = record.IsPass==1?"自动":"手动", RecordTime = record.RecordTime2.ToString() }); @@ -461,17 +467,21 @@ namespace Aucma.Core.CodeBinding.ViewModels if (scannerIp == MesScannerIp) { // log.Info("MES条码NoRead:"); - Clear(); + SendPlcStop(); - RefreshAndWriteLog("MES条码未扫描到,NoRead报警,线体停止,请重新扫描!"); + Clear(); + RefreshAndWriteLog("MES条码未扫描到,NoRead报警,线体停止,请重新扫描!",true); + } else if (SnScannerIp == scannerIp) - { - - Clear(); + { + SendPlcStop(); - RefreshAndWriteLog("SN条码未扫描到,NoRead报警,线体停止,请重新扫描!"); + Clear(); + RefreshAndWriteLog("SN条码未扫描到,NoRead报警,线体停止,请重新扫描!", true); + } + speechStr.SpeakAsync("扫码失败,请补扫"); } /// @@ -504,11 +514,18 @@ namespace Aucma.Core.CodeBinding.ViewModels // 全局变量赋值,SN码扫描后使用 code1Str = codeStr; RefreshCode1(codeStr); + + if (!string.IsNullOrEmpty(code1Str) && !string.IsNullOrEmpty(code2Str)) + { + BindingCode(code1Str, code2Str); + code1Str = string.Empty; + code2Str = string.Empty; + } } else if (SnScannerIp == scannerIp) { - Clear(); + // Clear(); log.Info("扫描到成品条码:" + codeStr); // 1.刷新界面条码信息 @@ -516,6 +533,13 @@ namespace Aucma.Core.CodeBinding.ViewModels code2Str = codeStr; RefreshCode2(codeStr); + if (!string.IsNullOrEmpty(code1Str) && !string.IsNullOrEmpty(code2Str)) + { + BindingCode(code1Str, code2Str); + code1Str = string.Empty; + code2Str = string.Empty; + } + } #region @@ -560,36 +584,69 @@ namespace Aucma.Core.CodeBinding.ViewModels /// 提示信息刷新并且存日志 /// /// - private void RefreshAndWriteLog(string logStr) + private void RefreshAndWriteLog(string logStr,bool warnflag=false) { TimeSpan currentTime = DateTime.Now.TimeOfDay; // DateTime time = System.DateTime.Now; string timeString = currentTime.ToString(@"hh\:mm\:ss"); BindingInfo = timeString + ":" + logStr; + if(warnflag) + { + MsgUIColor = "Red"; + } + else + { + MsgUIColor = "White"; + } log.Info(BindingInfo); } + /// + /// 提示信息-颜色 + /// + public string msgUIColor; + public string MsgUIColor + { + get => msgUIColor; + set => SetProperty(ref msgUIColor, value); + } + /// /// 条码绑定 /// /// MES码 /// SN码 - public void BindingCode(string code1, string code2) + /// 1为自动扫描,2为手动扫描 + public void BindingCode(string code1, string code2,int flag =1) { try { if (code1.Substring(0, 1) != "B") { + speechStr.SpeakAsync("扫码失败,请补扫"); RefreshAndWriteLog("MES码:" + code1 + ",扫描错误,请重新扫描!"); SendPlcStop(); return; } if (code2.Length != 20) { + speechStr.SpeakAsync("扫码失败,请补扫"); RefreshAndWriteLog("SN码:" + code2 + ",扫描错误,请重新扫描!"); SendPlcStop(); return; } + #region 终检校验-未查到终检合格记录即为质检不合格 + + ReportQualityInsPection qualityList = _reportQualityInspectionServices.JudgeIsQualified(code1); + if (qualityList == null) + { + SendPlcStop(); + RefreshAndWriteLog($"终检失败!! 箱体码{code1}未查询到终检合格记录,请重新终检!",true); + speechStr.SpeakAsync("终检失败,请终检"); + AddExceptionRecord(code1, $"终检失败!! 箱体码{code1}未查询到终检合格记录,请重新终检!", 4); + return; + } + #endregion RefreshAndWriteLog("开始绑定MES条码:" + code1 + " SN条码:" + code2); // 1.数据库查询各个工序质检结果,不合格报警 @@ -621,7 +678,7 @@ namespace Aucma.Core.CodeBinding.ViewModels record.ProductCode = code2; //record.RecordTime1 = System.DateTime.Now; record.RecordTime2 = System.DateTime.Now; - record.isPlcPass = 1; + record.IsPass = flag; record.BindingResult = "成功"; bool result = false; if (Repeatflag == 0) @@ -659,7 +716,7 @@ namespace Aucma.Core.CodeBinding.ViewModels } else { - RefreshAndWriteLog("条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】绑定失败"); + RefreshAndWriteLog("条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】绑定失败", true); if (SendPlcStop()) { RefreshAndWriteLog("条码绑定失败,线体停止"); @@ -679,6 +736,31 @@ namespace Aucma.Core.CodeBinding.ViewModels } } + + /// + /// 往mes数据库添加异常记录 + /// + /// + /// + /// 1=69码校验;2=重复扫描;3=未绑条码;4=未终检 + public async void AddExceptionRecord(string BoxCode, string Msg, int Type) + { + try + { + ExceptionRecord record = new ExceptionRecord(); + record.ProductSnCode = BoxCode; + record.ProductScanTime = DateTime.Now; + record.ProductLineCode = ProductLineCode; + record.ExceptionMsg = Msg; + record.ExceptionType = Type; + record.Position = "条码绑定"; + await exceptionRecordServices.AddAsync(record); + } + catch (Exception ex) + { + log.Info("添加异常记录方法AddExceptionRecord异常:" + ex.Message.ToString()); + } + } #region plc交互 /// @@ -694,18 +776,22 @@ namespace Aucma.Core.CodeBinding.ViewModels var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("条码绑定Plc")); if (obj != null) { - log.Info("停止信号D7102写1"); + log.Info($"NoRead信号,下发停止信号成功,当前箱体码{code1Str},当前成品码{code2Str}"); // 往plc写入停止信号 obj.plc.WriteInt16("D7102", "1"); // 报警信号 obj.plc.WriteInt16("D7101", "1"); result = true; } + else + { + log.Info($"NoRead信号,下发停止信号失败,plc未连接,当前箱体码{code1Str},当前成品码{code2Str}"); + } } catch (Exception ex) { - log.Error("下发plc停止信号方法出现异常,ex:" + ex); + log.Info($"NoRead信号,下发停止信号异常,plc未连接,当前箱体码{code1Str},当前成品码{code2Str}"); } return result; } diff --git a/Aucma.Core.CodeBinding/ViewModels/MainWindowViewModel.cs b/Aucma.Core.CodeBinding/ViewModels/MainWindowViewModel.cs index 20334bc5..15271326 100644 --- a/Aucma.Core.CodeBinding/ViewModels/MainWindowViewModel.cs +++ b/Aucma.Core.CodeBinding/ViewModels/MainWindowViewModel.cs @@ -60,15 +60,32 @@ namespace Aucma.Core.CodeBinding.ViewModels timer.Tick += Timer_Tick; timer.Start(); Scanner1State(false); - Scanner2State(false); - + Scanner2State(false); + PlcState(false); // Job_AllState_Quartz.RefreshStateEvent += RefreshStatus; // MvCodeHelper.RefreshStateEvent += RefreshScanner; TouchSocketService.RefreshStateEvent += RefreshScanner; GunBusiness.InstanceSerialPort3(); + updatePlcState(); // InitHikRobot(); } + private void updatePlcState() + { + Task.Run(() => + { + Thread.Sleep(4000); + var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("条码绑定Plc")); + if (obj.plc.IsConnected) + { + PlcState(true); + } + else + { + PlcState(false); + } + }); + } #region 开启海康扫码器 public void InitHikRobot() diff --git a/Aucma.Core.CodeBinding/ViewModels/StatisticsPageViewModel.cs b/Aucma.Core.CodeBinding/ViewModels/StatisticsPageViewModel.cs index 03aecaea..60acd088 100644 --- a/Aucma.Core.CodeBinding/ViewModels/StatisticsPageViewModel.cs +++ b/Aucma.Core.CodeBinding/ViewModels/StatisticsPageViewModel.cs @@ -41,7 +41,7 @@ namespace Aucma.Core.CodeBinding.ViewModels { Application.Current.Dispatcher.Invoke(() => { - ListItems.Add(new ReaderInfo() { No = ListItems.Count + 1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName, BindingResult = record.BindingResult, IsPlcPass = record.isPlcPass == 2 ? "plc放行成功" : "", RecordTime = record.RecordTime2.ToString() }); + ListItems.Add(new ReaderInfo() { No = ListItems.Count + 1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName, BindingResult = record.BindingResult, IsPass = record.IsPass == 1 ? "自动" : "手动", RecordTime = record.RecordTime2.ToString() }); }); } @@ -114,7 +114,7 @@ namespace Aucma.Core.CodeBinding.ViewModels foreach (CodeBindingRecord record in list) { - ListItems.Add(new ReaderInfo() { No = ListItems.Count + 1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName, BindingResult = record.BindingResult, IsPlcPass = record.isPlcPass == 2 ? "plc放行成功" : "", RecordTime = record.RecordTime2.ToString() }); + ListItems.Add(new ReaderInfo() { No = ListItems.Count + 1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName, BindingResult = record.BindingResult, IsPass = record.IsPass == 1 ? "自动" : "手动", RecordTime = record.RecordTime2.ToString() }); } })); diff --git a/Aucma.Core.CodeBinding/Views/IndexPageView.xaml b/Aucma.Core.CodeBinding/Views/IndexPageView.xaml index 775d557f..43e1cea6 100644 --- a/Aucma.Core.CodeBinding/Views/IndexPageView.xaml +++ b/Aucma.Core.CodeBinding/Views/IndexPageView.xaml @@ -141,10 +141,12 @@ + +