新增液位红色判断
This commit is contained in:
@@ -55,6 +55,7 @@ namespace 全自动水压检测仪
|
|||||||
// 温度模式状态跟踪(用于防抖优化)
|
// 温度模式状态跟踪(用于防抖优化)
|
||||||
private bool _lastHighTempMode = false;
|
private bool _lastHighTempMode = false;
|
||||||
private bool _lastLowTempMode = false;
|
private bool _lastLowTempMode = false;
|
||||||
|
private bool _liquidLevelStopIssued = false;
|
||||||
private Panel[] _normalTempLevelBarSegments = Array.Empty<Panel>();
|
private Panel[] _normalTempLevelBarSegments = Array.Empty<Panel>();
|
||||||
private Panel[] _highTempLevelBarSegments = Array.Empty<Panel>();
|
private Panel[] _highTempLevelBarSegments = Array.Empty<Panel>();
|
||||||
|
|
||||||
@@ -265,6 +266,41 @@ namespace 全自动水压检测仪
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool IsLiquidLevelAlertState(bool sensorA, bool sensorB)
|
||||||
|
{
|
||||||
|
return (!sensorA && !sensorB) || (sensorA && sensorB);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsAnyLiquidLevelBarInAlert()
|
||||||
|
{
|
||||||
|
bool[] normalLow = _modbusMaster?.ReadCoils(1, 10042, 1);
|
||||||
|
bool[] normalHigh = _modbusMaster?.ReadCoils(1, 10043, 1);
|
||||||
|
bool[] highLow = _modbusMaster?.ReadCoils(1, 10040, 1);
|
||||||
|
bool[] highHigh = _modbusMaster?.ReadCoils(1, 10041, 1);
|
||||||
|
|
||||||
|
bool normalAlert = TryGetCoilValue(normalLow, out bool normalSensorA) &&
|
||||||
|
TryGetCoilValue(normalHigh, out bool normalSensorB) &&
|
||||||
|
IsLiquidLevelAlertState(normalSensorA, normalSensorB);
|
||||||
|
|
||||||
|
bool highAlert = TryGetCoilValue(highLow, out bool highSensorA) &&
|
||||||
|
TryGetCoilValue(highHigh, out bool highSensorB) &&
|
||||||
|
IsLiquidLevelAlertState(highSensorA, highSensorB);
|
||||||
|
|
||||||
|
return normalAlert || highAlert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void StopTestForLiquidLevelAlert(string source)
|
||||||
|
{
|
||||||
|
if (_liquidLevelStopIssued)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_liquidLevelStopIssued = true;
|
||||||
|
Debug.WriteLine($"[{source}] 检测到液位红色报警,执行停止测试");
|
||||||
|
ma?.BtnClickFunctionForNew(Function.ButtonType.复归型, 10082);
|
||||||
|
}
|
||||||
|
|
||||||
private System.Windows.Forms.Timer InitAlarmMonitorTimer()
|
private System.Windows.Forms.Timer InitAlarmMonitorTimer()
|
||||||
{
|
{
|
||||||
var timer = new System.Windows.Forms.Timer()
|
var timer = new System.Windows.Forms.Timer()
|
||||||
@@ -671,13 +707,21 @@ namespace 全自动水压检测仪
|
|||||||
UpdateLiquidLevelStatusBar(_highTempLevelBarSegments, highSensorA, highSensorB, "高温液位");
|
UpdateLiquidLevelStatusBar(_highTempLevelBarSegments, highSensorA, highSensorB, "高温液位");
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 调用停止
|
bool normalAlert = TryGetCoilValue(a, out bool normalStopSensorA) &&
|
||||||
if (a[0] || cc[0])
|
TryGetCoilValue(b, out bool normalStopSensorB) &&
|
||||||
|
IsLiquidLevelAlertState(normalStopSensorA, normalStopSensorB);
|
||||||
|
bool highAlert = TryGetCoilValue(cc, out bool highStopSensorA) &&
|
||||||
|
TryGetCoilValue(d, out bool highStopSensorB) &&
|
||||||
|
IsLiquidLevelAlertState(highStopSensorA, highStopSensorB);
|
||||||
|
|
||||||
|
if (normalAlert || highAlert)
|
||||||
{
|
{
|
||||||
ma?.BtnClickFunctionForNew(Function.ButtonType.复归型, 10082);
|
StopTestForLiquidLevelAlert("ReadAndUpdateData");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_liquidLevelStopIssued = false;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
//// 更新进度条
|
//// 更新进度条
|
||||||
//if (uiProcessBar1 != null && !uiProcessBar1.IsDisposed)
|
//if (uiProcessBar1 != null && !uiProcessBar1.IsDisposed)
|
||||||
@@ -1874,8 +1918,20 @@ namespace 全自动水压检测仪
|
|||||||
//启动测试
|
//启动测试
|
||||||
private void uiButton2_Click(object sender, EventArgs e)
|
private void uiButton2_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
if (IsAnyLiquidLevelBarInAlert())
|
||||||
|
{
|
||||||
|
_liquidLevelStopIssued = false;
|
||||||
|
StopTestForLiquidLevelAlert("uiButton2_Click");
|
||||||
|
SafeInvoke(() =>
|
||||||
|
{
|
||||||
|
MessageBox.Show("液位显示红色,禁止启动测试,请先处理液位状态。", "液位联锁", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ma?.BtnClickFunctionForNew(Function.ButtonType.切换型, 10080);
|
ma?.BtnClickFunctionForNew(Function.ButtonType.切换型, 10080);
|
||||||
isAddTag = false;
|
isAddTag = false;
|
||||||
|
_liquidLevelStopIssued = false;
|
||||||
starttime = DateTime.Now;
|
starttime = DateTime.Now;
|
||||||
// 清除图表数据,开始新的测试
|
// 清除图表数据,开始新的测试
|
||||||
_chartManager?.ClearData();
|
_chartManager?.ClearData();
|
||||||
@@ -1887,6 +1943,7 @@ namespace 全自动水压检测仪
|
|||||||
private void uiButton3_Click(object sender, EventArgs e)
|
private void uiButton3_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ma?.BtnClickFunctionForNew(Function.ButtonType.复归型, 10082);
|
ma?.BtnClickFunctionForNew(Function.ButtonType.复归型, 10082);
|
||||||
|
_liquidLevelStopIssued = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//切换实验模式(优化版本 - 减少延迟和卡顿)
|
//切换实验模式(优化版本 - 减少延迟和卡顿)
|
||||||
|
|||||||
Reference in New Issue
Block a user