Waits 15sec after setting the initial flow before detection starts
This commit is contained in:
parent
fd2db3e229
commit
a597da1e18
@ -205,6 +205,8 @@ namespace TBF.BenchControl.TestMethods.CombinedWithDetection
|
||||
bool targetReached = false;
|
||||
float detectedFlow = 0;
|
||||
|
||||
int detectionStartTime = StateMachine.Time;
|
||||
|
||||
do
|
||||
{
|
||||
//--------------------------------
|
||||
@ -247,67 +249,70 @@ namespace TBF.BenchControl.TestMethods.CombinedWithDetection
|
||||
pulseFreqsForDetection[0] = (float)diff / (float)(time - lastTime);
|
||||
lastTime = StateMachine.Time;
|
||||
|
||||
if ((flowsForDetection[0] > 0) && (flowsForDetection[DetectionBufferSize - 1] > 0))
|
||||
{
|
||||
float[] flowBefore = new float[DetectionKernelSize];
|
||||
float[] flowAfter = new float[DetectionKernelSize];
|
||||
float[] freqBefore = new float[DetectionKernelSize];
|
||||
float[] freqAfter = new float[DetectionKernelSize];
|
||||
for (int i = 0; i < DetectionKernelSize; i++)
|
||||
{
|
||||
flowBefore[i] = flowsForDetection[DetectionBufferSize - DetectionKernelSize + i];
|
||||
freqBefore[i] = pulseFreqsForDetection[DetectionBufferSize - DetectionKernelSize + i];
|
||||
flowAfter[i] = flowsForDetection[i];
|
||||
freqAfter[i] = pulseFreqsForDetection[i];
|
||||
}
|
||||
Array.Sort(flowBefore);
|
||||
Array.Sort(flowAfter);
|
||||
Array.Sort(freqBefore);
|
||||
Array.Sort(freqAfter);
|
||||
flowBefore[0] = 0;
|
||||
flowAfter[0] = 0;
|
||||
//freqBefore[0] = 0;
|
||||
//freqAfter[0] = 0;
|
||||
flowBefore[DetectionKernelSize - 1] = 0;
|
||||
flowAfter[DetectionKernelSize - 1] = 0;
|
||||
//freqBefore[DetectionKernelSize - 1] = 0;
|
||||
//freqAfter[DetectionKernelSize - 1] = 0;
|
||||
float aveFlowBefore = 0;
|
||||
float aveFlowAfter = 0;
|
||||
float aveFreqBefore = 0;
|
||||
float aveFreqAfter = 0;
|
||||
foreach (var f in flowBefore) aveFlowBefore += f;
|
||||
foreach (var f in flowAfter) aveFlowAfter += f;
|
||||
foreach (var f in freqBefore) aveFreqBefore += f;
|
||||
foreach (var f in freqAfter) aveFreqAfter += f;
|
||||
aveFlowBefore /= (float)(DetectionKernelSize - 2);
|
||||
aveFlowAfter /= (float)(DetectionKernelSize - 2);
|
||||
aveFreqBefore /= (float)(DetectionKernelSize);
|
||||
aveFreqAfter /= (float)(DetectionKernelSize);
|
||||
if (StateMachine.Time - detectionStartTime > 15)
|
||||
{
|
||||
if ((flowsForDetection[0] > 0) && (flowsForDetection[DetectionBufferSize - 1] > 0))
|
||||
{
|
||||
float[] flowBefore = new float[DetectionKernelSize];
|
||||
float[] flowAfter = new float[DetectionKernelSize];
|
||||
float[] freqBefore = new float[DetectionKernelSize];
|
||||
float[] freqAfter = new float[DetectionKernelSize];
|
||||
for (int i = 0; i < DetectionKernelSize; i++)
|
||||
{
|
||||
flowBefore[i] = flowsForDetection[DetectionBufferSize - DetectionKernelSize + i];
|
||||
freqBefore[i] = pulseFreqsForDetection[DetectionBufferSize - DetectionKernelSize + i];
|
||||
flowAfter[i] = flowsForDetection[i];
|
||||
freqAfter[i] = pulseFreqsForDetection[i];
|
||||
}
|
||||
Array.Sort(flowBefore);
|
||||
Array.Sort(flowAfter);
|
||||
Array.Sort(freqBefore);
|
||||
Array.Sort(freqAfter);
|
||||
flowBefore[0] = 0;
|
||||
flowAfter[0] = 0;
|
||||
//freqBefore[0] = 0;
|
||||
//freqAfter[0] = 0;
|
||||
flowBefore[DetectionKernelSize - 1] = 0;
|
||||
flowAfter[DetectionKernelSize - 1] = 0;
|
||||
//freqBefore[DetectionKernelSize - 1] = 0;
|
||||
//freqAfter[DetectionKernelSize - 1] = 0;
|
||||
float aveFlowBefore = 0;
|
||||
float aveFlowAfter = 0;
|
||||
float aveFreqBefore = 0;
|
||||
float aveFreqAfter = 0;
|
||||
foreach (var f in flowBefore) aveFlowBefore += f;
|
||||
foreach (var f in flowAfter) aveFlowAfter += f;
|
||||
foreach (var f in freqBefore) aveFreqBefore += f;
|
||||
foreach (var f in freqAfter) aveFreqAfter += f;
|
||||
aveFlowBefore /= (float)(DetectionKernelSize - 2);
|
||||
aveFlowAfter /= (float)(DetectionKernelSize - 2);
|
||||
aveFreqBefore /= (float)(DetectionKernelSize);
|
||||
aveFreqAfter /= (float)(DetectionKernelSize);
|
||||
|
||||
UiBridge.Bridge.OnLog(this, string.Format("time={0}, flow{1}, aveFlowB={2}, aveFlowA={3}, pulseFreq={4}, aveFreqB={5}, aveFreqA={6}\r\n",
|
||||
time - startTime,
|
||||
flowsForDetection[0].ToString("F2"),
|
||||
aveFlowBefore.ToString("F2"),
|
||||
aveFlowAfter.ToString("F2"),
|
||||
pulseFreqsForDetection[0].ToString("F2"),
|
||||
aveFreqBefore.ToString("F2"),
|
||||
aveFreqAfter.ToString("F2")));
|
||||
|
||||
//detectedFlow = (aveFlowBefore + aveFlowAfter) / 2.0f;
|
||||
detectedFlow = aveFlowBefore;
|
||||
UiBridge.Bridge.OnLog(this, string.Format("time={0}, flow{1}, aveFlowB={2}, aveFlowA={3}, pulseFreq={4}, aveFreqB={5}, aveFreqA={6}\r\n",
|
||||
time - startTime,
|
||||
flowsForDetection[0].ToString("F2"),
|
||||
aveFlowBefore.ToString("F2"),
|
||||
aveFlowAfter.ToString("F2"),
|
||||
pulseFreqsForDetection[0].ToString("F2"),
|
||||
aveFreqBefore.ToString("F2"),
|
||||
aveFreqAfter.ToString("F2")));
|
||||
|
||||
if (rvPulse > 0)
|
||||
{
|
||||
detected = (aveFreqAfter < aveFreqBefore * (1.0f - testParams.DetectionThreshold));
|
||||
targetReached = ((aveFlowAfter + aveFlowBefore) / 2.0f) > testParams.TargetQ;
|
||||
}
|
||||
else
|
||||
{
|
||||
detected = (aveFreqAfter > aveFreqBefore * (1.0f + testParams.DetectionThreshold));
|
||||
targetReached = ((aveFlowAfter + aveFlowBefore) / 2.0f) < testParams.TargetQ;
|
||||
}
|
||||
}
|
||||
//detectedFlow = (aveFlowBefore + aveFlowAfter) / 2.0f;
|
||||
detectedFlow = aveFlowBefore;
|
||||
|
||||
if (rvPulse > 0)
|
||||
{
|
||||
detected = (aveFreqAfter < aveFreqBefore * (1.0f - testParams.DetectionThreshold));
|
||||
targetReached = ((aveFlowAfter + aveFlowBefore) / 2.0f) > testParams.TargetQ;
|
||||
}
|
||||
else
|
||||
{
|
||||
detected = (aveFreqAfter > aveFreqBefore * (1.0f + testParams.DetectionThreshold));
|
||||
targetReached = ((aveFlowAfter + aveFlowBefore) / 2.0f) < testParams.TargetQ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
while (!detected && !targetReached);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user