更新
This commit is contained in:
@@ -372,16 +372,21 @@ namespace WindowsFormsApp6
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 定时器事件 - 模拟从寄存器读取吸水时间数据
|
||||
/// 定时器事件 - 模拟从寄存器读取数据
|
||||
/// </summary>
|
||||
private void DataTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
// 读取吸水时间(s) - 从寄存器读取
|
||||
// 第1行:读取吸水时间(s) - 从寄存器读取(每个试样读取3次)
|
||||
DataRow timeRow = sampleDataTable.Rows[0];
|
||||
for (int i = 1; i <= currentSampleCount; i++)
|
||||
{
|
||||
double registerValue = ReadRegisterData(i - 1);
|
||||
timeRow[$"试样{i}_1"] = registerValue;
|
||||
double time1 = ReadRegisterData((i - 1) * 3); // 第1次测试
|
||||
double time2 = ReadRegisterData((i - 1) * 3 + 1); // 第2次测试
|
||||
double time3 = ReadRegisterData((i - 1) * 3 + 2); // 第3次测试
|
||||
|
||||
timeRow[$"试样{i}_1"] = time1;
|
||||
timeRow[$"试样{i}_2"] = time2;
|
||||
timeRow[$"试样{i}_3"] = time3;
|
||||
}
|
||||
|
||||
UpdateDisplay();
|
||||
@@ -392,6 +397,7 @@ namespace WindowsFormsApp6
|
||||
/// </summary>
|
||||
private double ReadRegisterData(int registerAddress)
|
||||
{
|
||||
// 吸水时间寄存器:30-34秒
|
||||
return 30 + random.NextDouble() * 4;
|
||||
}
|
||||
|
||||
@@ -411,14 +417,19 @@ namespace WindowsFormsApp6
|
||||
}
|
||||
}
|
||||
|
||||
// 第1行:吸水时间(s)- 试样次数1(系统读数)
|
||||
// 每个试样只在第1次测试时记录吸水时间
|
||||
// 第1行:吸水时间(s)- 系统读数(每个试样3次)
|
||||
DataRow timeRow = sampleDataTable.Rows[0];
|
||||
for (int i = 1; i <= currentSampleCount; i++)
|
||||
{
|
||||
double timeValue = Math.Round(30 + random.NextDouble() * 4, 2); // 30-34秒
|
||||
timeRow[$"试样{i}_1"] = timeValue;
|
||||
// 试样次数2和3不使用,保持为0
|
||||
// 生成3次测试的吸水时间数据(30-34秒,略有差异)
|
||||
double baseTime = 31 + random.NextDouble() * 2; // 基准时间 31-33秒
|
||||
double time1 = Math.Round(baseTime + (random.NextDouble() - 0.5) * 2, 2); // ±1秒
|
||||
double time2 = Math.Round(baseTime + (random.NextDouble() - 0.5) * 2, 2);
|
||||
double time3 = Math.Round(baseTime + (random.NextDouble() - 0.5) * 2, 2);
|
||||
|
||||
timeRow[$"试样{i}_1"] = time1;
|
||||
timeRow[$"试样{i}_2"] = time2;
|
||||
timeRow[$"试样{i}_3"] = time3;
|
||||
}
|
||||
|
||||
// 第2行:吸芯高度(mm)- 手动输入,不自动生成
|
||||
@@ -431,63 +442,12 @@ namespace WindowsFormsApp6
|
||||
RefreshDataGridView();
|
||||
|
||||
ShowMessage($"已生成 {currentSampleCount} 个试样的吸水时间数据\n" +
|
||||
$"- 吸水时间:30-34秒(系统读数)\n" +
|
||||
$"- 吸水时间:30-34秒(系统读数,每个试样3次)\n" +
|
||||
$"- 吸芯高度:请手动输入(每个试样3次测试)\n" +
|
||||
$"- 芯吸速率:输入吸芯高度后自动计算",
|
||||
"模拟数据生成");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成完整的测试数据(包含吸芯高度)- 用于快速测试
|
||||
/// </summary>
|
||||
public void GenerateFullMockData()
|
||||
{
|
||||
// 清空所有行的数据(保持表结构)
|
||||
foreach (DataRow row in sampleDataTable.Rows)
|
||||
{
|
||||
for (int i = 1; i <= currentSampleCount; i++)
|
||||
{
|
||||
row[$"试样{i}_1"] = 0.0;
|
||||
row[$"试样{i}_2"] = 0.0;
|
||||
row[$"试样{i}_3"] = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
// 第1行:吸水时间(s)
|
||||
DataRow timeRow = sampleDataTable.Rows[0];
|
||||
for (int i = 1; i <= currentSampleCount; i++)
|
||||
{
|
||||
double timeValue = Math.Round(30 + random.NextDouble() * 4, 2);
|
||||
timeRow[$"试样{i}_1"] = timeValue;
|
||||
}
|
||||
|
||||
// 第2行:吸芯高度(mm)- 生成测试数据
|
||||
DataRow heightRow = sampleDataTable.Rows[1];
|
||||
for (int i = 1; i <= currentSampleCount; i++)
|
||||
{
|
||||
double baseHeight = 55 + random.NextDouble() * 10;
|
||||
double height1 = Math.Round(baseHeight + (random.NextDouble() - 0.5) * 4, 2);
|
||||
double height2 = Math.Round(baseHeight + (random.NextDouble() - 0.5) * 4, 2);
|
||||
double height3 = Math.Round(baseHeight + (random.NextDouble() - 0.5) * 4, 2);
|
||||
|
||||
heightRow[$"试样{i}_1"] = height1;
|
||||
heightRow[$"试样{i}_2"] = height2;
|
||||
heightRow[$"试样{i}_3"] = height3;
|
||||
}
|
||||
|
||||
// 计算所有行
|
||||
CalculateAllRows();
|
||||
|
||||
// 更新显示
|
||||
RefreshDataGridView();
|
||||
|
||||
ShowMessage($"已生成完整测试数据(包含吸芯高度)\n" +
|
||||
$"- 吸水时间:30-34秒\n" +
|
||||
$"- 吸芯高度:50-70mm(自动生成)\n" +
|
||||
$"- 芯吸速率:已自动计算",
|
||||
"完整测试数据");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新界面显示
|
||||
/// </summary>
|
||||
@@ -535,37 +495,25 @@ namespace WindowsFormsApp6
|
||||
|
||||
for (int i = 1; i <= currentSampleCount; i++)
|
||||
{
|
||||
// 获取吸水时间(试样次数1:系统读数)
|
||||
double time = ConvertToDouble(timeRow[$"试样{i}_1"]);
|
||||
// 获取3次吸水时间测试数据
|
||||
double time1 = ConvertToDouble(timeRow[$"试样{i}_1"]);
|
||||
double time2 = ConvertToDouble(timeRow[$"试样{i}_2"]);
|
||||
double time3 = ConvertToDouble(timeRow[$"试样{i}_3"]);
|
||||
|
||||
// 获取吸芯高度(优先使用对应列的数据)
|
||||
// 试样次数1 → 使用吸芯高度_1
|
||||
// 试样次数2 → 使用吸芯高度_2
|
||||
// 试样次数3 → 使用吸芯高度_3
|
||||
// 获取3次吸芯高度测试数据
|
||||
double height1 = ConvertToDouble(heightRow[$"试样{i}_1"]);
|
||||
double height2 = ConvertToDouble(heightRow[$"试样{i}_2"]);
|
||||
double height3 = ConvertToDouble(heightRow[$"试样{i}_3"]);
|
||||
|
||||
// 计算芯吸速率(使用对应的吸芯高度)
|
||||
double rate = 0;
|
||||
if (time > 0)
|
||||
{
|
||||
// 使用平均吸芯高度或选择非零值
|
||||
double avgHeight = 0;
|
||||
int count = 0;
|
||||
if (height1 > 0) { avgHeight += height1; count++; }
|
||||
if (height2 > 0) { avgHeight += height2; count++; }
|
||||
if (height3 > 0) { avgHeight += height3; count++; }
|
||||
|
||||
if (count > 0)
|
||||
{
|
||||
avgHeight /= count;
|
||||
rate = avgHeight / (time / 60.0);
|
||||
}
|
||||
}
|
||||
// 计算3次芯吸速率(每次测试独立计算,使用对应的时间和高度)
|
||||
double rate1 = (time1 > 0 && height1 > 0) ? height1 / (time1 / 60.0) : 0;
|
||||
double rate2 = (time2 > 0 && height2 > 0) ? height2 / (time2 / 60.0) : 0;
|
||||
double rate3 = (time3 > 0 && height3 > 0) ? height3 / (time3 / 60.0) : 0;
|
||||
|
||||
// 存储到试样次数3(系统计算)
|
||||
rateRow[$"试样{i}_3"] = Math.Round(rate, 2);
|
||||
// 存储到对应的列
|
||||
rateRow[$"试样{i}_1"] = Math.Round(rate1, 2);
|
||||
rateRow[$"试样{i}_2"] = Math.Round(rate2, 2);
|
||||
rateRow[$"试样{i}_3"] = Math.Round(rate3, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user