209 lines
5.9 KiB
C#
209 lines
5.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms.DataVisualization.Charting;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
|
|
namespace xmlserializetest
|
|
{
|
|
public partial class Form1 : Form
|
|
{
|
|
List<Result> docs = new List<Result>();
|
|
List<Res> groupData = new List<Res>();
|
|
List<Res> pinData = new List<Res>();
|
|
List<string> groups = new List<string>();
|
|
List<string> pins = new List<string>();
|
|
List<string> tests = new List<string>();
|
|
|
|
public Form1()
|
|
{
|
|
InitializeComponent();
|
|
Main();
|
|
}
|
|
|
|
public void Main()
|
|
{
|
|
//const string FILENAME = @"d:\result.xml";
|
|
//XmlReaderSettings settings = new XmlReaderSettings();
|
|
//settings.IgnoreWhitespace = true;
|
|
//XmlReader reader = XmlReader.Create(FILENAME);
|
|
//XmlSerializer serializer = new XmlSerializer(typeof(Result));
|
|
//Result doc = (Result)serializer.Deserialize(reader);
|
|
|
|
|
|
foreach (var file in Directory.EnumerateFiles(@"D:\curves\", "*.xml"))
|
|
{
|
|
XmlReaderSettings settings = new XmlReaderSettings();
|
|
settings.IgnoreWhitespace = true;
|
|
XmlReader reader = XmlReader.Create(file);
|
|
XmlSerializer serializer = new XmlSerializer(typeof(Result));
|
|
Result doc = (Result)serializer.Deserialize(reader);
|
|
docs.Add(doc);
|
|
PrintGroups(doc);
|
|
PrintTests(doc);
|
|
PopulateTests(doc);
|
|
groups.AddRange(GetGroups(doc));
|
|
}
|
|
|
|
|
|
|
|
|
|
groups = groups.Distinct().ToList();
|
|
lbGroups.DataSource = groups;
|
|
|
|
}
|
|
|
|
void PopulateTests(Result doc)
|
|
{
|
|
foreach (var test in doc.ResultHeader.Tests.Test)
|
|
{
|
|
if(test.TestType == "Thermo.CTS.Scimitar.Components.ParametricContainer")
|
|
tests.Add(test.Name);
|
|
}
|
|
|
|
lbTests.DataSource = tests.Distinct().ToList();
|
|
|
|
}
|
|
|
|
public void PlotData(List<Res> data)
|
|
{
|
|
chart1.Series.Clear();
|
|
int i=0;
|
|
foreach (var curve in data)
|
|
{
|
|
i++;
|
|
string name = i.ToString();
|
|
var s = new Series(name);
|
|
s.ChartType = SeriesChartType.Line;
|
|
chart1.Series.Add(s);
|
|
foreach (var vi in curve.Curve.Vi)
|
|
{
|
|
chart1.Series[name].Points.AddXY(vi.v, vi.i);
|
|
}
|
|
}
|
|
chart1.DataBind();
|
|
}
|
|
|
|
void PrintGroups (Result doc)
|
|
{
|
|
foreach (var group in doc.ResultHeader.Groups.Group)
|
|
{
|
|
Console.WriteLine(group.Name);
|
|
foreach (var pin in group.Pin)
|
|
{
|
|
Console.WriteLine("PinName : {0}, desc: {1}",pin.Name,pin.Desc);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
List<string> GetGroups (Result doc)
|
|
{
|
|
List<string> groups = new List<string>();
|
|
|
|
foreach (var group in doc.ResultHeader.Groups.Group)
|
|
{
|
|
Console.WriteLine(group.Name);
|
|
foreach (var pin in group.Pin)
|
|
{
|
|
groups.Add(pin.Desc);
|
|
}
|
|
|
|
}
|
|
return groups;
|
|
}
|
|
|
|
List<string> GetPinsFromGroups(Result doc)
|
|
{
|
|
List<string> pins = new List<string>();
|
|
|
|
foreach (var group in doc.ResultHeader.Groups.Group)
|
|
{
|
|
var groups = lbGroups.SelectedItems;
|
|
Console.WriteLine(group.Name);
|
|
if (groups.Contains(group.Name))
|
|
{
|
|
foreach (var pin in group.Pin)
|
|
{
|
|
pins.Add(pin.Name);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
return pins.Distinct().ToList();
|
|
}
|
|
|
|
|
|
|
|
void PrintTests ( Result doc)
|
|
{
|
|
foreach ( var test in doc.ResultHeader.Tests.Test)
|
|
{
|
|
Console.WriteLine(test.Name);
|
|
}
|
|
}
|
|
|
|
private void lbGroups_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
groupData.Clear();
|
|
foreach (var doc in docs)
|
|
{
|
|
groups.Clear();
|
|
foreach (var group in lbGroups.SelectedItems)
|
|
{
|
|
groups.Add(group.ToString());
|
|
}
|
|
|
|
List<string> tests = new List<string>();
|
|
foreach (var test in lbTests.SelectedItems)
|
|
{
|
|
tests.Add(test.ToString());
|
|
}
|
|
|
|
groupData.AddRange(doc.DataSection.GetResultsByTestNameAndGroups(tests, groups));
|
|
lbPins.DataSource = GetPinsFromGroups(doc);
|
|
|
|
}
|
|
|
|
PlotData(groupData);
|
|
|
|
|
|
}
|
|
private void PlotPins ()
|
|
{
|
|
pinData.Clear();
|
|
foreach (var doc in docs)
|
|
{
|
|
pins.Clear();
|
|
foreach (var pin in lbPins.SelectedItems)
|
|
{
|
|
pins.Add(pin.ToString());
|
|
}
|
|
|
|
List<string> tests = new List<string>();
|
|
foreach (var test in lbTests.SelectedItems)
|
|
{
|
|
tests.Add(test.ToString());
|
|
}
|
|
|
|
pinData.AddRange(doc.DataSection.GetResultsByTestNameAndPins(tests, pins));
|
|
}
|
|
PlotData(pinData);
|
|
}
|
|
|
|
private void lbPins_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
PlotPins();
|
|
}
|
|
}
|
|
}
|