Compare commits

...

4 Commits

Author SHA1 Message Date
91a8155c67 解决冲突
#	Resources/Strings.zh-CN.xaml
#	Window6.xaml
#	Window6.xaml.cs
2026-05-09 10:57:16 +08:00
c915b795e3 页面逻辑调整 2026-05-09 10:42:58 +08:00
196c7d4ef1 页面添加 2026-05-09 10:14:24 +08:00
0a40411962 代码合并 2026-05-08 20:14:17 +08:00
5 changed files with 159 additions and 44 deletions

29
Data/LanguageManager.cs Normal file
View File

@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace .Data
{
public static class LanguageManager
{
// 私有静态变量,只在首次访问时初始化一次
private static readonly string _currentLanguage;
// 静态构造函数:程序启动时自动执行一次,读取配置
static LanguageManager()
{
// 读取配置文件的Language值没有的话默认zh-CN
_currentLanguage = ConfigurationManager.AppSettings["Language"] ?? "zh-CN";
}
// 对外只读的全局属性,项目任何地方都能直接调用
public static string CurrentLanguage => _currentLanguage;
// 可选:给个更方便的判断属性,不用每次都写==判断
public static bool IsEnglish => _currentLanguage == "en-US";
public static bool IsChinese => _currentLanguage == "zh-CN";
}
}

View File

@@ -141,6 +141,38 @@
<system:String x:Key="testReport14">Next page</system:String>
<system:String x:Key="Manual">Manual interface</system:String>
<system:String x:Key="Manual1">Manual speed(mm/min)</system:String>
<system:String x:Key="Manual2">Offline</system:String>
<system:String x:Key="Manual3">settings</system:String>
<system:String x:Key="Manual4">Tidal volume coefficient</system:String>
<system:String x:Key="Manual5">Expiratory flow coefficient</system:String>
<system:String x:Key="Manual6">Inhalation flow coefficient</system:String>
<system:String x:Key="Manual7">Pressure coefficient</system:String>
<system:String x:Key="Manual8">Real-time monitoring parameters</system:String>
<system:String x:Key="Manual9">Location</system:String>
<system:String x:Key="Manual10">Pressure</system:String>
<system:String x:Key="Manual11">Exhalation flow rate</system:String>
<system:String x:Key="Manual12">Inhalation flow rate</system:String>
<system:String x:Key="Manual13">Shout up!</system:String>
<system:String x:Key="Manual14">Hold down</system:String>
<system:String x:Key="Manual15">Inhale</system:String>
<system:String x:Key="Manual16">Take a deep breath</system:String>
<system:String x:Key="Manual17">Manual suction</system:String>
<system:String x:Key="Manual171">Manual call</system:String>
<system:String x:Key="Manual18">Reset</system:String>
<system:String x:Key="Manual19">Control operation</system:String>
<system:String x:Key="Manual191">Test interface</system:String>
<system:String x:Key="Manual20">Calibration operation</system:String>
<system:String x:Key="Manual21">Exhalation calibration</system:String>
<system:String x:Key="Manual22">Inhalation calibration</system:String>
<system:String x:Key="Manual23">Pressure calibration</system:String>
<system:String x:Key="Manual24">Basic parameter settings</system:String>
<system:String x:Key="Workstation curve description">Workstation curve description:</system:String>
<system:String x:Key="Test Status">Test Status</system:String>
<system:String x:Key="Experimental Report">Experimental Report</system:String>

View File

