Waits 15sec after setting the initial flow before detection starts

This commit is contained in:
Milan Hanajik 2014-08-01 10:54:38 +02:00
parent fd2db3e229
commit a597da1e18

View File

@ -205,6 +205,8 @@ namespace TBF.BenchControl.TestMethods.CombinedWithDetection
bool targetReached = false; bool targetReached = false;
float detectedFlow = 0; float detectedFlow = 0;
int detectionStartTime = StateMachine.Time;
do do
{ {
//-------------------------------- //--------------------------------
@ -247,67 +249,70 @@ namespace TBF.BenchControl.TestMethods.CombinedWithDetection
pulseFreqsForDetection[0] = (float)diff / (float)(time - lastTime); pulseFreqsForDetection[0] = (float)diff / (float)(time - lastTime);
lastTime = StateMachine.Time; lastTime = StateMachine.Time;
if ((flowsForDetection[0] > 0) && (flowsForDetection[DetectionBufferSize - 1] > 0)) if (StateMachine.Time - detectionStartTime > 15)
{ {
float[] flowBefore = new float[DetectionKernelSize]; if ((flowsForDetection[0] > 0) && (flowsForDetection[DetectionBufferSize - 1] > 0))
float[] flowAfter = new float[DetectionKernelSize]; {
float[] freqBefore = new float[DetectionKernelSize]; float[] flowBefore = new float[DetectionKernelSize];
float[] freqAfter = new float[DetectionKernelSize]; float[] flowAfter = new float[DetectionKernelSize];
for (int i = 0; i < DetectionKernelSize; i++) float[] freqBefore = new float[DetectionKernelSize];
{ float[] freqAfter = new float[DetectionKernelSize];
flowBefore[i] = flowsForDetection[DetectionBufferSize - DetectionKernelSize + i]; for (int i = 0; i < DetectionKernelSize; i++)
freqBefore[i] = pulseFreqsForDetection[DetectionBufferSize - DetectionKernelSize + i]; {
flowAfter[i] = flowsForDetection[i]; flowBefore[i] = flowsForDetection[DetectionBufferSize - DetectionKernelSize + i];
freqAfter[i] = pulseFreqsForDetection[i]; freqBefore[i] = pulseFreqsForDetection[DetectionBufferSize - DetectionKernelSize + i];
} flowAfter[i] = flowsForDetection[i];
Array.Sort(flowBefore); freqAfter[i] = pulseFreqsForDetection[i];
Array.Sort(flowAfter); }
Array.Sort(freqBefore); Array.Sort(flowBefore);
Array.Sort(freqAfter); Array.Sort(flowAfter);
flowBefore[0] = 0; Array.Sort(freqBefore);
flowAfter[0] = 0; Array.Sort(freqAfter);
//freqBefore[0] = 0; flowBefore[0] = 0;
//freqAfter[0] = 0; flowAfter[0] = 0;
flowBefore[DetectionKernelSize - 1] = 0; //freqBefore[0] = 0;
flowAfter[DetectionKernelSize - 1] = 0; //freqAfter[0] = 0;
//freqBefore[DetectionKernelSize - 1] = 0; flowBefore[DetectionKernelSize - 1] = 0;
//freqAfter[DetectionKernelSize - 1] = 0; flowAfter[DetectionKernelSize - 1] = 0;
float aveFlowBefore = 0; //freqBefore[DetectionKernelSize - 1] = 0;
float aveFlowAfter = 0; //freqAfter[DetectionKernelSize - 1] = 0;
float aveFreqBefore = 0; float aveFlowBefore = 0;
float aveFreqAfter = 0; float aveFlowAfter = 0;
foreach (var f in flowBefore) aveFlowBefore += f; float aveFreqBefore = 0;
foreach (var f in flowAfter) aveFlowAfter += f; float aveFreqAfter = 0;
foreach (var f in freqBefore) aveFreqBefore += f; foreach (var f in flowBefore) aveFlowBefore += f;
foreach (var f in freqAfter) aveFreqAfter += f; foreach (var f in flowAfter) aveFlowAfter += f;
aveFlowBefore /= (float)(DetectionKernelSize - 2); foreach (var f in freqBefore) aveFreqBefore += f;
aveFlowAfter /= (float)(DetectionKernelSize - 2); foreach (var f in freqAfter) aveFreqAfter += f;
aveFreqBefore /= (float)(DetectionKernelSize); aveFlowBefore /= (float)(DetectionKernelSize - 2);
aveFreqAfter /= (float)(DetectionKernelSize); 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", UiBridge.Bridge.OnLog(this, string.Format("time={0}, flow{1}, aveFlowB={2}, aveFlowA={3}, pulseFreq={4}, aveFreqB={5}, aveFreqA={6}\r\n",
time - startTime, time - startTime,
flowsForDetection[0].ToString("F2"), flowsForDetection[0].ToString("F2"),
aveFlowBefore.ToString("F2"), aveFlowBefore.ToString("F2"),
aveFlowAfter.ToString("F2"), aveFlowAfter.ToString("F2"),
pulseFreqsForDetection[0].ToString("F2"), pulseFreqsForDetection[0].ToString("F2"),
aveFreqBefore.ToString("F2"), aveFreqBefore.ToString("F2"),
aveFreqAfter.ToString("F2"))); aveFreqAfter.ToString("F2")));
//detectedFlow = (aveFlowBefore + aveFlowAfter) / 2.0f;
detectedFlow = aveFlowBefore;
if (rvPulse > 0) //detectedFlow = (aveFlowBefore + aveFlowAfter) / 2.0f;
{ detectedFlow = aveFlowBefore;
detected = (aveFreqAfter < aveFreqBefore * (1.0f - testParams.DetectionThreshold));
targetReached = ((aveFlowAfter + aveFlowBefore) / 2.0f) > testParams.TargetQ; if (rvPulse > 0)
} {
else detected = (aveFreqAfter < aveFreqBefore * (1.0f - testParams.DetectionThreshold));
{ targetReached = ((aveFlowAfter + aveFlowBefore) / 2.0f) > testParams.TargetQ;
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); while (!detected && !targetReached);