From 62c1ec98696ee3737009484be9a9a3da7b586644 Mon Sep 17 00:00:00 2001 From: zhangyongpan Date: Mon, 28 Jul 2025 08:35:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ModbusDemo/Device/ModbusRTU.cs | 1 + ModbusDemo/VIew/CoilUC.xaml | 16 ++++- ModbusDemo/VIew/RegisterUC.xaml | 17 +++++ ModbusDemo/VIew/SettingsUC.xaml | 2 +- ModbusDemo/VIewModel/CoilUCViewModel.cs | 80 ++++++--------------- ModbusDemo/VIewModel/RegisterUCViewModel.cs | 34 ++++++++- 6 files changed, 85 insertions(+), 65 deletions(-) diff --git a/ModbusDemo/Device/ModbusRTU.cs b/ModbusDemo/Device/ModbusRTU.cs index 7b63209..1494b6b 100644 --- a/ModbusDemo/Device/ModbusRTU.cs +++ b/ModbusDemo/Device/ModbusRTU.cs @@ -328,6 +328,7 @@ namespace ModbusDemo.Device m.RequestData = responseStr; _modbusDbContext.Add(m); _modbusDbContext.SaveChanges(); + //判断发送回来的数据是否正确 CheckData.CheckResponse(response); diff --git a/ModbusDemo/VIew/CoilUC.xaml b/ModbusDemo/VIew/CoilUC.xaml index d07854e..7d84322 100644 --- a/ModbusDemo/VIew/CoilUC.xaml +++ b/ModbusDemo/VIew/CoilUC.xaml @@ -149,8 +149,20 @@ - - + + + + + + + + + + + + + + diff --git a/ModbusDemo/VIew/RegisterUC.xaml b/ModbusDemo/VIew/RegisterUC.xaml index adaf8cb..6c167c9 100644 --- a/ModbusDemo/VIew/RegisterUC.xaml +++ b/ModbusDemo/VIew/RegisterUC.xaml @@ -147,5 +147,22 @@ Style="{StaticResource MaterialDesignRaisedDarkButton}"> + + + + + + + + + + + + + + + + + diff --git a/ModbusDemo/VIew/SettingsUC.xaml b/ModbusDemo/VIew/SettingsUC.xaml index 3be6244..d771eb6 100644 --- a/ModbusDemo/VIew/SettingsUC.xaml +++ b/ModbusDemo/VIew/SettingsUC.xaml @@ -31,7 +31,7 @@ - + diff --git a/ModbusDemo/VIewModel/CoilUCViewModel.cs b/ModbusDemo/VIewModel/CoilUCViewModel.cs index eed4199..fba086f 100644 --- a/ModbusDemo/VIewModel/CoilUCViewModel.cs +++ b/ModbusDemo/VIewModel/CoilUCViewModel.cs @@ -17,6 +17,8 @@ namespace ModbusDemo.VIewModel /// public class CoilUCViewModel : BindableBase { + //定义数据库操作 + private ModbusDbContext _modbusDbContext; //获取读线圈的类 private IModbusRTU _modbusRTU; //定义读线圈的命令 @@ -127,7 +129,7 @@ namespace ModbusDemo.VIewModel set { _writeData = value; - RaisePropertyChanged(); + } } @@ -152,70 +154,15 @@ namespace ModbusDemo.VIewModel } - public CoilUCViewModel(SerialPort serialPort, ModbusRTU modbusRTU) + public CoilUCViewModel(SerialPort serialPort, ModbusRTU modbusRTU, ModbusDbContext modbusDbContext) { _serialPort = serialPort; ReadCoilCmm = new DelegateCommand(ReadCoil); _modbusRTU = modbusRTU; WriteCoilCmm = new DelegateCommand(WriteCoil); - - - ModbusLogList = new List(); - - ModbusLogList.Add(new ModbusLog - { - OperationType = "读取", - RequestData = "01 03 00 00 00 02", - ResponseData = "01 03 04 00 0A 00 0B", - - Time = DateTime.Now.AddMinutes(-5) - }); - - ModbusLogList.Add(new ModbusLog - { - OperationType = "写入", - RequestData = "01 06 00 01 00 03", - ResponseData = "01 06 00 01 00 03", - - Time = DateTime.Now.AddMinutes(-2) - }); - - ModbusLogList.Add(new ModbusLog - { - OperationType = "读取", - RequestData = "01 03 00 00 00 02", - ResponseData = "01 03 04 00 0A 00 0B", - - Time = DateTime.Now.AddMinutes(-5) - }); - - ModbusLogList.Add(new ModbusLog - { - OperationType = "写入", - RequestData = "01 06 00 01 00 03", - ResponseData = "01 06 00 01 00 03", - - Time = DateTime.Now.AddMinutes(-2) - }); - - ModbusLogList.Add(new ModbusLog - { - OperationType = "读取", - RequestData = "01 03 00 00 00 02", - ResponseData = "01 03 04 00 0A 00 0B", - - Time = DateTime.Now.AddMinutes(-5) - }); - - ModbusLogList.Add(new ModbusLog - { - OperationType = "写入", - RequestData = "01 06 00 01 00 03", - ResponseData = "01 06 00 01 00 03", - - Time = DateTime.Now.AddMinutes(-2) - }); - + _modbusDbContext = modbusDbContext; + //初始化查询操作 + ModbusLogList = GetOperateCoil(); } /// @@ -266,5 +213,18 @@ namespace ModbusDemo.VIewModel } } + + /// + /// 获取展示数据 + /// + /// + private List GetOperateCoil() + { + return _modbusDbContext.ModbusLog + .Where(log => log.OperationType == "读线圈" || log.OperationType == "写线圈") + .OrderByDescending(log => log.Time) // 按时间倒序,最新的在前 + .Take(20) // 只取前20条记录 + .ToList(); // 执行查询 + } } } diff --git a/ModbusDemo/VIewModel/RegisterUCViewModel.cs b/ModbusDemo/VIewModel/RegisterUCViewModel.cs index a267095..623a469 100644 --- a/ModbusDemo/VIewModel/RegisterUCViewModel.cs +++ b/ModbusDemo/VIewModel/RegisterUCViewModel.cs @@ -1,4 +1,5 @@ using ModbusDemo.Device; +using ModbusDemo.Model; using Prism.Commands; using Prism.Mvvm; using System; @@ -13,7 +14,8 @@ namespace ModbusDemo.VIewModel { class RegisterUCViewModel:BindableBase { - + //定义数据库操作类 + private ModbusDbContext _modbusDbContext; //获取读线圈的类 private IModbusRTU _modbusRTU; //定义读线圈的命令 @@ -131,16 +133,32 @@ namespace ModbusDemo.VIewModel #endregion + private List _modbusLogList; + + public List ModbusLogList + { + get { return _modbusLogList; } + set + { + _modbusLogList = value; + RaisePropertyChanged(); + } + } + public RegisterUCViewModel() { } - public RegisterUCViewModel(SerialPort serialPort, ModbusRTU modbusRTU) + public RegisterUCViewModel(SerialPort serialPort, ModbusRTU modbusRTU,ModbusDbContext modbusDbContext) { _serialPort = serialPort; ReadRegisterCmm = new DelegateCommand(ReadRegister); _modbusRTU = modbusRTU; WriteRegisterCmm = new DelegateCommand(WriteRegister); + _modbusDbContext = modbusDbContext; + + ModbusLogList = GetOperateRegister(); + } @@ -208,5 +226,17 @@ namespace ModbusDemo.VIewModel } } + /// + /// 获取展示数据 + /// + /// + private List GetOperateRegister() + { + return _modbusDbContext.ModbusLog + .Where(log => log.OperationType == "读寄存器" || log.OperationType == "写寄存器") + .OrderByDescending(log => log.Time) // 按时间倒序,最新的在前 + .Take(20) // 只取前20条记录 + .ToList(); // 执行查询 + } } }