From 2e889843b4c171f2d6ad8e0d53084040703d11f6 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 09 十一月 2026 13:18:21 +0800
Subject: [PATCH] docs: CAN 总线级应答器 + 硬件调试页多标签多会话 设计规格
---
Plugin.CurrentSensorControl/ControlPage.xaml.cs | 188 ++++++++++++++++++++++++++++------------------
1 files changed, 114 insertions(+), 74 deletions(-)
diff --git a/Plugin.CurrentSensorControl/ControlPage.xaml.cs b/Plugin.CurrentSensorControl/ControlPage.xaml.cs
index fb11a44..7116394 100644
--- a/Plugin.CurrentSensorControl/ControlPage.xaml.cs
+++ b/Plugin.CurrentSensorControl/ControlPage.xaml.cs
@@ -1,12 +1,13 @@
锘縰sing CommunityToolkit.Mvvm.ComponentModel;
-using ConnectionUtil;
using HMI.Base;
-using HMI.Core.Setting;
using HMI.Core.Util;
using HMI.UI.Util;
using HMI.Util;
+using HslCommunication.Profinet.Siemens;
using log4net;
using Microsoft.Win32;
+using PLCHelper;
+using PLCHelper.Entity;
using Plugin.CurrentSensorControl.Entity;
using System.Collections.ObjectModel;
using System.IO;
@@ -28,10 +29,33 @@
private System.Timers.Timer timer;
private System.Timers.Timer opcTimer;
- private SCADAApi api;
public static ILog Logger { get; private set; }
private volatile bool needRead = false;
+
+ private SiemensS7Net api;
+
+ private bool plcMute = false;
+ public bool PlcMute
+ {
+ get => plcMute;
+ set
+ {
+ try
+ {
+ string name = $"PLC_Mute";
+ if (S7Context.WriteData(api, name, value))
+ {
+ plcMute = value;
+ OnPropertyChanged(nameof(PlcMute));
+ }
+ }
+ catch (Exception ex)
+ {
+
+ }
+ }
+ }
public ControlPage()
{
@@ -45,8 +69,6 @@
opcTimer.AutoReset = false;
opcTimer.Interval = 1000;
- S7Context.Init(SystemSetting.Instance.PlcIp, SystemSetting.Instance.PlcPort);
-
DataContext = this;
InitializeComponent();
}
@@ -54,12 +76,26 @@
private void OpcTimer_Elapsed(object sender, ElapsedEventArgs e)
{
opcTimer.Enabled = false;
+
+ try
+ {
+ if (S7Context.GetData(api, "PLC_Mute", out object val))
+ {
+ plcMute = (bool)val;
+ OnPropertyChanged("PlcMute");
+ }
+ }
+ catch (Exception ex)
+ {
+
+ }
+
try
{
var time = DateTime.Now;
ovenCollection.Refresh();
+ S7Context.ResetFailCount();
log.Debug($"Time Cast: {(DateTime.Now - time).TotalMilliseconds}ms");
-
}
catch (Exception ex)
{
@@ -73,6 +109,7 @@
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
timer.Enabled = false;
+
try
{
foreach (var ctl in controls)
@@ -98,10 +135,19 @@
public override void InitFinish()
{
Logger = log;
+ try
+ {
+ LoadBurnInSetting();
+ }
+ catch (Exception ex)
+ {
+ log.Error("LoadBurnInSetting Error.", ex);
+ }
}
public override void Active()
{
+ if (!isLoaded) return;
StartReadCurrent();
}
@@ -113,6 +159,7 @@
public override void DoClose(object sender, EventArgs e)
{
StopReadCurrent();
+ S7Context.Release();
base.DoClose(sender, e);
}
@@ -150,65 +197,79 @@
private void ClearSensorControl()
{
- foreach (var ctl in diWrap.Children)
- {
- if (ctl is SingleSensor ss)
- {
- ss.Close();
- }
- }
- diWrap.Children.Clear();
- controls.Clear();
+ //foreach (var ctl in diWrap.Children)
+ //{
+ // if (ctl is SingleSensor ss)
+ // {
+ // ss.Close();
+ // }
+ //}
+ //diWrap.Children.Clear();
+ //controls.Clear();
}
private void RefreshSensorControl(bool start)
{
- StopReadCurrent();
- ClearSensorControl();
- foreach (var data in Datasource)
- {
- SingleSensor ss = new SingleSensor(data.Name, data.Ip, data.Port, data.Address, data.Channel)
- {
- Width = 240
- };
- diWrap.Children.Add(ss);
- controls.Add(ss);
- Task.Factory.StartNew(() =>
- {
- ss.Connect();
- });
- }
- if (start) StartReadCurrent();
+ //StopReadCurrent();
+ //ClearSensorControl();
+ //foreach (var data in Datasource)
+ //{
+ // SingleSensor ss = new SingleSensor(data.Name, data.Ip, data.Port, data.Address, data.Channel)
+ // {
+ // Width = 240
+ // };
+ // diWrap.Children.Add(ss);
+ // controls.Add(ss);
+ // Task.Factory.StartNew(() =>
+ // {
+ // ss.Connect();
+ // });
+ //}
+ //if (start) StartReadCurrent();
}
private void ConnectAllSensor()
{
- foreach (var ctl in diWrap.Children)
- {
- if (ctl is SingleSensor ss)
- {
- ss.Connect();
- }
- }
+ //foreach (var ctl in diWrap.Children)
+ //{
+ // if (ctl is SingleSensor ss)
+ // {
+ // ss.Connect();
+ // }
+ //}
}
private void DisconnectAllSensor()
{
- foreach (var ctl in diWrap.Children)
- {
- if (ctl is SingleSensor ss)
- {
- ss.Close();
- }
- }
+ //foreach (var ctl in diWrap.Children)
+ //{
+ // if (ctl is SingleSensor ss)
+ // {
+ // ss.Close();
+ // }
+ //}
}
+ private bool isLoaded = false;
private void SimpleMaskControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
- LoadSensorData();
- RefreshSensorControl(needRead);
- LoadBurnInSetting();
- Loaded -= SimpleMaskControl_Loaded;
+ ShowMask(() =>
+ {
+ api = S7Context.Get($"1");
+ Dispatcher.Invoke(() =>
+ {
+ LoadSensorData();
+ RefreshSensorControl(needRead);
+ //LoadBurnInSetting();
+ StartReadCurrent();
+ isLoaded = true;
+ Loaded -= SimpleMaskControl_Loaded;
+ });
+ }, (ex) =>
+ {
+ ToastHelper.Error("Loaded Failed.");
+ log.Error("Load Error.", ex);
+ }, null, "璇风◢鍚�");
}
private void OpenDataModal(SensorData data)
@@ -299,7 +360,7 @@
private void DoDelete(SensorData data)
{
- if (MsgBoxHelper2.WarnChoose("鍒犻櫎?") == MessageBoxResult.OK)
+ if (MsgBoxHelper2.WarnChoose("纭畾瑕佸垹闄ゅ悧?") == MessageBoxResult.OK)
{
var index = Datasource.IndexOf(data);
if (index >= 0)
@@ -354,34 +415,13 @@
private void LoadBurnInSetting()
{
- S7Context.dataCache.Clear();
- ObservableCollection<PLCTagData> datas;
- try
- {
- string path = Path.Combine(BaseFolder, "BurnInSettingData.data");
- if (File.Exists(path))
- {
- datas = XmlHelper.DeserializeFromXml<ObservableCollection<PLCTagData>>(path);
- }
- else
- {
- datas = new ObservableCollection<PLCTagData>();
- }
- }
- catch (Exception ex)
- {
- datas = new ObservableCollection<PLCTagData>();
- }
- BurnInSettingData = datas;
- LoadBurnInSettingCache();
+ S7Context.LoadTagData();
+ BurnInSettingData = S7Context.Datasource;
}
private void LoadBurnInSettingCache()
{
- foreach (var data in BurnInSettingData)
- {
- S7Context.dataCache[data.Name] = data;
- }
+ S7Context.LoadTagData();
}
private void OpenBurnSettingModal()
--
Gitblit v1.9.1