@@ -142,6 +142,39 @@
<!--手动界面-->
<system:String x:Key="Manual">手动界面</system:String>
<system:String x:Key="Manual1">手动速度(mm/min)</system:String>
<system:String x:Key="Manual2">离线</system:String>
<system:String x:Key="Manual3">设置</system:String>
<system:String x:Key="Manual4">潮气量系数</system:String>
<system:String x:Key="Manual5">呼气流量系数</system:String>
<system:String x:Key="Manual6">吸气流量系数</system:String>
<system:String x:Key="Manual7">压力系数</system:String>
<system:String x:Key="Manual8">实时监测参数</system:String>
<system:String x:Key="Manual9">位置</system:String>
<system:String x:Key="Manual10">压力</system:String>
<system:String x:Key="Manual11">呼气流量</system:String>
<system:String x:Key="Manual12">吸气流量</system:String>
<system:String x:Key="Manual13">呼上</system:String>
<system:String x:Key="Manual14">呼下</system:String>
<system:String x:Key="Manual15">吸上</system:String>
<system:String x:Key="Manual16">吸下</system:String>
<system:String x:Key="Manual17">手动吸</system:String>
<system:String x:Key="Manual171">手动呼</system:String>
<system:String x:Key="Manual18">复位</system:String>
<system:String x:Key="Manual19">控制操作</system:String>
<system:String x:Key="Manual191">测试界面</system:String>
<system:String x:Key="Manual20">校准操作</system:String>
<system:String x:Key="Manual21">呼气校准</system:String>
<system:String x:Key="Manual22">吸气校准</system:String>
<system:String x:Key="Manual23">压力校准</system:String>
<system:String x:Key="Manual24">基础参数设置</system:String>
<system:String x:Key="PositionToPressure">定位移测压力</system:String>
<system:String x:Key="PressureToDisplacement">定压力测位移</system:String>
<system:String x:Key="PeakTest">峰值测试</system:String>

View File

