This commit is contained in:
2025-11-20 15:13:29 +08:00
parent b48e0b79dd
commit 979afae645
28 changed files with 1299 additions and 345 deletions

View File

@@ -6,6 +6,8 @@ using Prism.Mvvm;
using System.Collections.Concurrent;
using System.Windows;
using ComConfigHelper = FATrace.Com.ConfigHelper;
using Prism.Events;
using FATrace.WPLApp.Events;
namespace FATrace.WPLApp.Services
{
@@ -15,10 +17,12 @@ namespace FATrace.WPLApp.Services
/// </summary>
public class DataServices : BindableBase, IDisposable
{
public DataServices(ILogService logService, IFreeSql freeSql)
public DataServices(ILogService logService, IFreeSql freeSql, IEventAggregator eventAggregator, SysRunService sysRunService)
{
LogService = logService;
FreeSql = freeSql;
EventAggregator = eventAggregator;
SysRunService = sysRunService;
LineSglModel = new LineSglModel();
LineSglModel.WeightScanCodeHandle += LineSglModel_WeightScanCodeHandle;
@@ -116,7 +120,7 @@ namespace FATrace.WPLApp.Services
var Result = FreeSql.Update<RawProUse>()
.Set(p => p.OutTime, DateTime.Now)
.Where(p => p.BoxCode == BoxScanCode+",A")//外箱二维码就是外箱扫描码
.Where(p => p.BoxCode == BoxScanCode + ",A")//外箱二维码就是外箱扫描码
.ExecuteAffrows();
if (Result > 0)
{
@@ -151,7 +155,7 @@ namespace FATrace.WPLApp.Services
KeyencePlcMcNet.Write("D1250", new Int16[30]);
});
try { EventAggregator?.GetEvent<DashboardRefreshEvent>()?.Publish(true); } catch { }
}
/// <summary>
@@ -227,8 +231,19 @@ namespace FATrace.WPLApp.Services
public ILogService LogService { get; }
public IFreeSql FreeSql { get; }
public IEventAggregator EventAggregator { get; }
public SysRunService SysRunService { get; }
//通信组件
private bool _plcConnected;
public bool PlcConnected
{
get { return _plcConnected; }
private set { _plcConnected = value; RaisePropertyChanged(); }
}
/// <summary>
/// 基恩士通信组件
/// </summary>
private KeyenceMcNet KeyencePlcMcNet { get; set; } = null;
private string _WeightScanCode;
@@ -304,6 +319,7 @@ namespace FATrace.WPLApp.Services
// 读取 PLC 配置(大小写敏感,采用公共 ConfigHelper 并提供默认值)
string PLCIP = ComConfigHelper.GetStringOrDefault("PLCIP", "192.0.1.10");
int Port = ComConfigHelper.GetIntOrDefault("PLCPort", 5000);
try { SysRunService.PlcIp = PLCIP; SysRunService.PlcPort = Port; } catch { }
//PLC通信的连接
KeyencePlcMcNet = new KeyenceMcNet();
@@ -317,16 +333,22 @@ namespace FATrace.WPLApp.Services
if (connect.IsSuccess)//初始连接状态的显示判断
{
Console.WriteLine($"PLC-连接 OK");
PlcConnected = true;
try { SysRunService.PlcLinkState = true; SysRunService.SysRunState.ComState = 1; SysRunService.SysRunState.ComMsg = "正常"; } catch { }
}
else
{
MessageBox.Show(connect.Message + Environment.NewLine + "ErrorCode: " + connect.ErrorCode);
PlcConnected = false;
try { SysRunService.PlcLinkState = false; SysRunService.SysRunState.ComState = 2; SysRunService.SysRunState.ComMsg = "连接失败"; } catch { }
}
}
catch (Exception ex)
{
LogService.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString()));
//insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null);
PlcConnected = false;
try { SysRunService.PlcLinkState = false; SysRunService.SysRunState.ComState = 2; SysRunService.SysRunState.ComMsg = "异常"; } catch { }
}
}
@@ -446,6 +468,14 @@ namespace FATrace.WPLApp.Services
if (OperateResultBoxScanSgl.IsSuccess)
{
LineSglModel.BoxScanCodeEnable = OperateResultBoxScanSgl.Content;
PlcConnected = true;
try { SysRunService.PlcLinkState = true; SysRunService.SysRunState.ComState = 1; SysRunService.SysRunState.ComMsg = "正常"; } catch { }
}
else
{
PlcConnected = false;
try { SysRunService.PlcLinkState = false; SysRunService.SysRunState.ComState = 2; SysRunService.SysRunState.ComMsg = "连接失败"; } catch { }
}
}
@@ -488,11 +518,16 @@ namespace FATrace.WPLApp.Services
if (!ret.IsSuccess)
{
LogService.Warn($"PLC重连失败: {ret.Message} (Code: {ret.ErrorCode})");
PlcConnected = false;
try { SysRunService.PlcLinkState = false; SysRunService.SysRunState.ComState = 2; SysRunService.SysRunState.ComMsg = "异常"; } catch { }
}
else { PlcConnected = true; try { SysRunService.PlcLinkState = true; SysRunService.SysRunState.ComState = 1; SysRunService.SysRunState.ComMsg = "正常"; } catch { } }
}
catch (Exception ex)
{
LogService.Error($"PLC重连异常: {ex.Message}");
PlcConnected = false;
try { SysRunService.PlcLinkState = false; SysRunService.SysRunState.ComState = 2; SysRunService.SysRunState.ComMsg = "异常"; } catch { }
}
}