跨平台污水处理监控系统

纾 鏇 449282aec4 褰诲簳淇鎶ヨ璇︽儏绌哄 - 鏀圭敤ViewModel鎵佸钩灞炴ф浛浠e祵濂楃粦瀹 1 s膬pt膬m芒n膬 卯n urm膬
src 449282aec4 褰诲簳淇鎶ヨ璇︽儏绌哄 - 鏀圭敤ViewModel鎵佸钩灞炴ф浛浠e祵濂楃粦瀹 1 s膬pt膬m芒n膬 卯n urm膬
.gitignore 845655b463 娣诲姞瑙f瀽搴﹁嚜閫傚簲鍔熻兘 1 s膬pt膬m芒n膬 卯n urm膬
README.md 845655b463 娣诲姞瑙f瀽搴﹁嚜閫傚簲鍔熻兘 1 s膬pt膬m芒n膬 卯n urm膬
YZWater3.sln 845655b463 娣诲姞瑙f瀽搴﹁嚜閫傚簲鍔熻兘 1 s膬pt膬m芒n膬 卯n urm膬

README.md

YZWater3 - 璺ㄥ钩鍙版薄姘村鐞嗙洃鎺х郴缁

鍩轰簬 Avalonia UI 鐨勮法骞冲彴姹℃按澶勭悊鍘傜洃鎺х郴缁燂紝鏀寔 Windows銆丩inux 鍜 macOS銆

馃殌 鎶鏈爤

缁勪欢 鎶鏈柟妗
UI 妗嗘灦 Avalonia UI 11.2.3
杩愯鏃 .NET 8.0
MVVM 妗嗘灦 CommunityToolkit.Mvvm
PLC 閫氫俊 HslCommunication
鏁版嵁搴 FreeSql + SQLite
鍥捐〃 LiveCharts2
鏃ュ織 Serilog

馃搧 椤圭洰缁撴瀯

YZWater3/
鈹溾攢鈹 src/
鈹   鈹溾攢鈹 YZWater.Core/              # 鏍稿績涓氬姟閫昏緫锛堝叡浜級
鈹   鈹   鈹溾攢鈹 Models/                # 鏁版嵁妯″瀷
鈹   鈹   鈹   鈹溾攢鈹 Person.cs         # 浜哄憳妯″瀷
鈹   鈹   鈹   鈹溾攢鈹 AlarmRecord.cs    # 鎶ヨ璁板綍
鈹   鈹   鈹   鈹溾攢鈹 FlowRecord.cs     # 娴侀噺璁板綍
鈹   鈹   鈹   鈹溾攢鈹 EquipmentStatus.cs # 璁惧鐘舵
鈹   鈹   鈹   鈹斺攢鈹 SystemConfig.cs   # 绯荤粺閰嶇疆
鈹   鈹   鈹溾攢鈹 Services/              # 鏈嶅姟灞
鈹   鈹   鈹   鈹溾攢鈹 DatabaseService.cs # 鏁版嵁搴撴湇鍔
鈹   鈹   鈹   鈹溾攢鈹 PlcService.cs     # PLC 閫氫俊鏈嶅姟
鈹   鈹   鈹   鈹斺攢鈹 ConfigService.cs  # 閰嶇疆鏈嶅姟
鈹   鈹   鈹溾攢鈹 ViewModels/            # ViewModel 灞
鈹   鈹   鈹   鈹溾攢鈹 MainViewModel.cs  # 涓荤獥鍙
鈹   鈹   鈹   鈹溾攢鈹 ViewAViewModel.cs # 涓诲伐鑹
鈹   鈹   鈹   鈹溾攢鈹 ViewBViewModel.cs # 鍙傛暟璁剧疆
鈹   鈹   鈹   鈹溾攢鈹 ViewCViewModel.cs # 娴侀噺璁板綍
鈹   鈹   鈹   鈹溾攢鈹 ViewDViewModel.cs # 鎶ヨ璁板綍
鈹   鈹   鈹   鈹斺攢鈹 ViewEViewModel.cs # 鍏充簬
鈹   鈹   鈹斺攢鈹 Utils/                 # 宸ュ叿绫
鈹   鈹       鈹溾攢鈹 Nlogger.cs        # 鏃ュ織宸ュ叿
鈹   鈹       鈹斺攢鈹 WinSize.cs        # 绐楀彛灏哄宸ュ叿
鈹   鈹
鈹   鈹斺攢鈹 YZWater.Avalonia/          # Avalonia UI 椤圭洰
鈹       鈹溾攢鈹 Views/                 # XAML 瑙嗗浘
鈹       鈹   鈹溾攢鈹 MainWindow.axaml  # 涓荤獥鍙
鈹       鈹   鈹溾攢鈹 ViewAView.axaml   # 涓诲伐鑹鸿鍥撅紙宸ヤ笟鎺т欢锛
鈹       鈹   鈹溾攢鈹 ViewBView.axaml   # 鍙傛暟璁剧疆瑙嗗浘
鈹       鈹   鈹溾攢鈹 ViewCView.axaml   # 娴侀噺璁板綍瑙嗗浘
鈹       鈹   鈹溾攢鈹 ViewDView.axaml   # 鎶ヨ璁板綍瑙嗗浘
鈹       鈹   鈹斺攢鈹 ViewEView.axaml   # 鍏充簬瑙嗗浘
鈹       鈹溾攢鈹 Controls/              # 鑷畾涔夊伐涓氭帶浠
鈹       鈹   鈹溾攢鈹 WaterTankControl.cs # 姘寸鎺т欢
鈹       鈹   鈹溾攢鈹 PumpControl.cs    # 娉垫帶浠
鈹       鈹   鈹溾攢鈹 FanControl.cs     # 椋庢墖鎺т欢
鈹       鈹   鈹溾攢鈹 PipeLineControl.cs # 绠¢亾鎺т欢
鈹       鈹   鈹斺攢鈹 ValveControl.cs   # 闃闂ㄦ帶浠
鈹       鈹溾攢鈹 Converters/            # 鍊艰浆鎹㈠櫒
鈹       鈹斺攢鈹 Assets/                # 璧勬簮鏂囦欢
鈹
鈹斺攢鈹 YZWater3.sln                   # 瑙e喅鏂规鏂囦欢

