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;
|
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);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user