@@ -2,7 +2,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:oxy="http://oxyplot.org/wpf"
Title="手动界面" Height="768" Width="1024"
Title="{DynamicResource Manual}" Height="768" Width="1024"
WindowStartupLocation="CenterScreen" Loaded="Window_Loaded"
Background="#F5F7FA" >
<Window.Resources>
@@ -18,7 +18,7 @@
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Height" Value="30"/>
<Setter Property="Width" Value="100"/>
<Setter Property="Width" Value="160"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
@@ -76,7 +76,7 @@
<Setter Property="FontSize" Value="14"/>
<Setter Property="Foreground" Value="#666666"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Width" Value="100"/>
<Setter Property="Width" Value="160"/>
</Style>
<!-- 单位文本样式 -->
@@ -92,7 +92,7 @@
<DockPanel LastChildFill="True">
<!-- 1. 顶部标题区 - 停靠在顶部 -->
<Border DockPanel.Dock="Top" Height="60" Background="#4A90E2" CornerRadius="8" Margin="20,20,20,0">
<TextBlock Text="手动界面"
<TextBlock Text="{DynamicResource Manual}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="24"
@@ -107,11 +107,11 @@
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Button Content="主页" Style="{StaticResource MyButtonStyle}" Width="120" Click="Button_Click_2"/>
<Button Content="测试界面" Style="{StaticResource MyButtonStyle}" Width="120" Click="Button_Click_1"/>
<Button Content="{DynamicResource Deformation}" Style="{StaticResource MyButtonStyle}" Width="120" Click="Button_Click_2"/>
<Button Content="{DynamicResource Manual191}" Style="{StaticResource MyButtonStyle}" Width="120" Click="Button_Click_1"/>
<!--<Button Content="曲线" Style="{StaticResource MyButtonStyle}" Width="120"/>-->
<!--<Button Content="手动界面" Style="{StaticResource MyButtonStyle}" Width="120" Background="#3A7BBE"/>-->
<Button Content="记录画面" Style="{StaticResource MyButtonStyle}" Width="120" Click="Button_Click_3"/>
<Button Content="{DynamicResource test28}" Style="{StaticResource MyButtonStyle}" Width="130" Click="Button_Click_3"/>
</StackPanel>
</Border>
@@ -134,7 +134,7 @@
</Grid.RowDefinitions>
<!-- 第一组:基础参数 -->
<TextBlock Text="基础参数设置" Style="{StaticResource SectionTitleStyle}" Grid.Row="0"/>
<TextBlock Text="{DynamicResource Manual24}" Style="{StaticResource SectionTitleStyle}" Grid.Row="0"/>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
@@ -151,48 +151,54 @@
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- 手动速度 -->
<TextBlock Text="手动速度" Style="{StaticResource ParamLabelStyle}" Grid.Row="0" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual1}" Style="{StaticResource ParamLabelStyle}" Grid.Row="0" Grid.Column="0" Margin="5"/>
<TextBox Name="handmovementTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="0" Grid.Column="1"
IsReadOnly="True"
/>
<TextBlock Text="mm/min" Style="{StaticResource UnitTextStyle}" Grid.Row="0" Grid.Column="2"/>
<Button Name="btn1" Content="设置" Style="{StaticResource MyButtonStyle}" Width="50" Click="Button_Click_14" Grid.Row="0" Grid.Column="3"/>
<!--<TextBlock Text="mm/min" Style="{StaticResource UnitTextStyle}" Grid.Row="0" Grid.Column="2"/>-->
<Button Content="{DynamicResource Manual3}" Style="{StaticResource MyButtonStyle}" Width="60" Click="Button_Click_14" Grid.Row="0" Grid.Column="3"/>
<!-- 潮气量系数 -->
<TextBlock Text="潮气量系数" Style="{StaticResource ParamLabelStyle}" Grid.Row="1" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual4}" Style="{StaticResource ParamLabelStyle}" Grid.Row="1" Grid.Column="0" Margin="5"/>
<TextBox Name="moistureTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="1" Grid.Column="1"
IsReadOnly="True"
/>
<Button Name="btn2" Content="设置" Style="{StaticResource MyButtonStyle}" Width="50" Click="Button_Click_15" Grid.Row="1" Grid.Column="3"/>
<Button Content="{DynamicResource Manual3}" Style="{StaticResource MyButtonStyle}" Width="60" Click="Button_Click_15" Grid.Row="1" Grid.Column="3"/>
<!-- 呼气流量系数 -->
<TextBlock Text="呼气流量系数" Style="{StaticResource ParamLabelStyle}" Grid.Row="2" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual5}" Style="{StaticResource ParamLabelStyle}" Grid.Row="2" Grid.Column="0" Margin="5"/>
<TextBox Name="OutFowRateTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="2" Grid.Column="1"
IsReadOnly="True"
/>
<Button Name="btn3" Content="设置" Style="{StaticResource MyButtonStyle}" Width="50" Click="Button_Click_16" Grid.Row="2" Grid.Column="3"/>
<Button Content="{DynamicResource Manual3}" Style="{StaticResource MyButtonStyle}" Width="60" Click="Button_Click_16" Grid.Row="2" Grid.Column="3"/>
<!--<TextBlock Text="L/min" Style="{StaticResource UnitTextStyle}" Grid.Row="2" Grid.Column="2"/>-->
<!-- 吸气流量系数 -->
<TextBlock Text="吸气流量系数" Style="{StaticResource ParamLabelStyle}" Grid.Row="3" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual6}" Style="{StaticResource ParamLabelStyle}" Grid.Row="3" Grid.Column="0" Margin="5"/>
<TextBox Name="InFowRateTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="3" Grid.Column="1"
IsReadOnly="True"
/>
<Button Name="btn4" Content="设置" Style="{StaticResource MyButtonStyle}" Width="50" Click="Button_Click_17" Grid.Row="3" Grid.Column="3"/>
<Button Content="{DynamicResource Manual3}" Style="{StaticResource MyButtonStyle}" Width="60" Click="Button_Click_17" Grid.Row="3" Grid.Column="3"/>
<!--<TextBlock Text="L/min" Style="{StaticResource UnitTextStyle}" Grid.Row="3" Grid.Column="2"/>-->
<!-- 压力系数 -->
<TextBlock Text="压力系数" Style="{StaticResource ParamLabelStyle}" Grid.Row="4" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual7}" Style="{StaticResource ParamLabelStyle}" Grid.Row="4" Grid.Column="0" Margin="5"/>
<TextBox Name="PressRateTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="4" Grid.Column="1"
IsReadOnly="True"
/>
<Button Name="btn5" Content="设置" Style="{StaticResource MyButtonStyle}" Width="50" Click="Button_Click_18" Grid.Row="4" Grid.Column="3"/>
<Button Content="{DynamicResource Manual3}" Style="{StaticResource MyButtonStyle}" Width="60" Click="Button_Click_18" Grid.Row="4" Grid.Column="3"/>
<!--<TextBlock Text="L/min" Style="{StaticResource UnitTextStyle}" Grid.Row="4" Grid.Column="2"/>-->
@@ -201,7 +207,7 @@ IsReadOnly="True"
</Grid>
<!-- 第二组:实时监测参数 -->
<TextBlock Text="实时监测参数" Style="{StaticResource SectionTitleStyle}" Grid.Row="3"/>
<TextBlock Text="{DynamicResource Manual8}" Style="{StaticResource SectionTitleStyle}" Grid.Row="3"/>
<Grid Grid.Row="4">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
@@ -216,22 +222,22 @@ IsReadOnly="True"
</Grid.ColumnDefinitions>
<!-- 位置 -->
<TextBlock Text="位置" Style="{StaticResource ParamLabelStyle}" Grid.Row="0" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual9}" Style="{StaticResource ParamLabelStyle}" Grid.Row="0" Grid.Column="0" Margin="5"/>
<TextBox Name="positionTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="0" Grid.Column="1" IsReadOnly="True" Background="#F0F0F0"/>
<TextBlock Text="mm" Style="{StaticResource UnitTextStyle}" Grid.Row="0" Grid.Column="2"/>
<!-- 压力 -->
<TextBlock Text="压力" Style="{StaticResource ParamLabelStyle}" Grid.Row="1" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual10}" Style="{StaticResource ParamLabelStyle}" Grid.Row="1" Grid.Column="0" Margin="5"/>
<TextBox Name="pressTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="1" Grid.Column="1" IsReadOnly="True" Background="#F0F0F0"/>
<TextBlock Text="pa" Style="{StaticResource UnitTextStyle}" Grid.Row="1" Grid.Column="2"/>
<!-- 呼气流量 -->
<TextBlock Text="呼气流量" Style="{StaticResource ParamLabelStyle}" Grid.Row="2" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual11}" Style="{StaticResource ParamLabelStyle}" Grid.Row="2" Grid.Column="0" Margin="5"/>
<TextBox Name="OutFowTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="2" Grid.Column="1" IsReadOnly="True" Background="#F0F0F0"/>
<TextBlock Text="L/min" Style="{StaticResource UnitTextStyle}" Grid.Row="2" Grid.Column="2"/>
<!-- 吸气流量 -->
<TextBlock Text="吸气流量" Style="{StaticResource ParamLabelStyle}" Grid.Row="3" Grid.Column="0" Margin="5"/>
<TextBlock Text="{DynamicResource Manual12}" Style="{StaticResource ParamLabelStyle}" Grid.Row="3" Grid.Column="0" Margin="5"/>
<TextBox Name="InFlowTxt" Style="{StaticResource MyTextBoxStyle}" Grid.Row="3" Grid.Column="1" IsReadOnly="True" Background="#F0F0F0"/>
<TextBlock Text="L/min" Style="{StaticResource UnitTextStyle}" Grid.Row="3" Grid.Column="2"/>
</Grid>
@@ -251,9 +257,9 @@ IsReadOnly="True"
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center">
<Rectangle Width="20" Height="20" Fill="Red" Margin="5"/>
<TextBlock Text="呼气流量" Foreground="#999999" FontSize="16" VerticalAlignment="Center" />
<TextBlock Text="{DynamicResource Manual11}" Foreground="#999999" FontSize="16" VerticalAlignment="Center" />
<Rectangle Width="20" Height="20" Fill="Blue" Margin="5"/>
<TextBlock Text="吸气流量" Foreground="#999999" FontSize="16" VerticalAlignment="Center" />
<TextBlock Text="{DynamicResource Manual12}" Foreground="#999999" FontSize="16" VerticalAlignment="Center" />
</StackPanel>
<oxy:PlotView x:Name="plotView"
Margin="10"
@@ -279,27 +285,27 @@ IsReadOnly="True"
</Grid.RowDefinitions>
<!-- 操作按钮标题 -->
<TextBlock Text="控制操作" Style="{StaticResource SectionTitleStyle}" Grid.Row="0"/>
<TextBlock Text="{DynamicResource Manual19}" Style="{StaticResource SectionTitleStyle}" Grid.Row="0"/>
<!-- 控制按钮组 -->
<StackPanel Grid.Row="1" Margin="0,0,0,10">
<Button Content="呼上" Style="{StaticResource MyButtonStyle}" Click="Button_Click_4"/>
<Button Content="呼下" Style="{StaticResource MyButtonStyle}" Click="Button_Click_5"/>
<Button Content="吸上" Style="{StaticResource MyButtonStyle}" Click="Button_Click_6"/>
<Button Content="吸下" Style="{StaticResource MyButtonStyle}" Click="Button_Click_7"/>
<Button Content="手动吸" Style="{StaticResource MyButtonStyle}" Click="Button_Click_8"/>
<Button Content="手动呼" Style="{StaticResource MyButtonStyle}" Click="Button_Click_9"/>
<Button Name="ResetBtn" Content="复位" Style="{StaticResource MyButtonStyle}" Background="#F5A623" Click="Button_Click_10"/>
<Button Content="{DynamicResource Manual13}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_4"/>
<Button Content="{DynamicResource Manual14}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_5"/>
<Button Content="{DynamicResource Manual15}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_6"/>
<Button Content="{DynamicResource Manual16}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_7"/>
<Button Content="{DynamicResource Manual17}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_8"/>
<Button Content="{DynamicResource Manual171}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_9"/>
<Button Name="ResetBtn" Content="{DynamicResource Manual18}" Style="{StaticResource MyButtonStyle}" Background="#F5A623" Click="Button_Click_10"/>
</StackPanel>
<!-- 校准按钮标题 -->
<TextBlock Text="校准操作" Style="{StaticResource SectionTitleStyle}" Grid.Row="3"/>
<TextBlock Text="{DynamicResource Manual20}" Style="{StaticResource SectionTitleStyle}" Grid.Row="3"/>
<!-- 校准按钮组 -->
<StackPanel Grid.Row="4">
<Button Content="呼气校准" Style="{StaticResource MyButtonStyle}" Click="Button_Click_11"/>
<Button Content="吸气校准" Style="{StaticResource MyButtonStyle}" Click="Button_Click_12"/>
<Button Content="压力校准" Style="{StaticResource MyButtonStyle}" Click="Button_Click_13"/>
<Button Content="{DynamicResource Manual21}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_11"/>
<Button Content="{DynamicResource Manual22}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_12"/>
<Button Content="{DynamicResource Manual23}" Style="{StaticResource MyButtonStyle}" Click="Button_Click_13"/>
</StackPanel>
</Grid>
</Grid>