馃洜锔 寮鍙戠幆澧

鍓嶇疆瑕佹眰

  • .NET 8.0 SDK 鎴栨洿楂樼増鏈
  • Visual Studio 2022 鎴 JetBrains Rider锛堟帹鑽愶級
  • Git

瀹夎姝ラ

  1. 鍏嬮殕浠撳簱

    git clone <repository-url>
    cd YZWater3
    
  2. 杩樺師渚濊禆

    dotnet restore
    
  3. 鏋勫缓椤圭洰

    dotnet build
    
  4. 杩愯搴旂敤

    dotnet run --project src/YZWater.Avalonia
    

馃幆 鍔熻兘鐗规

涓诲伐鑹鸿鍥 (ViewA)

  • 宸ヤ笟鎺т欢灞曠ず - 浣跨敤鑷畾涔夋帶浠舵ā鎷熺湡瀹炲伐涓氱晫闈
    • WaterTankControl - 姘寸娑蹭綅鏄剧ず
    • PumpControl - 娉佃繍琛岀姸鎬佸姩鐢
    • FanControl - 椋庢墖杩愯鐘舵佸姩鐢
    • PipeLineControl - 绠¢亾娴佸姩鏁堟灉
    • ValveControl - 闃闂ㄧ姸鎬佹樉绀
  • 瀹炴椂鏄剧ず 4 涓按姹犳恫浣
  • 杩涙按/鍑烘按娴侀噺鐩戞祴
  • 娉点侀鏈恒侀榾闂ㄦ帶鍒
  • 鑷姩/鎵嬪姩妯″紡鍒囨崲
  • 鎶ヨ鐘舵佹樉绀
  • 璁惧鐘舵侀潰鏉

鍙傛暟璁剧疆 (ViewB)

  • PLC 杩炴帴閰嶇疆锛圛P銆佺鍙o級
  • 鎶ヨ闃堝艰缃紙娑蹭綅銆佹祦閲忥級
  • 娉甸鐜囪缃
  • 閰嶇疆淇濆瓨/鍔犺浇

娴侀噺璁板綍 (ViewC)

  • 杩涙按/鍑烘按娴侀噺鍥捐〃
  • 鍘嗗彶鏁版嵁鏌ヨ
  • 鏁版嵁瀵煎嚭 CSV
  • 娓呴櫎鏃ф暟鎹

鎶ヨ璁板綍 (ViewD)

  • 瀹炴椂鎶ヨ鍒楄〃
  • 鎶ヨ纭鍔熻兘
  • 鎵归噺纭
  • 鎶ヨ璇︽儏鏌ョ湅

鍏充簬 (ViewE)

  • 绯荤粺淇℃伅
  • 鍏徃淇℃伅
  • 鐗堟湰淇℃伅

馃敡 閰嶇疆璇存槑

PLC 閰嶇疆

