Eerst werkende build

This commit is contained in:
2024-07-13 00:33:40 +02:00
parent 8c089dc7a6
commit 8f721ce544
3 changed files with 211 additions and 17 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -26,13 +27,21 @@ namespace ScimitarStandardTemplate
public List<spotMeasurement> spotMeasurements = new List<spotMeasurement>();
public List<curveTrace> curveTraces = new List<curveTrace>();
public XmlDocument xmlDocument = new XmlDocument();
public int SpotsCount { get; set; }
public int CurveTracesCount { get; set; }
public string DirectoryPath { get; set; }
public string FilenameWithoutExtension { get; set; }
public List<spotMeasurement> spotsToAdd = new List<spotMeasurement>();
public List<curveTrace> curveTracesToAdd = new List<curveTrace>();
public MainWindow()
{
InitializeComponent();
AddStandardSpots();
AddStandardCurveTraces();
Serialize();
}
private void LoadXmlDocument (string path)
@@ -46,21 +55,193 @@ namespace ScimitarStandardTemplate
throw;
}
}
private void Serialize()
private void AddToDocument()
{
XmlSerializer x = new XmlSerializer(spotMeasurements[0].GetType());
x.Serialize(Console.Out, spotMeasurements[0]);
//x = new XmlSerializer(curveTraces[0].GetType());
//x.Serialize(Console.Out, curveTraces[0]);
SerializeCurveTraces();
SerializeSpots();
SaveDocument();
}
private void SaveDocument()
{
try
{
xmlDocument.Save(DirectoryPath + "Generated_" + FilenameWithoutExtension + ".xml");
}
catch (Exception)
{
throw;
}
}
private void GetSpotsToAdd()
{
var spotNodes = xmlDocument.GetElementsByTagName("spotMeasurement");
List<string> spotMeasurementsNamesInDoc = new List<string>();
foreach (XmlElement spot in spotNodes)
{
string spotName = spot.Attributes.GetNamedItem("name").Value;
spotMeasurementsNamesInDoc.Add(spotName);
}
foreach (spotMeasurement spotMeasurement in spotMeasurements)
{
if (!spotMeasurementsNamesInDoc.Contains(spotMeasurement.name))
{
spotsToAdd.Add(spotMeasurement);
}
}
Console.WriteLine("bla");
}
private void GetCurveTracesToAdd()
{
var curveNodes = xmlDocument.GetElementsByTagName("curveTrace");
List<string> curveTracesNamesInDoc = new List<string>();
foreach (XmlElement curve in curveNodes)
{
string curveName = curve.Attributes.GetNamedItem("name").Value;
curveTracesNamesInDoc.Add(curveName);
}
foreach (curveTrace curveTrace in curveTraces)
{
if (!curveTracesNamesInDoc.Contains(curveTrace.name))
{
curveTracesToAdd.Add(curveTrace);
}
}
}
private void GetNumberOfSpots()
{
var rootNode = xmlDocument.GetElementsByTagName("spots")[0];
var stringCount = rootNode.Attributes.GetNamedItem("count").Value;
this.SpotsCount = Int16.Parse(stringCount);
}
private void GetNumberOfCurveTraces()
{
var rootNode = xmlDocument.GetElementsByTagName("curveTraces")[0];
var stringCurveTracesCount = rootNode.Attributes.GetNamedItem("count").Value;
this.CurveTracesCount = Int16.Parse(stringCurveTracesCount);
}
private void SerializeSpots()
{
if(spotsToAdd.Count > 0)
{
XmlSerializer x = new XmlSerializer(spotsToAdd[0].GetType());
var rootNode = xmlDocument.GetElementsByTagName("spots")[0];
int totalCount = spotsToAdd.Count + SpotsCount;
rootNode.Attributes.GetNamedItem("count").Value = totalCount.ToString();
var nav = rootNode.CreateNavigator();
var emptyNamepsaces = new XmlSerializerNamespaces(new[] {XmlQualifiedName.Empty});
using (var writer = nav.AppendChild())
{
var serializer = new XmlSerializer(spotsToAdd[0].GetType());
writer.WriteWhitespace("");
foreach (var spot in spotsToAdd)
{
serializer.Serialize(writer, spot, emptyNamepsaces);
}
writer.Close();
}
}
}
private void SerializeCurveTraces()
{
if (curveTracesToAdd.Count > 0)
{
XmlSerializer x = new XmlSerializer(spotsToAdd[0].GetType());
var rootNode = xmlDocument.GetElementsByTagName("curveTraces")[0];
int totalCount = curveTracesToAdd.Count + CurveTracesCount;
rootNode.Attributes.GetNamedItem("count").Value = totalCount.ToString();
var nav = rootNode.CreateNavigator();
var emptyNamepsaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
using (var writer = nav.AppendChild())
{
var serializer = new XmlSerializer(curveTracesToAdd[0].GetType());
writer.WriteWhitespace("");
foreach (var curve in curveTracesToAdd)
{
serializer.Serialize(writer, curve, emptyNamepsaces);
}
writer.Close();
}
}
}
private void AddStandardCurveTraces()
{
var curveTrace1 = new curveTrace()
{
name = "-10uA..+10uA;Steps:51;Limit:2V",
settlingTime = "0.01",
supplyName = "MKx-style (30V/5A)",
limit = "2",
forceType = "Current",
percentageOfLineCycle = "_10_",
compareAlgorithm = "Percentage",
maxVoltage = "10",
minVoltage = "10",
maxCurrent = "10",
minCurrent = "10",
voltageAutoRange = "false",
currentAutoRange = "false",
start = "-0.00001",
stop = "0.00001",
stepCount = "51",
initialSettlingTime = "0.01",
stepSettlingTIme = "0.002",
selfChecks = "OpenCircuit, ShortToGround"
};
var curveTrace2 = new curveTrace()
{
name = "-100uA..+100uA;Steps:51;Limit:2V",
settlingTime = "0.01",
supplyName = "MKx-style (30V/5A)",
limit = "2",
forceType = "Current",
percentageOfLineCycle = "_10_",
compareAlgorithm = "Percentage",
maxVoltage = "10",
minVoltage = "10",
maxCurrent = "10",
minCurrent = "10",
voltageAutoRange = "false",
currentAutoRange = "false",
start = "-0.0001",
stop = "0.0001",
stepCount = "51",
initialSettlingTime = "0.01",
stepSettlingTIme = "0.002",
selfChecks = "OpenCircuit, ShortToGround"
};
var curveTrace3 = new curveTrace()
{
name = "-1mA..+1mA;Steps:51;Limit:2V",
desc = "",
settlingTime = "0.01",
supplyName = "MKx-style (30V/5A)",
limit = "2",
@@ -80,8 +261,9 @@ namespace ScimitarStandardTemplate
stepSettlingTIme = "0.002",
selfChecks = "OpenCircuit, ShortToGround"
};
this.curveTraces.Add(curveTrace1);
this.curveTraces.Add(curveTrace2);
this.curveTraces.Add(curveTrace3);
}
@@ -90,7 +272,6 @@ namespace ScimitarStandardTemplate
var spotMeasurement1 = new spotMeasurement()
{
name = "-10uA; Limit: 2V",
desc = "",
settlingTime = "0.003",
supplyName = "MKx-style (30V/5A)",
limit = "2",
@@ -110,7 +291,6 @@ namespace ScimitarStandardTemplate
var spotMeasurement2 = new spotMeasurement()
{
name = "+10uA; Limit: 2V",
desc = "",
settlingTime = "0.003",
supplyName = "MKx-style (30V/5A)",
limit = "2",
@@ -130,7 +310,6 @@ namespace ScimitarStandardTemplate
var spotMeasurement3 = new spotMeasurement()
{
name = "-1mA; Limit: 2V (SHORT/R)",
desc = "",
settlingTime = "0.003",
supplyName = "MKx-style (30V/5A)",
limit = "2",
@@ -148,13 +327,21 @@ namespace ScimitarStandardTemplate
};
spotMeasurements.Add(spotMeasurement1);
//spotMeasurements.Add(spotMeasurement2);
//spotMeasurements.Add(spotMeasurement3);
spotMeasurements.Add(spotMeasurement2);
spotMeasurements.Add(spotMeasurement3);
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
OpenFileBrowser();
LoadXmlDocument(FileName);
GetNumberOfSpots();
GetNumberOfCurveTraces();
GetSpotsToAdd();
GetCurveTracesToAdd();
AddToDocument();
}
private void OpenFileBrowser ()
@@ -163,8 +350,8 @@ namespace ScimitarStandardTemplate
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
// Set filter for file extension and default file extension
dlg.DefaultExt = ".txt";
dlg.Filter = "Text documents (.txt)|*.txt";
dlg.DefaultExt = ".xml";
dlg.Filter = "xml documents (.xml)|*.xml";
// Display OpenFileDialog by calling ShowDialog method
Nullable<bool> result = dlg.ShowDialog();
@@ -175,6 +362,9 @@ namespace ScimitarStandardTemplate
// Open document
string filename = dlg.FileName;
this.FileName = filename;
this.DirectoryPath = System.IO.Path.GetDirectoryName(dlg.FileName);
this.FilenameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(dlg.FileName);
Console.WriteLine(FilenameWithoutExtension);
}
}
}

View File

@@ -40,7 +40,7 @@ namespace ScimitarStandardTemplate
public ParametricOperation()
{
this.desc = "Automatic Generated";
}
}
}

View File

@@ -14,12 +14,16 @@ namespace ScimitarStandardTemplate
[XmlElement("spot")]
public spot[] spots { get; set; }
//public int[] nee;
public spotMeasurement()
{
}
public void Add()
{
}
}
public class spot