132 lines
4.8 KiB
C#
132 lines
4.8 KiB
C#
using System.Text;
|
|
|
|
namespace Adaptation.FileHandlers.csv;
|
|
|
|
public class Calibration
|
|
{
|
|
|
|
#nullable disable
|
|
|
|
public string NumberOfCalibrationSets { get; set; }
|
|
public List<DataSet> DataSets { get; set; }
|
|
|
|
#nullable enable
|
|
#pragma warning disable CA1834
|
|
|
|
internal static Calibration? GetCalibration(string[] lines, int start, int stop)
|
|
{
|
|
Calibration? result;
|
|
string first;
|
|
DataSet dataSet;
|
|
Position position;
|
|
string[] segments;
|
|
int? thirdStart = null;
|
|
int? secondStart = null;
|
|
List<Position> positions;
|
|
List<string> values = new();
|
|
List<DataSet> dataSets = new();
|
|
StringBuilder stringBuilder = new();
|
|
for (int i = start; i < stop; i++)
|
|
{
|
|
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
|
|
first = segments.First();
|
|
if (first == "DataSet:")
|
|
{
|
|
secondStart = i + 1;
|
|
break;
|
|
}
|
|
_ = stringBuilder.Append(first).Append(",");
|
|
if (segments.Length > 1)
|
|
values.Add(segments[1]);
|
|
else
|
|
values.Add(string.Empty);
|
|
}
|
|
string header = "Number of Calibration Sets,";
|
|
if (secondStart is null || stringBuilder.Length != header.Length || stringBuilder.ToString() != header)
|
|
result = null;
|
|
else
|
|
{
|
|
result = new()
|
|
{
|
|
NumberOfCalibrationSets = values[0],
|
|
DataSets = dataSets,
|
|
};
|
|
for (int x = 0; x < int.MaxValue; x++)
|
|
{
|
|
values.Clear();
|
|
_ = stringBuilder.Clear();
|
|
if (secondStart is null)
|
|
break;
|
|
for (int i = secondStart.Value; i < stop; i++)
|
|
{
|
|
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
|
|
first = segments.First();
|
|
if (first == "Resistivity(ohm-cm)")
|
|
{
|
|
thirdStart = i + 1;
|
|
break;
|
|
}
|
|
if (first == " Sample Set:")
|
|
continue;
|
|
_ = stringBuilder.Append(first).Append(",");
|
|
if (segments.Length > 1)
|
|
values.Add(segments[1]);
|
|
else
|
|
values.Add(string.Empty);
|
|
}
|
|
secondStart = null;
|
|
header = "Operator,Date & Time,Finish,Orientation,North Probe ID,South Probe ID,Polarity,Contact Radius (µm),Probe Spacing (µm),Load (gm),X Step (µm),Name,Plate ID,Type,Points per Sample,Number of Pairs,";
|
|
if (thirdStart is null || stringBuilder.Length != header.Length || stringBuilder.ToString() != header)
|
|
result = null;
|
|
else
|
|
{
|
|
positions = new();
|
|
dataSet = new()
|
|
{
|
|
Operator = values[0],
|
|
DateTime = values[1],
|
|
Finish = values[2],
|
|
Orientation = values[3],
|
|
NorthProbeID = values[4],
|
|
SouthProbeID = values[5],
|
|
Polarity = values[6],
|
|
ContactRadius = values[7],
|
|
ProbeSpacing = values[8],
|
|
Load = values[9],
|
|
XStep = values[10],
|
|
Name = values[11],
|
|
PlateId = values[12],
|
|
Type = values[13],
|
|
PointsPerSample = values[14],
|
|
NumberOfPairs = values[15],
|
|
Positions = positions,
|
|
};
|
|
dataSets.Add(dataSet);
|
|
for (int i = thirdStart.Value; i < stop; i++)
|
|
{
|
|
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
|
|
first = segments.First();
|
|
if (first == "DataSet:")
|
|
{
|
|
secondStart = i + 1;
|
|
break;
|
|
}
|
|
if (segments.Length < 5)
|
|
continue;
|
|
position = new()
|
|
{
|
|
Resistivity = segments[0],
|
|
Resistance = segments[1],
|
|
PercentStandardDeviation = segments[2],
|
|
Number = segments[3],
|
|
Name = segments[4],
|
|
};
|
|
positions.Add(position);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
} |