榛樿閰嶇疆鏂囦欢锛yzwater-config.json

{
  "PlcIp": "192.168.0.150",
  "PlcPort": 5000,
  "AutoConnect": true,
  "LevelHighAlarm": 80.0,
  "LevelLowAlarm": 20.0,
  "FlowHighAlarm": 100.0,
  "PumpFrequency": 50.0,
  "SystemName": "姹℃按澶勭悊鐩戞帶绯荤粺",
  "CompanyName": "鎵窞鏃僵绉戞妧鏈夐檺鍏徃",
  "ContactPerson": "璧电粡鐞",
  "ContactPhone": "18115099090"
}

鏁版嵁搴撻厤缃

鏁版嵁搴撴枃浠讹細yzwater.db锛圫QLite锛

鑷姩鍒涘缓浠ヤ笅琛細

  • persons - 浜哄憳琛
  • alarm_records - 鎶ヨ璁板綍琛
  • flow_records - 娴侀噺璁板綍琛
  • system_config - 绯荤粺閰嶇疆琛

馃摝 渚濊禆鍖

Core 椤圭洰

  • CommunityToolkit.Mvvm 8.2.2
  • FreeSql.Provider.Sqlite 3.2.800
  • FreeSql.Repository 3.2.800
  • HslCommunication 12.0.1
  • Serilog 4.0.2
  • Serilog.Sinks.Console 6.0.0
  • Serilog.Sinks.File 6.0.0

Avalonia 椤圭洰

  • Avalonia 11.2.3
  • Avalonia.Desktop 11.2.3
  • Avalonia.Themes.Fluent 11.2.3
  • Avalonia.Fonts.Inter 11.2.3
  • LiveChartsCore.SkiaSharpView.Avalonia 2.0.0-rc4.5
  • Semi.Avalonia 11.2.1.4

馃搻 瑙f瀽搴﹁嚜閫傚簲

鑷傚簲鏈哄埗

椤圭洰浣跨敤 AdaptiveContainer 鎺т欢瀹炵幇瑙f瀽搴﹁嚜閫傚簲锛

  1. 璁捐鍩哄噯: 1280 x 800
  2. 缂╂斁鏂瑰紡: Uniform锛堢瓑姣旂缉鏀撅紝淇濇寔瀹介珮姣旓級
  3. 缂╂斁鑼冨洿: 0.6x - 1.5x
  4. 鑷姩灞呬腑: 鍐呭鍦ㄥ彲鐢ㄧ┖闂村唴鑷姩灞呬腑

宸ヤ綔鍘熺悊

鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹
鈹  绐楀彛瀹為檯澶у皬 (1920 x 1080)                                  鈹
鈹  鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹   鈹
鈹  鈹  缂╂斁鍚庣殑鍐呭鍖哄煙 (1280 x 800 * 1.25)                鈹   鈹
鈹  鈹  鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹   鈹   鈹
鈹  鈹  鈹  璁捐鍐呭 (1280 x 800)                       鈹   鈹   鈹
鈹  鈹  鈹  - 鎵鏈夋帶浠朵娇鐢ㄥ浐瀹氬潗鏍                       鈹   鈹   鈹
鈹  鈹  鈹  - 鐢卞鍣ㄧ粺涓缂╂斁                            鈹   鈹   鈹
鈹  鈹  鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹   鈹   鈹
鈹  鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹   鈹
鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹

浣跨敤鏂瑰紡

<!-- 鍦 MainWindow.axaml 涓 -->
<controls:AdaptiveContainer DesignWidth="1280" DesignHeight="800"
                             Stretch="Uniform" MinScale="0.6" MaxScale="1.5">
    <!-- 鎵鏈夊唴瀹规斁鍦ㄨ繖閲 -->
</controls:AdaptiveContainer>

鍒嗚鲸鐜囩鐞嗗櫒

ResolutionManager 鎻愪緵鍏ㄥ眬鍒嗚鲸鐜囦俊鎭細

// 鑾峰彇褰撳墠缂╂斁姣斾緥
var scale = ResolutionManager.Instance.UniformScale;

// 璁$畻缂╂斁鍚庣殑灏哄
var scaledWidth = ResolutionManager.Instance.Scale(100);

// 璁$畻缂╂斁鍚庣殑瀛椾綋澶у皬
var fontSize = ResolutionManager.Instance.ScaleFontSize(14);

馃帹 鑷畾涔夊伐涓氭帶浠

