benchtopparser/BenchtopParser/I28.cs

78 lines
3.4 KiB
C#
Raw Normal View History

2022-07-26 04:22:31 +00:00
using System;
namespace BenchtopParser {
public class I28 {
public static Dictionary<String, ProgramConfig> Load_ProgramConfig(String program_config_value) {
2022-07-26 04:22:31 +00:00
Dictionary<String, ProgramConfig> programConfigs = new Dictionary<String, ProgramConfig>();
ProgramConfig? current = null;
foreach (var line in program_config_value.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) {
2022-07-26 04:22:31 +00:00
var configLine = line.Split("\t").ToList();
if (configLine.Count() < 2) {
2022-07-25 04:16:15 +00:00
throw new Exception("Invalid Program Config, please provide an I28 Program Config file data");
}
2022-07-26 04:22:31 +00:00
configLine.RemoveAt(0); // Remove random hex value
configLine.RemoveAt(0); // Remove L column
if (configLine[0].StartsWith("Start,")) {
2022-07-25 04:10:26 +00:00
// initialize programconfig
current = new ProgramConfig();
2022-07-25 04:10:26 +00:00
continue;
}
2022-07-26 04:22:31 +00:00
if (configLine[0].StartsWith("Stop,")) {
2022-07-25 04:10:26 +00:00
// Short circuit early when stop comes.
if (current != null && current.ProgramNumber != null) {
2022-07-26 04:22:31 +00:00
programConfigs.Add(current.ProgramNumber, current);
}
current = null;
// TODO: What if multiple configs how to handle start and stop?
2022-07-25 04:10:26 +00:00
break;
}
2022-07-26 04:22:31 +00:00
var config = configLine[0].Split(",", 2).ToList();
if (configLine.Count() == 1) {
2022-07-25 04:10:26 +00:00
// Set Program Number
if (current == null) {
throw new Exception("Setting Program Number Before Start. Error In Config");
}
Console.WriteLine(config[1]);
current.ProgramNumber = config[1];
continue;
}
// Skip numbers, keep value
var value = config[1];
2022-07-26 04:22:31 +00:00
var programnumber_group_data = value.Split('\\'); // snake case as its three values
2022-07-25 04:10:26 +00:00
var data = programnumber_group_data[2];
if (data.StartsWith("=")) { continue; /* comment line */ }
var lineConfig = new Configuration();
2022-07-26 04:22:31 +00:00
lineConfig.unit = configLine[1];
lineConfig.type = configLine[2]; //a, c, f, i
var nameValue = data.Split("=");
lineConfig.name = nameValue[0];
lineConfig.value = nameValue[1];
2022-07-25 04:10:26 +00:00
// Deal with this group logic
var group = programnumber_group_data[1];
if (current != null && !current.Group.ContainsKey(group)) {
current.Group.Add(group, new Dictionary<String, Configuration> { { lineConfig.name, lineConfig } });
} else if (current != null) {
current.Group[group].Add(lineConfig.name, lineConfig);
2022-07-25 04:10:26 +00:00
} else {
throw new Exception("Config list is null, something broke");
}
}
// TODO: What if multiple configs how to handle start and stop?
2022-07-26 04:22:31 +00:00
return programConfigs;
2022-07-25 04:10:26 +00:00
}
2022-07-26 04:22:31 +00:00
public static TransducerVerify Load_TransducerVerify(String transducer_verify_value) {
TransducerVerify tv = new TransducerVerify(transducer_verify_value);
return tv;
}
2022-07-25 04:10:26 +00:00
}
}
2022-07-26 04:22:31 +00:00
// TODO: normalize snake or pascal case