View File

@@ -22,7 +22,7 @@ using System.Windows.Threading;
using OxyPlot.Axes;
using OxyPlot.Legends;
using ;
using .Data;
namespace ShanghaiEnvironmentalTechnology
{
/// <summary>
@@ -91,7 +91,7 @@ namespace ShanghaiEnvironmentalTechnology
private TcpClient _tcpClient;
private IModbusMaster _modbusMaster;
private System.Timers.Timer resetTimer; // 启动状态实时定时器
string currentLang = LanguageManager.CurrentLanguage;
#region
private PlotModel _plotModel;
@@ -139,6 +139,7 @@ namespace ShanghaiEnvironmentalTechnology
}
else
{
btn1.IsEnabled = true;
btn2.IsEnabled = true;
btn3.IsEnabled = true;
@@ -147,6 +148,7 @@ namespace ShanghaiEnvironmentalTechnology
ResetBtn.Content = _lang == "en-US" ? "Reset" : "复位";
ResetBtn.Foreground = Brushes.White;
}
});
@@ -235,7 +237,20 @@ namespace ShanghaiEnvironmentalTechnology
{
if (!IsModbusConnected())
{
updateAction(_lang == "en-US" ? "Offline" : "离线");
//updateAction("离线");
//// 2. 直接判断是否是英文
if (LanguageManager.IsEnglish)
{
// 英文逻辑
updateAction("Offline");
}
else if (LanguageManager.IsChinese)
{
// 中文逻辑
updateAction("离线");
}
return;
}
try