WaterTankControl - 姘寸鎺т欢

  • 鏄剧ず娑蹭綅鐧惧垎姣
  • 鍙厤缃按棰滆壊鍜岃竟妗嗛鑹
  • 鏀寔鏂囧瓧鏍囩

    <controls:WaterTankControl WaterLevel="75" Text="鍏ュ彛姹" WaterColor="#178187"/>
    

PumpControl - 娉垫帶浠

  • 杩愯鏃舵樉绀烘棆杞姩鐢
  • 鍙厤缃棆杞熷害
  • 鏀寔澶氶鑹查厤缃

    <controls:PumpControl IsRunning="{Binding Pump1Running}" Speed="2" Text="娉1"/>
    

FanControl - 椋庢墖鎺т欢

  • 杩愯鏃舵樉绀洪鎵囨棆杞姩鐢
  • 鍙厤缃棆杞熷害
  • 鏀寔鏂囧瓧鏍囩

    <controls:FanControl IsRunning="{Binding Fan1Running}" Speed="1" Text="椋庢墖1"/>
    

PipeLineControl - 绠¢亾鎺т欢

  • 鏄剧ず娴佸姩鏁堟灉锛堣櫄绾垮姩鐢伙級
  • 鏀寔姘村钩/鍨傜洿鏂瑰悜
  • 鍙厤缃閬撻鑹插拰姘存祦棰滆壊

    <controls:PipeLineControl IsFlow="True" IsHorizontal="True"/>
    

ValveControl - 闃闂ㄦ帶浠

  • 涓夌鐘舵侊細鍏抽棴/涓棿/鎵撳紑
  • 鐘舵侀鑹叉寚绀猴紙绾/榛/缁匡級
  • 鏀寔鏂囧瓧鏍囩

    <controls:ValveControl Status="{Binding Valve1Status}" Text="杩涙按闃"/>
    

馃攧 涓 YZWater2 鐨勫姣

鐗规 YZWater2 (WPF) YZWater3 (Avalonia)
璺ㄥ钩鍙 鉂 浠 Windows 鉁 Windows/Linux/macOS
UI 妗嗘灦 WPF Avalonia UI 11
杩愯鏃 .NET Framework 4.8 .NET 8.0
MVVM Caliburn.Micro CommunityToolkit.Mvvm
鍥捐〃 LiveCharts.Wpf LiveCharts2
鎺т欢搴 HandyControl Semi.Avalonia
鏃ュ織 NLog Serilog
宸ヤ笟鎺т欢 HslControls 鑷畾涔夋帶浠

馃摑 寮鍙戣鏄

娣诲姞鏂拌鍥

  1. YZWater.Core/ViewModels 涓垱寤 ViewModel
  2. YZWater.Avalonia/Views 涓垱寤哄搴旂殑 View
  3. MainViewModel 涓坊鍔犺鍥惧垏鎹㈤昏緫
  4. MainWindow.axaml 涓坊鍔 TabItem

鑷畾涔夋帶浠

YZWater.Avalonia/Controls 鐩綍涓垱寤鸿嚜瀹氫箟鎺т欢锛屼緥濡傦細

  • 姘寸鎺т欢 (WaterTankControl)
  • 绠¢亾鎺т欢 (PipeLineControl)
  • 闃闂ㄦ帶浠 (ValveControl)

鏁版嵁缁戝畾

浣跨敤 CommunityToolkit.Mvvm 鐨勬簮鐢熸垚鍣細

public partial class MyViewModel : ObservableObject
{
    [ObservableProperty]
    private string _name = string.Empty;

    [RelayCommand]
    private async Task SaveAsync()
    {
        // 淇濆瓨閫昏緫
    }
}

馃悰 甯歌闂

1. PLC 杩炴帴澶辫触

  • 妫鏌 PLC IP 鍦板潃鏄惁姝g‘
  • 纭缃戠粶杩炴帴姝e父
  • 妫鏌ラ槻鐏璁剧疆

2. 鏁版嵁搴撻敊璇

  • 鍒犻櫎 yzwater.db 鏂囦欢閲嶆柊鍚姩
  • 妫鏌ョ鐩樼┖闂

3. UI 鏄剧ず寮傚父

  • 鏇存柊鏄惧崱椹卞姩
  • 妫鏌 .NET 8.0 杩愯鏃舵槸鍚﹀畨瑁

馃搫 璁稿彲璇

漏 2024 鎵窞鏃僵绉戞妧鏈夐檺鍏徃

馃懃 鑱旂郴鏂瑰紡

  • 鍏徃: 鎵窞鏃僵绉戞妧鏈夐檺鍏徃
  • 鑱旂郴浜: 璧电粡鐞
  • 鐢佃瘽: 18115099090