From 6b656ead2df4f9b9b5aaff9e53f97b7785412d3e Mon Sep 17 00:00:00 2001 From: DangHome Date: Wed, 5 Jul 2023 20:45:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=88=90=E5=8D=B3=E6=99=82?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DellMonitorControl/ControlPanel.xaml.cs | 7 +++--- DellMonitorControl/MainWindow.xaml | 1 - DellMonitorControl/MainWindow.xaml.cs | 10 +++++---- Library/Method/CMMCommand.cs | 29 ++++++++++++++++--------- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/DellMonitorControl/ControlPanel.xaml.cs b/DellMonitorControl/ControlPanel.xaml.cs index 9561357..3bc86b7 100644 --- a/DellMonitorControl/ControlPanel.xaml.cs +++ b/DellMonitorControl/ControlPanel.xaml.cs @@ -17,16 +17,16 @@ public partial class ControlPanel : UserControl InitializeComponent(); } - public async Task Init() + public async Task Refresh() { await CMMCommand.ScanMonitor(); var monitors = await CMMCommand.ReadMonitorsData(); + sp.Children.Clear(); foreach (var m in monitors) { var status = await CMMCommand.GetMonPowerStatus(m.SerialNumber); var ctrl = CreatControl(m, status); - sp.Children.Add(ctrl); } } @@ -40,7 +40,7 @@ public partial class ControlPanel : UserControl var tb = new TextBlock { - Text = monitorModel.MonitorName, + Text = $"{monitorModel.MonitorName}({monitorModel.SerialNumber})", HorizontalAlignment = HorizontalAlignment.Left, Style = (Style)FindResource("LableStyle") }; @@ -78,6 +78,7 @@ public partial class ControlPanel : UserControl { await CMMCommand.Sleep(tag); } + await Task.Delay(1000); btn!.Content = await CMMCommand.GetMonPowerStatus(tag); } diff --git a/DellMonitorControl/MainWindow.xaml b/DellMonitorControl/MainWindow.xaml index 1a8bf2b..3b4f91c 100644 --- a/DellMonitorControl/MainWindow.xaml +++ b/DellMonitorControl/MainWindow.xaml @@ -6,7 +6,6 @@ xmlns:tb="clr-namespace:Hardcodet.Wpf.TaskbarNotification;assembly=Hardcodet.Wpf.TaskbarNotification.Net6" xmlns:local="clr-namespace:DellMonitorControl" mc:Ignorable="d" - Loaded="Window_Loaded" Title="MainWindow" Height="450" Width="800"> diff --git a/DellMonitorControl/MainWindow.xaml.cs b/DellMonitorControl/MainWindow.xaml.cs index 382f3ff..2399cde 100644 --- a/DellMonitorControl/MainWindow.xaml.cs +++ b/DellMonitorControl/MainWindow.xaml.cs @@ -1,4 +1,5 @@ -using System.Windows; +using System.Threading.Tasks; +using System.Windows; namespace DellMonitorControl; @@ -10,11 +11,12 @@ public partial class MainWindow : Window public MainWindow() { InitializeComponent(); + this.Hide(); + taskbar.TrayPopupOpen += async (s, e) => await Taskbar_TrayPopupOpen(s, e); } - private async void Window_Loaded(object sender, RoutedEventArgs e) + private async Task Taskbar_TrayPopupOpen(object sender, RoutedEventArgs e) { - this.Hide(); - await comtrolPanel.Init(); + await comtrolPanel.Refresh(); } } diff --git a/Library/Method/CMMCommand.cs b/Library/Method/CMMCommand.cs index 28c8e59..a6a2cb4 100644 --- a/Library/Method/CMMCommand.cs +++ b/Library/Method/CMMCommand.cs @@ -2,8 +2,6 @@ using CMM.Library.Helpers; using CMM.Library.ViewModel; using System.IO; -using System.Net.NetworkInformation; -using System.Threading; namespace CMM.Library.Method; @@ -32,15 +30,26 @@ public static class CMMCommand return ConsoleHelper.CmdCommandAsync($"{CMMexe} /SetValue {monitorSN} D6 4"); } - private static async Task GetMonitorValue(string monitorSN) + private static async Task GetMonitorValue(string monitorSN, int? reTry = 0) { - var cmdFileName = Path.Combine(CMMTmpFolder, $"{Guid.NewGuid()}.bat"); - var cmd = $"{CMMexe} /GetValue {monitorSN} D6\r\n" + - $"echo %errorlevel%"; - File.WriteAllText(cmdFileName, cmd); - var values = await ConsoleHelper.ExecuteCommand(cmdFileName); - File.Delete(cmdFileName); - return values.Split("\r\n", StringSplitOptions.RemoveEmptyEntries).LastOrDefault(); + var value = string.Empty; + while (reTry <= 5) + { + var cmdFileName = Path.Combine(CMMTmpFolder, $"{Guid.NewGuid()}.bat"); + var cmd = $"{CMMexe} /GetValue {monitorSN} D6\r\n" + + $"echo %errorlevel%"; + File.WriteAllText(cmdFileName, cmd); + var values = await ConsoleHelper.ExecuteCommand(cmdFileName); + File.Delete(cmdFileName); + + value = values.Split("\r\n", StringSplitOptions.RemoveEmptyEntries).LastOrDefault(); + + if (!string.IsNullOrEmpty(value) && value != "0") return value; + await Task.Delay(500); + await GetMonitorValue(monitorSN, reTry++); + }; + + return value; } public static async Task GetMonPowerStatus(string monitorSN)