blob: 144e4a4c83c04d7c473f42c8cc192cb15019ab96 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.DispenserAnalyzer.UI.Analysis;
using Tango.DispenserAnalyzer.UI.Models;
namespace Tango.DispenserAnalyzer.UI.Analyzers
{
[Analyzer("seal")]
public class SealingAnalyzer : IAnalyzer
{
public Task<List<IAnalyzerResult>> Process(List<DispenserSample> csvRows)
{
return Task.Factory.StartNew<List<IAnalyzerResult>>(() =>
{
List<IAnalyzerResult> results = new List<IAnalyzerResult>();
List<DispenserSample> commands = csvRows.Where(x => x.Command!= null && x.Command.ToLower().Contains("label")).ToList< DispenserSample>();
SealingAnalyzerResult result = new SealingAnalyzerResult();
var pairs = commands.Select((x, i) => new { Index = i, Value = x }).GroupBy(x => x.Index /2).Select(x => x.Select(v => v.Value).ToList()).ToList();
//start range of test
if (pairs.Count > 0 && pairs[0].Count > 1)
{
List<DispenserSample> rangeTestValues = csvRows.Where(x => x.Index > pairs[0][0].Index && x.Index < pairs[0][1].Index).ToList();
result.AverageStartTestValue = rangeTestValues.Average(t => t.Pressure);
}
//end range of test
if (pairs.Count > 1 && pairs[1].Count > 1)
{
List<DispenserSample> rangeTestValues = csvRows.Where(x => x.Index > pairs[1][0].Index && x.Index < pairs[1][1].Index).ToList();
result.AverageEndTestValue = rangeTestValues.Average(t => t.Pressure); ;
}
result.AbsoluteTestValue = Math.Abs(result.AverageEndTestValue - result.AverageStartTestValue);
result.Result = result.AbsoluteTestValue < 8 ? AnalyzerResultValue.Passed : AnalyzerResultValue.Failed;
results.Add(result);
return results;
});
}
}
public class SealingAnalyzerResult : AnalyzerResultBase
{
[Description("Average Start Test Value")]
public double AverageStartTestValue { get; set; }
[Description("Average End Test Value")]
public double AverageEndTestValue { get; set; }
[Description("Absolute Value")]
public double AbsoluteTestValue { get; set; }
public SealingAnalyzerResult()
{
AverageStartTestValue = 0.0;
AverageEndTestValue = 0.0;
AbsoluteTestValue = 0.0;
Result = AnalyzerResultValue.Undetermined;
}
}
}
|