This commit is contained in:
xyy
2026-05-11 19:06:26 +08:00
parent 3dece416fa
commit 7780b4758b
26 changed files with 428 additions and 93 deletions

View File

@@ -1,11 +1,12 @@
using Microsoft.Win32;
using Modbus.Device;
using Modbus;
using Modbus.Device;
using OfficeOpenXml;
using System;
using System.Configuration;
using System.Data.SQLite;
using System.IO;
using System.Net.Mail;
using System.Net.Sockets;
using System.Runtime.Intrinsics;
using System.Threading.Tasks;
@@ -17,6 +18,7 @@ using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using ;
using static OfficeOpenXml.ExcelErrorValue;
namespace ShanghaiEnvironmentalTechnology
{
@@ -164,7 +166,7 @@ namespace ShanghaiEnvironmentalTechnology
if (!_isEditingFrequency)
{
ReadAndUpdateSingleRegister(
368,
3680,
isFloat: true,
value => UpdatePressureUI5(value.ToString())
);
@@ -389,7 +391,8 @@ namespace ShanghaiEnvironmentalTechnology
BeginCO2 REAL NOT NULL,
EndCO2 REAL NOT NULL,
CO2Added REAL NOT NULL,
RecordTime DATETIME NOT NULL
RecordTime DATETIME NOT NULL,
IsEnd BOOLEAN DEFAULT 0
);";
using (var command = new SQLiteCommand(createTableSql, connection))
{
@@ -947,12 +950,13 @@ namespace ShanghaiEnvironmentalTechnology
}
try
{
await Task.Run(() => _modbusMaster.WriteSingleCoil(0x01, 38, false));
UpdateResetButtonStatus(_lang == "en-US" ? "Resetting..." : "正在复位...", Brushes.LightGreen);
await Task.Run(() => _modbusMaster.WriteSingleCoil(0x01, _resetAddress, true));
fc.BtnClickFunctionForNew(Function.ButtonType., _resetAddress);
//await Task.Run(() => _modbusMaster.WriteSingleCoil(0x01, _resetAddress, true));
fc.BtnClickFunctionForNew(Function.ButtonType., 2);
await Task.Delay(100);
await Task.Run(() => _modbusMaster.WriteSingleCoil(0x01, _resetAddress, false));
fc.BtnClickFunctionForNew(Function.ButtonType., _resetAddress);
//fc.BtnClickFunctionForNew(Function.ButtonType.复位型, _resetAddress);
UpdateResetButtonStatus(_lang == "en-US" ? "Reset Success" : "复位成功", Brushes.LightGreen);
}
catch (Exception ex)
@@ -1054,6 +1058,25 @@ namespace ShanghaiEnvironmentalTechnology
return;
}
float flowData = ReadAndUpdateSingleRegisterWithNoUI(_co2Address, true);
float pressureData = ReadAndUpdateSingleRegisterWithNoUI(_breathOutAddress, true);
float beginCo2Data = ReadAndUpdateSingleRegisterWithNoUI(_co2BeginAddress, true);
float endCo2Data = ReadAndUpdateSingleRegisterWithNoUI(_co2EndAddress, true);
float addCo2Data = ReadAndUpdateSingleRegisterWithNoUI(_co2AddAddress, true);
// 保存到数据库
SaveRecordToDatabase(
flowData,
pressureData,
beginCo2Data,
endCo2Data,
addCo2Data,
true
);
var records = ReadCO2RecordsFromDatabase();
if (records == null || !records.Any())
{
@@ -1078,7 +1101,7 @@ namespace ShanghaiEnvironmentalTechnology
{
conn.Open();
// 查询CO2表所有记录按时间排序
string query = "SELECT Flow, Pressure, BeginCO2, EndCO2, CO2Added, RecordTime FROM CO2 ORDER BY RecordTime desc limit 1 ";
string query = "SELECT Flow, Pressure, BeginCO2, EndCO2, CO2Added, RecordTime,isEnd FROM CO2 ORDER BY RecordTime desc limit 1 ";
using (SQLiteCommand cmd = new SQLiteCommand(query, conn))
{
using (SQLiteDataReader reader = cmd.ExecuteReader())
@@ -1162,6 +1185,8 @@ namespace ShanghaiEnvironmentalTechnology
public double EndCO2 { get; set; } // 终CO2浓度%
public double CO2Added { get; set; } // CO2浓度相对增加%
public DateTime RecordTime { get; set; } // 时间
public bool? isEnd { get; set; }
}
private void Button_Click_15(object sender, RoutedEventArgs e) { }
@@ -1221,7 +1246,7 @@ namespace ShanghaiEnvironmentalTechnology
/// <summary>
/// 保存记录到数据库
/// </summary>
private void SaveRecordToDatabase(double flow, double pressure, double beginCo2, double endCo2, double co2Added)
private void SaveRecordToDatabase(double flow, double pressure, double beginCo2, double endCo2, double co2Added, bool isEnd = false)
{
try
{
@@ -1230,12 +1255,15 @@ namespace ShanghaiEnvironmentalTechnology
beginCo2 = Math.Round(beginCo2, 2);
endCo2 = Math.Round(endCo2, 2);
co2Added = Math.Round(co2Added, 2);
int isEnded= isEnd ? 1 : 0;
using (var conn = new SQLiteConnection(CSConstant.DbConnectionString))
{
conn.Open();
string insertSql = @"
INSERT INTO CO2(Flow, Pressure, BeginCO2, EndCO2, CO2Added, RecordTime)
VALUES (@Flow, @Pressure, @BeginCO2, @EndCO2, @CO2Added, @RecordTime);";
INSERT INTO CO2(Flow, Pressure, BeginCO2, EndCO2, CO2Added, RecordTime,isEnd)
VALUES (@Flow, @Pressure, @BeginCO2, @EndCO2, @CO2Added, @RecordTime,"+ isEnded + ");";
using (var cmd = new SQLiteCommand(insertSql, conn))
{
cmd.Parameters.AddWithValue("@Flow", flow);
@@ -1514,5 +1542,30 @@ namespace ShanghaiEnvironmentalTechnology
{
}
}
private async void CaptureModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (sender == null) return;
var comboBox = sender as ComboBox;
if (comboBox == null) return;
var selectedItem = comboBox.SelectedItem as ComboBoxItem;
if (selectedItem == null) return;
var content = selectedItem.Content?.ToString();
if (string.IsNullOrEmpty(content)) return;
if (_modbusMaster == null) return;
switch (content)
{
case "自定义":
case "customize":
await _modbusMaster?.WriteSingleRegisterAsync(0x01, 30, 1);
break;
case "YY0671":
await _modbusMaster?.WriteSingleRegisterAsync(0x01, 30, 0);
break;
default:
return;
}
}
}
}