From 6dee6a679013a71818384174e446bdf1f51de786 Mon Sep 17 00:00:00 2001 From: "GukSang.Jin" Date: Fri, 6 Feb 2026 18:14:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=202026/2/6=20=E6=8F=90=E4=BA=A4=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CSI-H238M/CSI-H238M/Models/Model.cs | 2 +- CSI-H238M/CSI-H238M/Services/ModbusService.cs | 222 +++++++++++ .../CSI-H238M/Services/PdfReportService.cs | 6 - CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs | 232 ++++++++++- CSI-H238M/CSI-H238M/Views/ConfigWindow.xaml | 16 +- CSI-H238M/CSI-H238M/Views/MainWindow.xaml | 2 +- CSI-H238M/CSI-H238M/Views/SettingsPage.xaml | 361 ++++++++++++++++-- 7 files changed, 784 insertions(+), 57 deletions(-) diff --git a/CSI-H238M/CSI-H238M/Models/Model.cs b/CSI-H238M/CSI-H238M/Models/Model.cs index d3fe798..93dc880 100644 --- a/CSI-H238M/CSI-H238M/Models/Model.cs +++ b/CSI-H238M/CSI-H238M/Models/Model.cs @@ -32,7 +32,7 @@ namespace COFTester.Models /// public class TestParameters : INotifyPropertyChanged { - private double _sledMass = 0.0; // 不设置默认值,从寄存器读取 + private double _sledMass = 200.0; // 默认值 200g private double _testSpeed = 0.0; // 不设置默认值,从寄存器读取 private double _testDuration = 0.0; // 不设置默认值,从寄存器读取 private double _testStroke = 0.0; // 不设置默认值,从寄存器读取 diff --git a/CSI-H238M/CSI-H238M/Services/ModbusService.cs b/CSI-H238M/CSI-H238M/Services/ModbusService.cs index dc5963a..3511060 100644 --- a/CSI-H238M/CSI-H238M/Services/ModbusService.cs +++ b/CSI-H238M/CSI-H238M/Services/ModbusService.cs @@ -727,6 +727,18 @@ namespace COFTester.Services await WriteTestParametersAsync(parameters); } + /// + /// 公开方法:写入水平测试参数到 PLC 寄存器(D370, D380) + /// 供标准选择功能调用 + /// + public abstract Task WriteHorizontalTestParametersAsync(double speed, double displacement); + + /// + /// 公开方法:写入升降测试参数到 PLC 寄存器(D330, D340) + /// 供自定义参数更新功能调用 + /// + public abstract Task WriteVerticalTestParametersAsync(double speed, double displacement); + /// /// 將兩個寄存器轉換為 32位浮點型 (IEEE 754) /// @@ -1305,6 +1317,76 @@ namespace COFTester.Services } } + /// + /// 写入水平测试参数到 PLC 寄存器(D370 水平测试速度, D380 水平测试位移) + /// 供标准选择功能调用 + /// + public override async Task WriteHorizontalTestParametersAsync(double speed, double displacement) + { + if (_modbusMaster == null || !_isConnected) + { + System.Diagnostics.Debug.WriteLine("[ModbusTCP] 無法寫入參數:設備未連接"); + return; + } + + try + { + // D370 水平測試速度 + var speedRegs = ConvertFloatToRegisters((float)speed); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.HorizontalTestSpeedRegister, speedRegs); + + // D380 水平測試位移 + var dispRegs = ConvertFloatToRegisters((float)displacement); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.HorizontalTestDisplacementRegister, dispRegs); + + System.Diagnostics.Debug.WriteLine($"[ModbusTCP] 水平測試參數寫入完成:"); + System.Diagnostics.Debug.WriteLine($" 水平測試速度: {speed} mm/min → D{_config.HorizontalTestSpeedRegister}"); + System.Diagnostics.Debug.WriteLine($" 水平測試位移: {displacement} mm → D{_config.HorizontalTestDisplacementRegister}"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"[ModbusTCP] 水平測試參數寫入失敗: {ex.Message}"); + throw; + } + } + + /// + /// 写入升降测试参数到 PLC 寄存器(D330 升降测试速度, D340 升降测试位移) + /// 供自定义参数更新功能调用 + /// + public override async Task WriteVerticalTestParametersAsync(double speed, double displacement) + { + if (_modbusMaster == null || !_isConnected) + { + System.Diagnostics.Debug.WriteLine("[ModbusTCP] 無法寫入參數:設備未連接"); + return; + } + + try + { + // D330 升降測試速度 + var speedRegs = ConvertFloatToRegisters((float)speed); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.VerticalTestSpeedRegister, speedRegs); + + // D340 升降測試位移 + var dispRegs = ConvertFloatToRegisters((float)displacement); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.VerticalTestDisplacementRegister, dispRegs); + + System.Diagnostics.Debug.WriteLine($"[ModbusTCP] 升降測試參數寫入完成:"); + System.Diagnostics.Debug.WriteLine($" 升降測試速度: {speed} mm/min → D{_config.VerticalTestSpeedRegister}"); + System.Diagnostics.Debug.WriteLine($" 升降測試位移: {displacement} mm → D{_config.VerticalTestDisplacementRegister}"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"[ModbusTCP] 升降測試參數寫入失敗: {ex.Message}"); + throw; + } + } + /// /// 讀取位置數據(升降位置和水平位置) /// D12 升降位置(只讀), D16 水平位置(只讀) @@ -1868,6 +1950,76 @@ namespace COFTester.Services } } + /// + /// 写入水平测试参数到 PLC 寄存器(D370 水平测试速度, D380 水平测试位移) + /// 供标准选择功能调用 + /// + public override async Task WriteHorizontalTestParametersAsync(double speed, double displacement) + { + if (_modbusMaster == null || !_isConnected) + { + System.Diagnostics.Debug.WriteLine("[ModbusRTU] 無法寫入參數:設備未連接"); + return; + } + + try + { + // D370 水平測試速度 + var speedRegs = ConvertFloatToRegisters((float)speed); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.HorizontalTestSpeedRegister, speedRegs); + + // D380 水平測試位移 + var dispRegs = ConvertFloatToRegisters((float)displacement); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.HorizontalTestDisplacementRegister, dispRegs); + + System.Diagnostics.Debug.WriteLine($"[ModbusRTU] 水平測試參數寫入完成:"); + System.Diagnostics.Debug.WriteLine($" 水平測試速度: {speed} mm/min → D{_config.HorizontalTestSpeedRegister}"); + System.Diagnostics.Debug.WriteLine($" 水平測試位移: {displacement} mm → D{_config.HorizontalTestDisplacementRegister}"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"[ModbusRTU] 水平測試參數寫入失敗: {ex.Message}"); + throw; + } + } + + /// + /// 写入升降测试参数到 PLC 寄存器(D330 升降测试速度, D340 升降测试位移) + /// 供自定义参数更新功能调用 + /// + public override async Task WriteVerticalTestParametersAsync(double speed, double displacement) + { + if (_modbusMaster == null || !_isConnected) + { + System.Diagnostics.Debug.WriteLine("[ModbusRTU] 無法寫入參數:設備未連接"); + return; + } + + try + { + // D330 升降測試速度 + var speedRegs = ConvertFloatToRegisters((float)speed); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.VerticalTestSpeedRegister, speedRegs); + + // D340 升降測試位移 + var dispRegs = ConvertFloatToRegisters((float)displacement); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.VerticalTestDisplacementRegister, dispRegs); + + System.Diagnostics.Debug.WriteLine($"[ModbusRTU] 升降測試參數寫入完成:"); + System.Diagnostics.Debug.WriteLine($" 升降測試速度: {speed} mm/min → D{_config.VerticalTestSpeedRegister}"); + System.Diagnostics.Debug.WriteLine($" 升降測試位移: {displacement} mm → D{_config.VerticalTestDisplacementRegister}"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"[ModbusRTU] 水平測試參數寫入失敗: {ex.Message}"); + throw; + } + } + /// /// 讀取位置數據 /// @@ -2380,6 +2532,76 @@ namespace COFTester.Services } } + /// + /// 写入水平测试参数到 PLC 寄存器(D370 水平测试速度, D380 水平测试位移) + /// 供标准选择功能调用 + /// + public override async Task WriteHorizontalTestParametersAsync(double speed, double displacement) + { + if (_modbusMaster == null || !_isConnected) + { + System.Diagnostics.Debug.WriteLine("[ModbusASCII] 無法寫入參數:設備未連接"); + return; + } + + try + { + // D370 水平測試速度 + var speedRegs = ConvertFloatToRegisters((float)speed); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.HorizontalTestSpeedRegister, speedRegs); + + // D380 水平測試位移 + var dispRegs = ConvertFloatToRegisters((float)displacement); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.HorizontalTestDisplacementRegister, dispRegs); + + System.Diagnostics.Debug.WriteLine($"[ModbusASCII] 水平測試參數寫入完成:"); + System.Diagnostics.Debug.WriteLine($" 水平測試速度: {speed} mm/min → D{_config.HorizontalTestSpeedRegister}"); + System.Diagnostics.Debug.WriteLine($" 水平測試位移: {displacement} mm → D{_config.HorizontalTestDisplacementRegister}"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"[ModbusASCII] 水平測試參數寫入失敗: {ex.Message}"); + throw; + } + } + + /// + /// 写入升降测试参数到 PLC 寄存器(D330 升降测试速度, D340 升降测试位移) + /// 供自定义参数更新功能调用 + /// + public override async Task WriteVerticalTestParametersAsync(double speed, double displacement) + { + if (_modbusMaster == null || !_isConnected) + { + System.Diagnostics.Debug.WriteLine("[ModbusASCII] 無法寫入參數:設備未連接"); + return; + } + + try + { + // D330 升降測試速度 + var speedRegs = ConvertFloatToRegisters((float)speed); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.VerticalTestSpeedRegister, speedRegs); + + // D340 升降測試位移 + var dispRegs = ConvertFloatToRegisters((float)displacement); + await _modbusMaster.WriteMultipleRegistersAsync( + _config.SlaveId, _config.VerticalTestDisplacementRegister, dispRegs); + + System.Diagnostics.Debug.WriteLine($"[ModbusASCII] 升降測試參數寫入完成:"); + System.Diagnostics.Debug.WriteLine($" 升降測試速度: {speed} mm/min → D{_config.VerticalTestSpeedRegister}"); + System.Diagnostics.Debug.WriteLine($" 升降測試位移: {displacement} mm → D{_config.VerticalTestDisplacementRegister}"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"[ModbusASCII] 升降測試參數寫入失敗: {ex.Message}"); + throw; + } + } + /// /// 讀取位置數據 /// diff --git a/CSI-H238M/CSI-H238M/Services/PdfReportService.cs b/CSI-H238M/CSI-H238M/Services/PdfReportService.cs index 16bcdfc..9904c21 100644 --- a/CSI-H238M/CSI-H238M/Services/PdfReportService.cs +++ b/CSI-H238M/CSI-H238M/Services/PdfReportService.cs @@ -301,9 +301,6 @@ namespace COFTester.Services $"滑块质量: {parameters.SledMass:F1} g", $"测试速度: {parameters.TestSpeed:F1} mm/min", $"测试行程: {parameters.TestStroke:F1} mm", - $"测试时长: {parameters.TestDuration:F1} s", - $"静摩擦计算区间: {parameters.StaticCalcStart:F1} - {parameters.StaticCalcEnd:F1} mm", - $"动摩擦计算区间: {parameters.KineticCalcStart:F1} - {parameters.KineticCalcEnd:F1} mm", $"操作员: {parameters.Operator}" } : new[] { @@ -311,9 +308,6 @@ namespace COFTester.Services $"Sled Mass: {parameters.SledMass:F1} g", $"Test Speed: {parameters.TestSpeed:F1} mm/min", $"Test Stroke: {parameters.TestStroke:F1} mm", - $"Test Duration: {parameters.TestDuration:F1} s", - $"Static COF Range: {parameters.StaticCalcStart:F1} - {parameters.StaticCalcEnd:F1} mm", - $"Kinetic COF Range: {parameters.KineticCalcStart:F1} - {parameters.KineticCalcEnd:F1} mm", $"Operator: {parameters.Operator}" }; diff --git a/CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs b/CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs index c9bf85d..1235868 100644 --- a/CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs +++ b/CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs @@ -45,6 +45,7 @@ namespace COFTester.ViewModels private string _testButtonText; // 测试按钮文本 private bool _m31Status = false; // M31状态:true=测试中,false=停止 private bool _canStartTest = true; // 是否可以开始测试 + private string _selectedStandard = ""; // 选中的标准:GB10006/ISO8295/ASTMD1894 public MainViewModel(IDataAcquisitionService daqService, DataProcessingService processingService, AppConfig config) { @@ -79,6 +80,12 @@ namespace COFTester.ViewModels ZeroCalibrationCommand = new RelayCommand(ZeroCalibration, () => !_isTesting && IsConnected); ForceCalibrationCommand = new RelayCommand(ForceCalibration, () => !_isTesting && IsConnected); ReturnToOriginCommand = new RelayCommand(ReturnToOrigin, () => !_isTesting && IsConnected); + + // 标准选择命令 + SelectStandardCommand = new RelayCommand(SelectStandard, _ => IsConnected); + + // 自定义参数更新命令 + UpdateCustomParametersCommand = new AsyncRelayCommand(UpdateCustomParametersAsync, () => IsConnected && SelectedStandard == "Custom"); Parameters = _config.DefaultTestParameters ?? new TestParameters(); TestRecords = new ObservableCollection(); @@ -498,6 +505,20 @@ namespace COFTester.ViewModels get => _testButtonText; set { _testButtonText = value; OnPropertyChanged(); } } + + /// + /// 当前选中的测试标准 + /// + public string SelectedStandard + { + get => _selectedStandard; + set { _selectedStandard = value; OnPropertyChanged(); OnPropertyChanged(nameof(IsStandardParametersReadOnly)); } + } + + /// + /// 标准参数是否只读(非自定义模式时为只读) + /// + public bool IsStandardParametersReadOnly => SelectedStandard != "Custom"; #endregion @@ -517,6 +538,12 @@ namespace COFTester.ViewModels public ICommand ZeroCalibrationCommand { get; } public ICommand ForceCalibrationCommand { get; } public ICommand ReturnToOriginCommand { get; } + + // 标准选择命令 + public ICommand SelectStandardCommand { get; } + + // 自定义参数更新命令 + public ICommand UpdateCustomParametersCommand { get; } #endregion #region Event Handlers @@ -648,12 +675,21 @@ namespace COFTester.ViewModels if (deviceParams != null) { - // 只更新设置页显示的4个测试参数 + // 更新设置页显示的4个测试参数 Parameters.HorizontalTestSpeed = deviceParams.HorizontalTestSpeed; Parameters.HorizontalTestDisplacement = deviceParams.HorizontalTestDisplacement; Parameters.VerticalTestSpeed = deviceParams.VerticalTestSpeed; Parameters.VerticalTestDisplacement = deviceParams.VerticalTestDisplacement; + // 如果没有选择标准,使用PLC的默认值更新报告参数 + if (string.IsNullOrEmpty(SelectedStandard)) + { + Parameters.TestSpeed = deviceParams.HorizontalTestSpeed; + Parameters.TestStroke = deviceParams.HorizontalTestDisplacement; + Parameters.Standard = "自定义配置"; // 显示为PLC默认配置 + System.Diagnostics.Debug.WriteLine("[ViewModel] 未选择标准,使用PLC默认值"); + } + // 通知UI更新 OnPropertyChanged(nameof(Parameters)); @@ -998,6 +1034,154 @@ namespace COFTester.ViewModels } } + /// + /// 标准选择 - 根据选择的标准写入对应的测试参数到寄存器 + /// + private async void SelectStandard(string standardCode) + { + try + { + if (!IsConnected) + { + StatusMessage = "请先连接设备"; + MessageBox.Show("请先连接设备后再选择标准", "提示", MessageBoxButton.OK, MessageBoxImage.Information); + return; + } + + if (_daqService is not ModbusServiceBase modbusService) + { + StatusMessage = "当前通信模式不支持标准选择"; + return; + } + + // 更新选中状态(触发按钮高亮和输入框可编辑状态) + SelectedStandard = standardCode; + + // 如果选择自定义,不写入参数,只切换到可编辑模式 + if (standardCode == "Custom") + { + StatusMessage = "已切换到自定义模式,可手动修改参数"; + System.Diagnostics.Debug.WriteLine("[ViewModel] 切换到自定义模式"); + CommandManager.InvalidateRequerySuggested(); + return; + } + + // 根据标准代码设置参数 + double speed = 0; + double displacement = 0; + string standardName = ""; + + switch (standardCode) + { + case "GB10006": + speed = 100.0; // GB/T 10006-2021: 100 mm/min + displacement = 80.0; // 80 mm + standardName = "GB/T 10006-2021"; + break; + case "ISO8295": + speed = 100.0; // ISO 8295:1995: 100 mm/min + displacement = 80.0; // 80 mm + standardName = "ISO 8295:1995"; + break; + case "ASTMD1894": + speed = 150.0; // ASTM D1894-24: 150 mm/min + displacement = 150.0; // 150 mm + standardName = "ASTM D1894-24"; + break; + default: + StatusMessage = "未知的标准代码"; + return; + } + + StatusMessage = $"正在应用标准 {standardName}..."; + System.Diagnostics.Debug.WriteLine($"[ViewModel] 选择标准: {standardName}"); + System.Diagnostics.Debug.WriteLine($"[ViewModel] 保持用户选择的滑块质量: {Parameters.SledMass} g"); + System.Diagnostics.Debug.WriteLine($"[ViewModel] 水平测试速度: {speed} mm/min"); + System.Diagnostics.Debug.WriteLine($"[ViewModel] 水平测试位移: {displacement} mm"); + + // 写入寄存器(只写入水平测试参数) + await modbusService.WriteHorizontalTestParametersAsync(speed, displacement); + + // 更新所有相关参数(用于报告生成) + // 注意:不更新 SledMass,保留用户在UI上选择的质量值 + Parameters.Standard = standardName; // 更新标准名称 + // Parameters.SledMass 保持用户选择的值(200g/300g/500g) + Parameters.TestSpeed = speed; // 更新测试速度(用于报告) + Parameters.TestStroke = displacement; // 更新测试行程(用于报告) + Parameters.HorizontalTestSpeed = speed; // 更新水平测试速度 + Parameters.HorizontalTestDisplacement = displacement; // 更新水平测试位移 + OnPropertyChanged(nameof(Parameters)); + + StatusMessage = $"已应用标准: {standardName}"; + System.Diagnostics.Debug.WriteLine($"[ViewModel] 标准 {standardName} 应用成功"); + System.Diagnostics.Debug.WriteLine($"[ViewModel] 升降参数保持PLC原值不变"); + } + catch (Exception ex) + { + StatusMessage = $"应用标准失败: {ex.Message}"; + System.Diagnostics.Debug.WriteLine($"[ViewModel] 应用标准失败: {ex.Message}"); + MessageBox.Show($"应用标准时发生错误:\n{ex.Message}", + "错误", + MessageBoxButton.OK, + MessageBoxImage.Error); + } + } + + /// + /// 更新自定义参数到设备 + /// + private async Task UpdateCustomParametersAsync() + { + try + { + if (!IsConnected) + { + StatusMessage = "请先连接设备"; + return; + } + + if (_daqService is not ModbusServiceBase modbusService) + { + StatusMessage = "当前通信模式不支持参数更新"; + return; + } + + StatusMessage = "正在更新自定义参数..."; + System.Diagnostics.Debug.WriteLine("[ViewModel] 开始更新自定义参数"); + System.Diagnostics.Debug.WriteLine($"[ViewModel] 水平测试速度: {Parameters.HorizontalTestSpeed} mm/min"); + System.Diagnostics.Debug.WriteLine($"[ViewModel] 水平测试位移: {Parameters.HorizontalTestDisplacement} mm"); + System.Diagnostics.Debug.WriteLine($"[ViewModel] 升降测试速度: {Parameters.VerticalTestSpeed} mm/min"); + System.Diagnostics.Debug.WriteLine($"[ViewModel] 升降测试位移: {Parameters.VerticalTestDisplacement} mm"); + + // 写入水平测试参数 + await modbusService.WriteHorizontalTestParametersAsync( + Parameters.HorizontalTestSpeed, + Parameters.HorizontalTestDisplacement); + + // 写入升降测试参数 + await modbusService.WriteVerticalTestParametersAsync( + Parameters.VerticalTestSpeed, + Parameters.VerticalTestDisplacement); + + StatusMessage = "自定义参数已更新到设备"; + System.Diagnostics.Debug.WriteLine("[ViewModel] 自定义参数更新成功"); + + MessageBox.Show("自定义参数已成功更新到设备", + "成功", + MessageBoxButton.OK, + MessageBoxImage.Information); + } + catch (Exception ex) + { + StatusMessage = $"更新参数失败: {ex.Message}"; + System.Diagnostics.Debug.WriteLine($"[ViewModel] 更新参数失败: {ex.Message}"); + MessageBox.Show($"更新参数时发生错误:\n{ex.Message}", + "错误", + MessageBoxButton.OK, + MessageBoxImage.Error); + } + } + /// /// 复归 - 向 M1300 写入命令 3 /// @@ -1510,6 +1694,52 @@ namespace COFTester.ViewModels } } + /// + /// 泛型 RelayCommand 實現,支持命令參數 + /// + public class RelayCommand : ICommand + { + private readonly Action _execute; + private readonly Func? _canExecute; + + public RelayCommand(Action execute, Func? canExecute = null) + { + _execute = execute ?? throw new ArgumentNullException(nameof(execute)); + _canExecute = canExecute; + + // 訂閱 CommandManager 的 RequerySuggested 事件 + CommandManager.RequerySuggested += OnCanExecuteChanged; + } + + public bool CanExecute(object? parameter) + { + if (parameter is T typedParameter) + { + return _canExecute == null || _canExecute(typedParameter); + } + return _canExecute == null; + } + + public void Execute(object? parameter) + { + if (parameter is T typedParameter) + { + _execute(typedParameter); + } + } + + public event EventHandler? CanExecuteChanged + { + add { CommandManager.RequerySuggested += value; } + remove { CommandManager.RequerySuggested -= value; } + } + + private void OnCanExecuteChanged(object? sender, EventArgs e) + { + // 自動觸發 CanExecuteChanged + } + } + /// /// 異步 RelayCommand 實現,用於異步操作(如連接設備) /// diff --git a/CSI-H238M/CSI-H238M/Views/ConfigWindow.xaml b/CSI-H238M/CSI-H238M/Views/ConfigWindow.xaml index d97077e..2c98acb 100644 --- a/CSI-H238M/CSI-H238M/Views/ConfigWindow.xaml +++ b/CSI-H238M/CSI-H238M/Views/ConfigWindow.xaml @@ -164,7 +164,7 @@ - + - + - + - + diff --git a/CSI-H238M/CSI-H238M/Views/MainWindow.xaml b/CSI-H238M/CSI-H238M/Views/MainWindow.xaml index 7c2dd97..63f2eda 100644 --- a/CSI-H238M/CSI-H238M/Views/MainWindow.xaml +++ b/CSI-H238M/CSI-H238M/Views/MainWindow.xaml @@ -1,7 +1,7 @@  + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +