|
|
745cd43513
|
本次提交对系统进行了两项主要的重构和优化:
1. 重构数据处理链:
* 移除了 CheckValueChangedProcessor 和 LoggingProcessor,简化了数据处理流程。
* 调整了 App.xaml.cs 中的处理器注册顺序,使处理链更加清晰。
2. 优化OPC UA变量变更处理:
* 完全重构了 OpcUaServiceManager 中的 OnVariableChanged 事件处理方法。
* 新逻辑能够根据变量属性(IsActive, PollingInterval 等)的变化,进行精确的、针对单个节点的订阅和取消订阅操作,取代了之前重置整个设备订阅的低效方式。
* 实现了对已删除变量的订阅取消逻辑,确保了资源的正确释放。
这些变更显著提升了 OPC UA 订阅管理的效率和精确性。
|
2025-10-02 22:30:24 +08:00 |
|
|
|
acd397ea55
|
特性:为 OpcUaServiceManager 和 S7ServiceManager 添加 VariableChanged 事件订阅
- OpcUaServiceManager 更新:
- 添加了 OnVariableChanged 事件订阅
- 实现了 OnVariableChanged 事件处理方法,根据变量属性变化类型进行相应处理
- 对于 OPC UA Node ID、更新类型或轮询间隔变化,重新设置设备订阅
- 对于激活状态变化,更新设备上下文中的变量列表
- 对于变量删除,从设备上下文中移除对应变量
- S7ServiceManager 更新:
- 添加了 OnVariableChanged 事件订阅
- 实现了 OnVariableChanged 事件处理方法,根据变量属性变化类型进行相应处理
- 对于 S7 地址变化,更新设备上下文中的变量映射
- 对于激活状态变化,更新设备上下文中的变量列表
- 对于变量删除,从设备上下文中移除对应变量
- 改进系统响应性:
- 使 OPC UA 和 S7 服务能够实时响应变量属性变更
- 提高了系统在变量配置更改时的动态适应能力
- 确保服务能够根据变量状态变化及时更新其内部数据结构
|
2025-10-02 19:47:29 +08:00 |
|
|
|
3958275367
|
重构:修改 VariableValueChangedEventArgs 以包含 VariableDto 对象
- 修改 VariableValueChangedEventArgs 类:
- 移除了 VariableId、VariableName、NewValue 和 UpdateTime 属性
- 添加了 Variable(VariableDto 类型)和 OldValue 属性
- 更新了构造函数以接收 VariableDto 对象和旧值
- 更新事件触发代码:
- 修改了 UpdateViewProcessor.cs 中的事件触发代码,改为传递 VariableDto 对象和旧值
- 更新事件处理代码:
- 修改了 DataEventService.cs 中的事件处理逻辑,改为访问 e.Variable 属性
- 修改了 VariableHistoryViewModel.cs 中的事件处理逻辑,改为使用 e.Variable 属性
|
2025-10-02 18:47:45 +08:00 |
|
|
|
e5e2e8de5b
|
功能增强:添加 InputDialog 并改进变量管理功能
- 新增 InputDialog 组件:
- 添加了 InputDialog.xaml 和 InputDialog.xaml.cs 文件
- 创建了 InputDialogViewModel.cs,继承自 DialogViewModelBase<string?>
- 实现了可重用的输入对话框,支持自定义标题、消息、标签和占位符
- 完善变量管理服务:
- 在 MappingProfile.cs 中添加了 VariableDto 到 VariableDto 的映射配置
- 在 VariableManagementService.cs 中注入 IMapper 依赖项
- 修改了 UpdateVariablesAsync 方法,使用 AutoMapper 进行更安全的更新操作
- 扩展变量表功能:
- 在 VariableTableViewModel.cs 中添加了 ModifyConversionFormula 命令
- 实现了批量修改变量转换公式功能,支持用户通过对话框输入新公式
- 添加了相应的 UI 通知和错误处理
- 在 VariableTableView.xaml 中添加了"修改数值转换公式"菜单项
- 集成 InputDialog 到对话框服务:
- 在 DialogService.cs 中注册了 InputDialogViewModel 和 InputDialog 的映射关系
|
2025-10-02 18:34:23 +08:00 |
|
|
|
2a98b40bfe
|
Refactor:
- 重构了 VariableTableDataService 中的 AddVariableTable 方法,使其返回值从 bool 变为新表的 ID
(int)。这使得服务层更加健壮,并能向调用方提供新创建实体的确切ID。
Fix:
- 修复了 DeviceDetailViewModel 在创建变量表后UI不自动更新的Bug。现在视图模型会正确地将新表添加到UI集合中,确保了界面的即时刷新。
Feat:
- 为 DeviceDetailViewModel 添加了 IsBusy
状态。现在“添加”、“编辑”和“删除”等异步操作会更新此状态,防止了用户重复点击,并允许UI在处理期间显示加载指示,提升了用户体验。
|
2025-10-02 13:19:55 +08:00 |
|
|
|
1a666b79c8
|
1. 在 AppSettings 类中添加了 DefaultPollingInterval 属性,用于存储全局默认轮询间隔值
2. 更新了 SettingViewModel 以包含对轮询间隔设置的支持,允许用户在设置页面中修改该值
3. 修改了 VariableItemViewModel,使其在初始化时从 AppSettings 加载默认轮询间隔值
4. 更新了 SettingView.xaml,在设置页面的"通用设置"部分添加了轮询间隔配置项
|
2025-10-02 12:35:42 +08:00 |
|
|
|
6e9f7c4a44
|
feat: 为多个服务添加日志记录功能并改进批量导入变量处理
- 为OpcUaServiceManager添加日志记录功能,并实现OnBatchImportVariables事件处理器
- 为OpcUaService添加全面的日志记录,包括连接、断开、读写节点等操作
- 为DataEventService添加日志记录功能,跟踪数据加载和变量值变更事件
- 为S7ServiceManager添加OnBatchImportVariables事件处理器,处理批量导入变量事件
- 在VariableTableViewModel中改进变量添加逻辑,确保变量被正确添加到数据存储中
- 在VariableManagementService中完善变量表信息的填充逻辑
|
2025-10-02 11:26:50 +08:00 |
|
|
|
078d7b3903
|
1. 创建了 BatchImportVariablesEventArgs 事件参数类
2. 在 IEventService 接口中添加了 OnBatchImportVariables 事件和 RaiseBatchImportVariables 方法
3. 在 EventService 实现中添加了对新事件的支持
4. 在 IVariableManagementService 接口中添加了 BatchImportVariablesAsync 方法
5. 在 VariableManagementService 中实现了该方法,并在批量导入后触发事件
6. 更新了 VariableTableViewModel 以使用 IVariableManagementService 而不是 IVariableAppService
|
2025-10-01 20:13:30 +08:00 |
|
|
|
4e63ebcb94
|
修复添加变量切换变量表界面后不显示的问题
|
2025-10-01 19:41:30 +08:00 |
|
|
|
e43c0df1cf
|
完成的变更:
1. 向 VariableTableManagementService 添加了 IEventService 依赖
2. 将内存操作和事件触发逻辑合并到数据库操作方法中:
- CreateVariableTableAsync 现在会在数据库创建后自动添加到内存并触发事件
- UpdateVariableTableAsync 现在会在数据库更新后自动更新内存并触发事件
- DeleteVariableTableAsync 现在会在数据库删除后自动从内存移除并触发事件
3. 从类中删除了独立的内存操作方法
4. 从接口中移除了内存操作方法
5. 更新了所有调用这些服务的代码,使它们不再调用已删除的内存方法
6. 扩展了 IEventService 以支持 VariableTableChanged 事件
|
2025-10-01 19:16:47 +08:00 |
|
|
|
e84a202438
|
主要变更:
1. 创建了 DeviceStateType 枚举来区分状态类型(激活/连接)
2. 创建了 DeviceStateChangedEventArgs 统一事件类
3. 更新了 IEventService 接口,将两个事件合并为一个
4. 更新了 EventService 实现以支持新事件
5. 更新了所有相关服务(DeviceMonitoringService, OpcUaServiceManager, S7ServiceManager, DeviceDataService, DeviceItemViewModel)
关键优点:
- 减少了事件类型的数量,简化了事件系统
- 为设备状态变化提供了一致的处理方式
- 保持了向后兼容性,将旧类标记为 [Obsolete]
|
2025-10-01 18:41:05 +08:00 |
|
|
|
2dda2029bd
|
1. 重构 DeviceManagementService 类:
- 修改 CreateDeviceWithDetailsAsync 方法,在数据库创建成功后自动添加到内存
- 修改 UpdateDeviceAsync 方法,在数据库更新成功后自动更新内存
- 修改 DeleteDeviceByIdAsync 方法,在数据库删除成功后自动从内存移除
- 修改 ToggleDeviceActiveStateAsync 方法,在数据库切换激活状态后更新内存
2. 更新 DeviceDataService 类:
- 移除了在 AddDevice 方法中的独立 AddDeviceToMemory 调用
- 移除了在 DeleteDevice 方法中的独立 RemoveDeviceFromMemory 调用
- 为 UpdateDevice 方法添加了注释,说明内存自动更新
3. 更新 DeviceMonitoringService 类:
- 在 OnDeviceActiveChanged 方法中使用 Task 运行异步的 UpdateDeviceAsync 调用
4. 更新接口文档:
- 在 IDeviceManagementService 接口中更新了内存操作方法的注释,说明通常由其他操作自动调用
|
2025-10-01 18:09:30 +08:00 |
|
|
|
03e92811dd
|
修复删除设备时的错误
|
2025-10-01 18:02:33 +08:00 |
|
|
|
eb4bee8963
|
修改触发器相关的内容
|
2025-09-23 09:28:08 +08:00 |
|
|
|
2d457ae248
|
修改使用TriggerDataService模式
|
2025-09-23 06:51:29 +08:00 |
|
|
|
f61c505774
|
修改了添加触发器的对话框界面
|
2025-09-22 23:33:34 +08:00 |
|
|
|
042bc15288
|
继续修改触发器(未完成,修改一个触发器可以添加多个变量)
|
2025-09-22 22:58:51 +08:00 |
|
|
|
0f869cf410
|
将图形库替换为LiveChartsCore.SkiaSharpView.WPF
|
2025-09-22 06:24:08 +08:00 |
|
|
|
bcdb119d11
|
修改画面
|
2025-09-19 07:27:56 +08:00 |
|
|
|
ed4f9b1a0c
|
修复添加设备界面不显示默认变量表的问题
|
2025-09-18 11:24:56 +08:00 |
|
|
|
f7ee80bcdd
|
简单实现图表
|
2025-09-17 17:18:10 +08:00 |
|
|
|
e023bf3b55
|
初步完成图表功能
|
2025-09-17 14:13:48 +08:00 |
|
|
|
82c355a392
|
初步完成单个变量的历史记录查询
|
2025-09-17 13:32:29 +08:00 |
|
|
|
74fde6bd8b
|
完成S7变量启用和停用更新
|
2025-09-16 14:42:23 +08:00 |
|
|
|
3102938f92
|
将设备列表,变量表列表,变量列表从ObservableCollection更换为字典类型的ObservableDictionary
|
2025-09-16 13:05:37 +08:00 |
|
|
|
ffa24f861e
|
修改了目录架构
|
2025-09-16 12:29:09 +08:00 |
|
|
|
5ab18f95f0
|
修复S7服务轮询问题
|
2025-09-15 20:54:32 +08:00 |
|
|
|
4773e87886
|
修改批量导入变量返回实体,防止Io为0的问题
|
2025-09-15 13:12:14 +08:00 |
|
|
|
d622d73057
|
继续修改触发器
|
2025-09-14 21:18:01 +08:00 |
|
|
|
d923b6a116
|
修改了设备列表的界面
|
2025-09-14 20:46:31 +08:00 |
|
|
|
ebf67b98fa
|
修改了触发器的问题
|
2025-09-14 19:58:18 +08:00 |
|
|
|
a8d240b4f9
|
继续修改触发器
|
2025-09-14 19:13:40 +08:00 |
|
|
|
a079cf8de8
|
千问写完触发器功能,错误未修复
|
2025-09-14 16:16:10 +08:00 |
|
|
|
25cd43d436
|
继续修改报警系统
|
2025-09-14 09:03:07 +08:00 |
|
|
|
58c9340640
|
继续完成邮件功能
|
2025-09-13 19:39:18 +08:00 |
|
|
|
42aaf9c01b
|
初步完成邮件功能
|
2025-09-13 19:08:43 +08:00 |
|
|
|
15e2caed22
|
初步添加报警功能
|
2025-09-13 12:30:12 +08:00 |
|
|
|
5a39796f0e
|
添加 double 类型的变量值
|
2025-09-13 08:24:06 +08:00 |
|
|
|
c173ab08d3
|
完成设备的启用和停用并更新界面
|
2025-09-12 17:22:15 +08:00 |
|
|
|
d20b35185f
|
初步完成OpcUa设备的开启连接,关闭断开连接的功能
|
2025-09-12 15:45:14 +08:00 |
|
|
|
6796a06325
|
添加了事件服务,并完成了设备状态改变后写入数据库
|
2025-09-12 14:59:32 +08:00 |
|
|
|
cb739f4cb9
|
初步添加事件服务
|
2025-09-12 13:25:39 +08:00 |
|
|
|
071347bc91
|
初步完成报警设置
|
2025-09-12 12:26:57 +08:00 |
|
|
|
c8d7543c7e
|
初步完成变量历史记录修改
|
2025-09-12 08:57:41 +08:00 |
|
|
|
8afb989486
|
修改了历史记录页面
|
2025-09-12 08:35:35 +08:00 |
|
|
|
5680c38fa9
|
修改历史记录功能(未完成)
|
2025-09-11 18:09:35 +08:00 |
|
|
|
5ca4fe7124
|
初步完成历史记录(未完成)
|
2025-09-11 11:04:07 +08:00 |
|
|
|
3c47276406
|
初步完成历史记录存储功能
|
2025-09-11 09:42:44 +08:00 |
|
|
|
a43b978097
|
基本完成MQTT消息的发送
|
2025-09-10 18:15:31 +08:00 |
|
|
|
a9ca89b44a
|
初步完成MQTT消息的发送
|
2025-09-09 18:17:15 +08:00 |
|