First Commit
This commit is contained in:
14
daq_testing/App.config
Normal file
14
daq_testing/App.config
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||
</startup>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
40
daq_testing/DataTableHelper.cs
Normal file
40
daq_testing/DataTableHelper.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WindowsFormsApp5
|
||||
{
|
||||
public static class DataTableHelper
|
||||
{
|
||||
public static DataTable ToDataTable<T>(List<T> items)
|
||||
{
|
||||
var dataTable = new DataTable(typeof(T).Name);
|
||||
|
||||
// Get all properties of the class
|
||||
PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
||||
|
||||
// Create DataTable columns based on properties
|
||||
foreach (var prop in properties)
|
||||
{
|
||||
dataTable.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
|
||||
}
|
||||
|
||||
// Add rows to DataTable
|
||||
foreach (var item in items)
|
||||
{
|
||||
var values = new object[properties.Length];
|
||||
for (int i = 0; i < properties.Length; i++)
|
||||
{
|
||||
values[i] = properties[i].GetValue(item, null);
|
||||
}
|
||||
dataTable.Rows.Add(values);
|
||||
}
|
||||
|
||||
return dataTable;
|
||||
}
|
||||
}
|
||||
}
|
||||
43
daq_testing/FileHandler.cs
Normal file
43
daq_testing/FileHandler.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using daq_testing;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
public class FileHandler
|
||||
{
|
||||
private readonly string filePath;
|
||||
|
||||
public FileHandler(string filePath)
|
||||
{
|
||||
this.filePath = filePath;
|
||||
}
|
||||
|
||||
public BindingList<PslineConfig> LoadData()
|
||||
{
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
var jsonData = File.ReadAllText(filePath);
|
||||
var data = JsonConvert.DeserializeObject<List<PslineConfig>>(jsonData);
|
||||
return new BindingList<PslineConfig>(data ?? new List<PslineConfig>());
|
||||
}
|
||||
return new BindingList<PslineConfig>();
|
||||
}
|
||||
|
||||
public List<PslineConfig> GetPslineConfig()
|
||||
{
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
var jsonData = File.ReadAllText(filePath);
|
||||
var data = JsonConvert.DeserializeObject<List<PslineConfig>>(jsonData);
|
||||
return data;
|
||||
}
|
||||
return new List<PslineConfig>();
|
||||
}
|
||||
public void SaveData(BindingList<PslineConfig> data)
|
||||
{
|
||||
var jsonData = JsonConvert.SerializeObject(data, Formatting.Indented);
|
||||
File.WriteAllText(filePath, jsonData);
|
||||
}
|
||||
}
|
||||
145
daq_testing/Instrument.cs
Normal file
145
daq_testing/Instrument.cs
Normal file
@@ -0,0 +1,145 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Agilent.Agilent34970.Interop;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public class Instrument
|
||||
{
|
||||
|
||||
public Agilent34970 DAQInstrument = new Agilent34970();
|
||||
|
||||
public string ResourceDesc { get; set; }
|
||||
public string InitOptions { get; set; }
|
||||
public bool IdQuery { get; set; }
|
||||
public bool Reset { get; set; }
|
||||
public string ScanList { get; set; }
|
||||
|
||||
public string SerialNumber { get; set; }
|
||||
|
||||
public Instrument()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void CheckCardConfig ()
|
||||
{
|
||||
const int NUMBEROFCARDS = 3;
|
||||
string cardType;
|
||||
|
||||
for (int card = 0; card < NUMBEROFCARDS; card++)
|
||||
{
|
||||
|
||||
cardType = DAQInstrument.System.CardType[0];
|
||||
Console.WriteLine($"Cardtype slot {card}: {cardType}");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public bool InitializeInstrument ()
|
||||
{
|
||||
#if DEBUG
|
||||
this.InitOptions = "QueryInstrStatus=true, Simulate=true, DriverSetup= Model=, Trace=false, TraceName=c:\\temp\\traceOut";
|
||||
#else
|
||||
this.InitOptions = "QueryInstrStatus=true, Simulate=false, DriverSetup= Model=, Trace=false, TraceName=c:\\temp\\traceOut";
|
||||
#endif
|
||||
|
||||
this.IdQuery = true;
|
||||
this.Reset = true;
|
||||
|
||||
try
|
||||
{
|
||||
DAQInstrument.Initialize(ResourceDesc, IdQuery, Reset, InitOptions);
|
||||
GetSerialNumber();
|
||||
//CheckCardConfig();
|
||||
Console.WriteLine("Driver Initialized");
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Console.WriteLine("Cannot Initialize Instrument");
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void GetSerialNumber ()
|
||||
{
|
||||
try
|
||||
{
|
||||
SerialNumber = DAQInstrument.Identity.Description;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
SerialNumber = null;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
public string DummyList()
|
||||
{
|
||||
List<string> myList = new List<string>();
|
||||
string joinedlist;
|
||||
//Sled 1
|
||||
for (int i = 101; i < 139 +1; i++)
|
||||
{
|
||||
myList.Add(i.ToString());
|
||||
}
|
||||
//Sled 2
|
||||
//for (int i = 201; i < 240 + 1; i++)
|
||||
//{
|
||||
// myList.Add(i.ToString());
|
||||
//}
|
||||
//Sled 3
|
||||
//for (int i = 301; i < 340 + 1; i++)
|
||||
//{
|
||||
// myList.Add(i.ToString());
|
||||
//}
|
||||
|
||||
joinedlist = string.Join(",", myList);
|
||||
|
||||
return joinedlist;
|
||||
}
|
||||
|
||||
public void SetScanlist()
|
||||
{
|
||||
//string scanList ="@" + DummyList();
|
||||
//this.ScanList = "@121:140,221:240,321:340";
|
||||
//this.ScanList = "101:120";
|
||||
this.ScanList = ScanList;
|
||||
// Console.WriteLine(String.Format("@{0}",scanList));
|
||||
}
|
||||
|
||||
public void ConfigInstrument()
|
||||
{
|
||||
SetScanlist();
|
||||
DAQInstrument.Voltage.DCVoltage.Configure(ScanList, 10, 0.01);
|
||||
//DAQInstrument.Voltage.DCVoltage.AutoRangeListConfig(ScanList, true);
|
||||
DAQInstrument.Scan.SweepCount = 1;
|
||||
}
|
||||
|
||||
public string[] GetMeasurementByScanList (string scanList)
|
||||
{
|
||||
this.ScanList = scanList;
|
||||
string[] result;
|
||||
DAQInstrument.Scan.Initiate();
|
||||
DAQInstrument.System.WaitForOperationComplete(10000); // Wait for scan to complete
|
||||
try
|
||||
{
|
||||
result = DAQInstrument.Scan.Fetch();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
throw;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
125
daq_testing/MainForm.Designer.cs
generated
Normal file
125
daq_testing/MainForm.Designer.cs
generated
Normal file
@@ -0,0 +1,125 @@
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.panelRight = new System.Windows.Forms.Panel();
|
||||
this.btnInstrument = new System.Windows.Forms.Button();
|
||||
this.btnConfigPslines = new System.Windows.Forms.Button();
|
||||
this.btnMeasure = new System.Windows.Forms.Button();
|
||||
this.btn_MeasureHeader = new System.Windows.Forms.Button();
|
||||
this.btnDMM = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panelRight
|
||||
//
|
||||
this.panelRight.Location = new System.Drawing.Point(190, 12);
|
||||
this.panelRight.Name = "panelRight";
|
||||
this.panelRight.Size = new System.Drawing.Size(1347, 795);
|
||||
this.panelRight.TabIndex = 0;
|
||||
//
|
||||
// btnInstrument
|
||||
//
|
||||
this.btnInstrument.Location = new System.Drawing.Point(12, 12);
|
||||
this.btnInstrument.Name = "btnInstrument";
|
||||
this.btnInstrument.Size = new System.Drawing.Size(134, 51);
|
||||
this.btnInstrument.TabIndex = 1;
|
||||
this.btnInstrument.Text = "INSTRUMENT";
|
||||
this.btnInstrument.UseVisualStyleBackColor = true;
|
||||
this.btnInstrument.Click += new System.EventHandler(this.btnInstrument_Click);
|
||||
//
|
||||
// btnConfigPslines
|
||||
//
|
||||
this.btnConfigPslines.Location = new System.Drawing.Point(12, 69);
|
||||
this.btnConfigPslines.Name = "btnConfigPslines";
|
||||
this.btnConfigPslines.Size = new System.Drawing.Size(134, 51);
|
||||
this.btnConfigPslines.TabIndex = 2;
|
||||
this.btnConfigPslines.Text = "CONFIG PSLINES";
|
||||
this.btnConfigPslines.UseVisualStyleBackColor = true;
|
||||
this.btnConfigPslines.Click += new System.EventHandler(this.btnConfigPslines_Click);
|
||||
//
|
||||
// btnMeasure
|
||||
//
|
||||
this.btnMeasure.Location = new System.Drawing.Point(12, 126);
|
||||
this.btnMeasure.Name = "btnMeasure";
|
||||
this.btnMeasure.Size = new System.Drawing.Size(134, 51);
|
||||
this.btnMeasure.TabIndex = 3;
|
||||
this.btnMeasure.Text = "MEASURE";
|
||||
this.btnMeasure.UseVisualStyleBackColor = true;
|
||||
this.btnMeasure.Click += new System.EventHandler(this.btnMeasure_Click);
|
||||
//
|
||||
// btn_MeasureHeader
|
||||
//
|
||||
this.btn_MeasureHeader.Location = new System.Drawing.Point(12, 183);
|
||||
this.btn_MeasureHeader.Name = "btn_MeasureHeader";
|
||||
this.btn_MeasureHeader.Size = new System.Drawing.Size(134, 51);
|
||||
this.btn_MeasureHeader.TabIndex = 4;
|
||||
this.btn_MeasureHeader.Text = "MEASURE_ HEADER";
|
||||
this.btn_MeasureHeader.UseVisualStyleBackColor = true;
|
||||
this.btn_MeasureHeader.Click += new System.EventHandler(this.btn_MeasureHeader_Click);
|
||||
//
|
||||
// btnDMM
|
||||
//
|
||||
this.btnDMM.Location = new System.Drawing.Point(12, 240);
|
||||
this.btnDMM.Name = "btnDMM";
|
||||
this.btnDMM.Size = new System.Drawing.Size(134, 51);
|
||||
this.btnDMM.TabIndex = 5;
|
||||
this.btnDMM.Text = "DMM";
|
||||
this.btnDMM.UseVisualStyleBackColor = true;
|
||||
this.btnDMM.Click += new System.EventHandler(this.btnDMM_Click);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1443, 817);
|
||||
this.Controls.Add(this.btnDMM);
|
||||
this.Controls.Add(this.btn_MeasureHeader);
|
||||
this.Controls.Add(this.btnMeasure);
|
||||
this.Controls.Add(this.btnConfigPslines);
|
||||
this.Controls.Add(this.btnInstrument);
|
||||
this.Controls.Add(this.panelRight);
|
||||
this.Name = "MainForm";
|
||||
this.Text = "Advanced HTOL Voltage Verifier";
|
||||
this.Load += new System.EventHandler(this.Form1_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panelRight;
|
||||
private System.Windows.Forms.Button btnInstrument;
|
||||
private System.Windows.Forms.Button btnConfigPslines;
|
||||
private System.Windows.Forms.Button btnMeasure;
|
||||
private System.Windows.Forms.Button btn_MeasureHeader;
|
||||
private System.Windows.Forms.Button btnDMM;
|
||||
}
|
||||
}
|
||||
|
||||
784
daq_testing/MainForm.cs
Normal file
784
daq_testing/MainForm.cs
Normal file
@@ -0,0 +1,784 @@
|
||||
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.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
public Instrument DAQ;
|
||||
List<PslineMapping> pslineMapping;
|
||||
List<PslineConfig> pslineConfigs;
|
||||
UserControlMeasure MeasureUserControl = new UserControlMeasure();
|
||||
UserControlPslineConfig PslineConfigUserControl = new UserControlPslineConfig();
|
||||
UserControlInstrument InstrumentUsercontrol = new UserControlInstrument();
|
||||
UserControlMeasureHeader MeasureHeaderUsercontrol = new UserControlMeasureHeader();
|
||||
|
||||
UserControlDMM DMMUserControl = new UserControlDMM();
|
||||
|
||||
public List<PslineMapping> DaqSled1List = new List<PslineMapping>();
|
||||
public List<PslineMapping> DaqSled2List = new List<PslineMapping>();
|
||||
public List<PslineMapping> DaqSled3List = new List<PslineMapping>();
|
||||
|
||||
List<Result> Results = new List<Result>();
|
||||
//public string DataloggerSerial { get; set; }
|
||||
|
||||
|
||||
public List<PslineMapping> MeasuredPositionList = new List<PslineMapping>();
|
||||
public List<PslineMapping> MeasuredHeaderPinsPositionList = new List<PslineMapping>();
|
||||
|
||||
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
btnMeasure.Enabled = false;
|
||||
btnConfigPslines.Enabled = false;
|
||||
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
|
||||
DAQ = new Instrument();
|
||||
GetMapping();
|
||||
GetPsLineConfigFromJson();
|
||||
//GetPsLineConfigFromCsv();
|
||||
//GetDefaultPsLineConfig();
|
||||
|
||||
panelRight.Controls.Add(InstrumentUsercontrol);
|
||||
panelRight.Controls.Add(PslineConfigUserControl);
|
||||
panelRight.Controls.Add(MeasureUserControl);
|
||||
panelRight.Controls.Add(MeasureHeaderUsercontrol);
|
||||
panelRight.Controls.Add(DMMUserControl);
|
||||
|
||||
|
||||
PslineConfigUserControl.Data = pslineConfigs;
|
||||
|
||||
panelRight.Controls[0].Show();
|
||||
panelRight.Controls[1].Hide();
|
||||
panelRight.Controls[2].Hide();
|
||||
panelRight.Controls[3].Hide();
|
||||
panelRight.Controls[4].Hide();
|
||||
|
||||
|
||||
InstrumentUsercontrol.InstrumentConnectButtonClicked += ConnectInstrument;
|
||||
PslineConfigUserControl.UpdateBtnClick += UpdateButton;
|
||||
|
||||
MeasureUserControl.MeasureButtonClick += Measure;
|
||||
MeasureUserControl.ClearAllMeasurementsBtnClick += ClearAllMeasurements;
|
||||
|
||||
MeasureHeaderUsercontrol.MeasureButtonClick += MeasureHeader;
|
||||
MeasureHeaderUsercontrol.ClearAllMeasurementsBtnClick += ClearAllMeasurementsHeader;
|
||||
MeasureHeaderUsercontrol.PopuplateHeaderEvent += PopulateHeaders;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void PopulateHeaders(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
public List<Result> FakeResults()
|
||||
{
|
||||
List<Result> results = new List<Result>();
|
||||
Random random = new Random();
|
||||
for (int i = 1; i < 40; i++)
|
||||
{
|
||||
Result result = new Result() {
|
||||
ID = i,
|
||||
PsLine = random.Next(4)+1,
|
||||
Position = i,
|
||||
TimeStamp = DateTime.Now,
|
||||
Value =(random.NextDouble()+0.1)*2 ,
|
||||
|
||||
};
|
||||
|
||||
results.Add(result);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
public List<Result> FakeResultsHeader()
|
||||
{
|
||||
List<Result> results = new List<Result>();
|
||||
Random random = new Random();
|
||||
for (int i = 1; i < 40; i++)
|
||||
{
|
||||
Result result = new Result()
|
||||
{
|
||||
ID = i,
|
||||
PsLine = random.Next(4) + 1,
|
||||
Position = i,
|
||||
TimeStamp = DateTime.Now,
|
||||
Value = (random.NextDouble() + 0.1) * 2,
|
||||
BiB = MeasureHeaderUsercontrol.BiBID,
|
||||
DriverID = "Simulation Driver",
|
||||
|
||||
};
|
||||
|
||||
results.Add(result);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
private void ConnectInstrument(object sender, EventArgs e)
|
||||
{
|
||||
DAQ.ResourceDesc = InstrumentUsercontrol.VisaAddress;
|
||||
|
||||
if (DAQ.InitializeInstrument())
|
||||
{
|
||||
InstrumentUsercontrol.SetConnectButtonActive();
|
||||
MeasureUserControl.DataloggerSerial = DAQ.SerialNumber;
|
||||
btnConfigPslines.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
InstrumentUsercontrol.SetConnectButtonNonActive();
|
||||
btnConfigPslines.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateButton(object sender, EventArgs e)
|
||||
{
|
||||
btnMeasure.Enabled = true;
|
||||
GetPsLineConfigFromJson();
|
||||
}
|
||||
|
||||
public void Measure(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
PositionListToDataloggerChannels();
|
||||
//var data = DAQ.GetMeasurementByScanList(scanlist);
|
||||
GetDataFromDaq();
|
||||
MeasureUserControl.PopulateVoltage( this.Results);
|
||||
|
||||
|
||||
}
|
||||
public void MeasureHeader( object sender, EventArgs e)
|
||||
{
|
||||
|
||||
var headerList = MeasureHeaderUsercontrol.CheckedItems;
|
||||
HeaderPinsListToDataloggerChannels(headerList);
|
||||
#if DEBUG
|
||||
this.Results = FakeResultsHeader();
|
||||
#else
|
||||
GetDataFromDaqHeader();
|
||||
#endif
|
||||
MeasureHeaderUsercontrol.PopulateVoltage(this.Results);
|
||||
|
||||
}
|
||||
public void ClearAllMeasurements(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show("Are you sure?", "Clear All Measurements", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
//do something
|
||||
foreach (var result in Results)
|
||||
{
|
||||
result.Value = 0.0;
|
||||
}
|
||||
MeasureUserControl.PopulateVoltage(this.Results);
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
//do something else
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
public void ClearAllMeasurementsHeader(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show("Are you sure?", "Clear All Measurements", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
//do something
|
||||
this.Results.Clear();
|
||||
MeasureHeaderUsercontrol.PopulateVoltage(this.Results);
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
//do something else
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
public void GetDataFromDaq()
|
||||
{
|
||||
if (DaqSled1List.Count >=1)
|
||||
{
|
||||
List<string> sled1 = new List<string>();
|
||||
foreach (var item in DaqSled1List)
|
||||
{
|
||||
sled1.Add(item.daqchannel.ToString());
|
||||
}
|
||||
Console.WriteLine("bla");
|
||||
string scanlist = String.Join(",", sled1);
|
||||
DAQ.ScanList = scanlist;
|
||||
DAQ.ConfigInstrument();
|
||||
var datasled1 = DAQ.GetMeasurementByScanList(scanlist);
|
||||
SaveResults(DaqSled1List, datasled1);
|
||||
}
|
||||
|
||||
if (DaqSled2List.Count >= 1)
|
||||
{
|
||||
List<string> sled2 = new List<string>();
|
||||
foreach (var item in DaqSled2List)
|
||||
{
|
||||
sled2.Add(item.daqchannel.ToString());
|
||||
}
|
||||
|
||||
string scanlist = String.Join(",", sled2);
|
||||
DAQ.ScanList = scanlist;
|
||||
DAQ.ConfigInstrument();
|
||||
var datasled2 = DAQ.GetMeasurementByScanList(scanlist);
|
||||
SaveResults(DaqSled2List, datasled2);
|
||||
}
|
||||
|
||||
if (DaqSled3List.Count >= 1)
|
||||
{
|
||||
List<string> sled3 = new List<string>();
|
||||
foreach (var item in DaqSled3List)
|
||||
{
|
||||
sled3.Add(item.daqchannel.ToString());
|
||||
}
|
||||
|
||||
string scanlist = String.Join(",", sled3);
|
||||
DAQ.ScanList = scanlist;
|
||||
DAQ.ConfigInstrument();
|
||||
var datasled3 = DAQ.GetMeasurementByScanList(scanlist);
|
||||
SaveResults(DaqSled3List, datasled3);
|
||||
}
|
||||
|
||||
|
||||
string fileName = string.Format("{0}_Result.json", MeasureUserControl.ProjectNumber);
|
||||
string jsonString = JsonSerializer.Serialize(this.Results);
|
||||
File.WriteAllText(fileName, jsonString);
|
||||
}
|
||||
public void GetDataFromDaqHeaderOld()
|
||||
{
|
||||
if (DaqSled1List.Count >= 1)
|
||||
{
|
||||
List<string> sled1 = new List<string>();
|
||||
foreach (var item in DaqSled1List)
|
||||
{
|
||||
sled1.Add(item.daqchannel.ToString());
|
||||
}
|
||||
Console.WriteLine("bla");
|
||||
string scanlist = String.Join(",", sled1);
|
||||
DAQ.ScanList = scanlist;
|
||||
DAQ.ConfigInstrument();
|
||||
var datasled1 = DAQ.GetMeasurementByScanList(scanlist);
|
||||
SaveResultsHeader(DaqSled1List, datasled1);
|
||||
}
|
||||
|
||||
|
||||
string fileName = string.Format("{0}_Result.json", MeasureUserControl.ProjectNumber);
|
||||
string jsonString = JsonSerializer.Serialize(this.Results);
|
||||
File.WriteAllText(fileName, jsonString);
|
||||
}
|
||||
public void ShowContinueMessageBox()
|
||||
{
|
||||
// Display the message box
|
||||
DialogResult result = MessageBox.Show("Please move header", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Question);
|
||||
|
||||
// Check the result
|
||||
if (result == DialogResult.Yes)
|
||||
{
|
||||
// User clicked Yes
|
||||
MessageBox.Show("You chose to continue.");
|
||||
// Add your logic to continue here
|
||||
}
|
||||
else if (result == DialogResult.No)
|
||||
{
|
||||
// User clicked No
|
||||
MessageBox.Show("You chose not to continue.");
|
||||
// Add your logic for cancellation here
|
||||
}
|
||||
}
|
||||
public void GetDataFromDaqHeader()
|
||||
{
|
||||
if (DaqSled1List.Count >= 1)
|
||||
{
|
||||
List<string> sled1 = new List<string>();
|
||||
foreach (var item in DaqSled1List)
|
||||
{
|
||||
sled1.Add(item.daqchannel.ToString());
|
||||
}
|
||||
//Console.WriteLine("bla");
|
||||
//string scanlist = String.Join(",", sled1);
|
||||
List<string> value = new List<string>();
|
||||
|
||||
|
||||
var maxChannel = DaqSled1List.Max(x => x.position);
|
||||
Console.WriteLine(maxChannel);
|
||||
|
||||
|
||||
|
||||
if (maxChannel>9)
|
||||
{
|
||||
List<PslineMapping> list1 = DaqSled1List.Where(x => x.position <= 9).ToList();
|
||||
List<PslineMapping> list2 = DaqSled1List.Where(x => x.position > 9).ToList();
|
||||
|
||||
foreach (var item in list2)
|
||||
{
|
||||
DAQ.DAQInstrument.Voltage.DCVoltage.AutoRange[item.daqchannel] = true;
|
||||
value.Add(DAQ.DAQInstrument.Measure.DCVoltMeasure(item.daqchannel.ToString(),10, 0.01)[0].ToString());
|
||||
|
||||
|
||||
}
|
||||
|
||||
ShowContinueMessageBox();
|
||||
|
||||
foreach (var item in list1)
|
||||
{
|
||||
DAQ.DAQInstrument.Voltage.DCVoltage.AutoRange[item.daqchannel] = true;
|
||||
value.Add(DAQ.DAQInstrument.Measure.DCVoltMeasure(item.daqchannel.ToString(), 10, 0.01)[0].ToString());
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var item in DaqSled1List)
|
||||
{
|
||||
DAQ.DAQInstrument.Voltage.DCVoltage.AutoRange[item.daqchannel] = true;
|
||||
value.Add(DAQ.DAQInstrument.Measure.DCVoltMeasure(item.daqchannel.ToString(), 10, 0.01)[0].ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
var datasled1 = value.ToArray();
|
||||
SaveResultsHeader(DaqSled1List, datasled1);
|
||||
}
|
||||
|
||||
|
||||
string fileName = string.Format("{0}_Result.json", MeasureUserControl.ProjectNumber);
|
||||
string jsonString = JsonSerializer.Serialize(this.Results);
|
||||
File.WriteAllText(fileName, jsonString);
|
||||
}
|
||||
|
||||
public void SaveResults(List<PslineMapping> DaqSledList, string[] data)
|
||||
{
|
||||
List<PslineMapping> SortedDaqSledList = DaqSledList.OrderBy(o => o.daqchannel).ToList();
|
||||
|
||||
int counter = 0;
|
||||
foreach (var item in SortedDaqSledList)
|
||||
{
|
||||
CheckIfItemExists(item);
|
||||
|
||||
var powerSupplyEnabled = pslineConfigs.Where(x => x.Psline == item.psline).Any(x => x.Enabled);
|
||||
|
||||
if (powerSupplyEnabled)
|
||||
{
|
||||
double measuredVoltage = Convert.ToDouble(data[counter]);
|
||||
//if (Math.Abs(measuredVoltage) < 0.1) { measuredVoltage = 0.0; }
|
||||
|
||||
Result result = new Result()
|
||||
{
|
||||
Position = item.position,
|
||||
PsLine = item.psline,
|
||||
TimeStamp = DateTime.UtcNow,
|
||||
MeasureLocation = MeasureUserControl.MeasurementLocation,
|
||||
BiB = MeasureHeaderUsercontrol.BiBID,
|
||||
Value = measuredVoltage
|
||||
};
|
||||
Results.Add(result);
|
||||
}
|
||||
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
public void SaveResultsHeader(List<PslineMapping> DaqSledList, string[] data)
|
||||
{
|
||||
// List<PslineMapping> SortedDaqSledList = DaqSledList.OrderBy(o => o.daqchannel).ToList();
|
||||
List<PslineMapping> SortedDaqSledList = DaqSledList.OrderBy(o => o.position).ToList();
|
||||
int counter = 0;
|
||||
foreach (var item in SortedDaqSledList)
|
||||
{
|
||||
CheckIfItemExistsHeader(item);
|
||||
|
||||
//var powerSupplyEnabled = pslineConfigs.Where(x => x.Psline == item.psline).Any(x => x.Enabled);
|
||||
|
||||
if (1==1)
|
||||
//if (powerSupplyEnabled)
|
||||
{
|
||||
double measuredVoltage = Convert.ToDouble(data[counter]);
|
||||
//if (Math.Abs(measuredVoltage) < 0.1) { measuredVoltage = 0.0; }
|
||||
|
||||
Result result = new Result()
|
||||
{
|
||||
ID = Results.Select(x => x.ID).DefaultIfEmpty(0).Max() + 1,
|
||||
Position = Convert.ToInt16(MeasureHeaderUsercontrol.CurrentMeasurePosition),
|
||||
PsLine = item.position,
|
||||
DriverID = MeasureHeaderUsercontrol.DriverID,
|
||||
BiB = MeasureHeaderUsercontrol.BiBID,
|
||||
Description = pslineConfigs.Where(x => x.Psline == item.position).Select(x => x.Description).First(),
|
||||
TimeStamp = DateTime.UtcNow,
|
||||
MeasureLocation = MeasureHeaderUsercontrol.MeasurementLocation ?? "N/A",
|
||||
Value = measuredVoltage
|
||||
};
|
||||
Results.Add(result);
|
||||
Console.WriteLine("HELLO?");
|
||||
}
|
||||
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
public void CheckIfItemExists(PslineMapping item)
|
||||
{
|
||||
Results.RemoveAll(x => x.Position == item.position & x.PsLine == item.psline);
|
||||
}
|
||||
|
||||
public void CheckIfItemExistsHeader(PslineMapping item)
|
||||
{
|
||||
//Results.RemoveAll(x => x.Position == item.position & x.PsLine == Convert.ToInt16(MeasureHeaderUsercontrol.CurrentMeasurePosition));
|
||||
Results.RemoveAll(x => x.PsLine == item.position & x.Position == Convert.ToInt32(MeasureHeaderUsercontrol.CurrentMeasurePosition) & x.BiB == MeasureHeaderUsercontrol.BiBID);
|
||||
}
|
||||
|
||||
public void HeaderPinsListToDataloggerChannelsOld(List<int> positionList)
|
||||
{
|
||||
MeasuredPositionList.Clear();
|
||||
|
||||
int prevPosition = 0;
|
||||
foreach (PslineMapping mapping in pslineMapping)
|
||||
{
|
||||
|
||||
if (positionList.Contains(mapping.position))
|
||||
{
|
||||
if (mapping.position != prevPosition)
|
||||
{
|
||||
MeasuredPositionList.Add(mapping);
|
||||
}
|
||||
|
||||
}
|
||||
prevPosition = mapping.position;
|
||||
}
|
||||
|
||||
//Console.WriteLine("bla");
|
||||
DaqSled1List.Clear();
|
||||
foreach (var position in MeasuredPositionList)
|
||||
{
|
||||
|
||||
if (position.daqchannel > 0 & position.daqchannel < 141)
|
||||
{
|
||||
DaqSled1List.Add(position);
|
||||
}
|
||||
}
|
||||
|
||||
DaqSled2List.Clear();
|
||||
foreach (var position in MeasuredPositionList)
|
||||
{
|
||||
|
||||
if (position.daqchannel > 200 & position.daqchannel < 241)
|
||||
{
|
||||
DaqSled2List.Add(position);
|
||||
}
|
||||
}
|
||||
|
||||
DaqSled3List.Clear();
|
||||
foreach (var position in MeasuredPositionList)
|
||||
{
|
||||
if (position.daqchannel > 300 & position.daqchannel < 341)
|
||||
{
|
||||
DaqSled3List.Add(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
public void HeaderPinsListToDataloggerChannels(List<int> positionList)
|
||||
{
|
||||
MeasuredPositionList.Clear();
|
||||
Dictionary<int, int> HeaderMapping = new Dictionary<int, int>()
|
||||
{
|
||||
{1,101 },
|
||||
{2,121 },
|
||||
{3,102 },
|
||||
{4,122 },
|
||||
{5,103 },
|
||||
{6,123 },
|
||||
{7,104 },
|
||||
{8,124 },
|
||||
{9,105 },
|
||||
|
||||
}; //headerpin,daqchannel
|
||||
|
||||
foreach (var position in positionList)
|
||||
{
|
||||
const int HEADERSIZE = 9;
|
||||
PslineMapping mapping= new PslineMapping();
|
||||
mapping.position = position;
|
||||
if (position > HEADERSIZE)
|
||||
{
|
||||
HeaderMapping.TryGetValue(position - HEADERSIZE, out mapping.daqchannel);
|
||||
}
|
||||
else
|
||||
{
|
||||
HeaderMapping.TryGetValue(position, out mapping.daqchannel);
|
||||
}
|
||||
|
||||
|
||||
MeasuredPositionList.Add(mapping);
|
||||
}
|
||||
|
||||
//Console.WriteLine("bla");
|
||||
DaqSled1List.Clear();
|
||||
foreach (var position in MeasuredPositionList)
|
||||
{
|
||||
|
||||
if (position.daqchannel > 0 & position.daqchannel < 141)
|
||||
{
|
||||
DaqSled1List.Add(position);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void PositionListToDataloggerChannels()
|
||||
{
|
||||
MeasuredPositionList.Clear();
|
||||
var positionList = MeasureUserControl.PositionList;
|
||||
foreach (PslineMapping mapping in pslineMapping)
|
||||
{
|
||||
if(positionList.Contains(mapping.position))
|
||||
{
|
||||
MeasuredPositionList.Add(mapping);
|
||||
}
|
||||
}
|
||||
//Console.WriteLine("bla");
|
||||
DaqSled1List.Clear();
|
||||
foreach (var position in MeasuredPositionList)
|
||||
{
|
||||
|
||||
if(position.daqchannel > 0 & position.daqchannel < 141)
|
||||
{
|
||||
DaqSled1List.Add(position);
|
||||
}
|
||||
}
|
||||
|
||||
DaqSled2List.Clear();
|
||||
foreach (var position in MeasuredPositionList)
|
||||
{
|
||||
|
||||
if (position.daqchannel > 200 & position.daqchannel < 241)
|
||||
{
|
||||
DaqSled2List.Add(position);
|
||||
}
|
||||
}
|
||||
|
||||
DaqSled3List.Clear();
|
||||
foreach (var position in MeasuredPositionList)
|
||||
{
|
||||
if (position.daqchannel > 300 & position.daqchannel < 341)
|
||||
{
|
||||
DaqSled3List.Add(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void GetPsLineConfigFromJson()
|
||||
{
|
||||
string filePath = @"c:\configs\data.json";
|
||||
var fileHandler = new FileHandler(filePath);
|
||||
|
||||
pslineConfigs = fileHandler.GetPslineConfig();
|
||||
MeasureUserControl.pslineConfigs = pslineConfigs;
|
||||
MeasureHeaderUsercontrol.pslineConfigs = pslineConfigs;
|
||||
|
||||
}
|
||||
public void GetPsLineConfigFromCsv()
|
||||
{
|
||||
string path = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName, "pslineconfig.csv");
|
||||
pslineConfigs = File.ReadAllLines(path)
|
||||
.Skip(1)
|
||||
.Select(v => PslineConfig.GetPslineConfigFromCsv(v))
|
||||
.ToList();
|
||||
|
||||
MeasureUserControl.pslineConfigs = pslineConfigs;
|
||||
}
|
||||
public void GetDefaultPsLineConfig()
|
||||
{
|
||||
|
||||
pslineConfigs = new List<PslineConfig>();
|
||||
|
||||
PslineConfig pc1 = new PslineConfig()
|
||||
{
|
||||
Psline = 1,
|
||||
Description = "vcc1",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = true
|
||||
};
|
||||
PslineConfig pc2 = new PslineConfig()
|
||||
{
|
||||
Psline = 2,
|
||||
Description = "vcc2",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = true
|
||||
};
|
||||
PslineConfig pc3 = new PslineConfig()
|
||||
{
|
||||
Psline = 3,
|
||||
Description = "vcc3",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = true
|
||||
};
|
||||
PslineConfig pc4 = new PslineConfig()
|
||||
{
|
||||
Psline = 4,
|
||||
Description = "vcc4",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = true
|
||||
};
|
||||
PslineConfig pc5 = new PslineConfig()
|
||||
{
|
||||
Psline = 5,
|
||||
Description = "vcc5",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = true
|
||||
};
|
||||
PslineConfig pc6 = new PslineConfig()
|
||||
{
|
||||
Psline = 6,
|
||||
Description = "vcc5",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = false
|
||||
};
|
||||
PslineConfig pc7 = new PslineConfig()
|
||||
{
|
||||
Psline = 7,
|
||||
Description = "vcc7",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = true
|
||||
};
|
||||
PslineConfig pc8 = new PslineConfig()
|
||||
{
|
||||
Psline = 8,
|
||||
Description = "vcc8",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = true
|
||||
};
|
||||
PslineConfig pc9 = new PslineConfig()
|
||||
{
|
||||
Psline = 9,
|
||||
Description = "vcc9",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = true
|
||||
};
|
||||
PslineConfig pc10 = new PslineConfig()
|
||||
{
|
||||
Psline = 10,
|
||||
Description = "vcc10",
|
||||
Setpoint = 1.00,
|
||||
Tolerance = 1.00,
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
pslineConfigs.Add(pc1);
|
||||
pslineConfigs.Add(pc2);
|
||||
pslineConfigs.Add(pc3);
|
||||
pslineConfigs.Add(pc4);
|
||||
pslineConfigs.Add(pc5);
|
||||
pslineConfigs.Add(pc6);
|
||||
pslineConfigs.Add(pc7);
|
||||
pslineConfigs.Add(pc8);
|
||||
pslineConfigs.Add(pc9);
|
||||
pslineConfigs.Add(pc10);
|
||||
|
||||
MeasureUserControl.pslineConfigs = pslineConfigs;
|
||||
|
||||
}
|
||||
private void GetMapping()
|
||||
{
|
||||
try
|
||||
{
|
||||
//string path = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName, "pslinemapping.csv");
|
||||
string path = @"c:\configs\pslinemapping.csv";
|
||||
pslineMapping = File.ReadAllLines(path)
|
||||
.Skip(1)
|
||||
.Select(v => PslineMapping.FromCsv(v))
|
||||
.ToList();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
throw;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void btnInstrument_Click(object sender, EventArgs e)
|
||||
{
|
||||
panelRight.Controls[0].Show();
|
||||
panelRight.Controls[1].Hide();
|
||||
panelRight.Controls[2].Hide();
|
||||
panelRight.Controls[3].Hide();
|
||||
panelRight.Controls[4].Hide();
|
||||
}
|
||||
|
||||
private void btnConfigPslines_Click(object sender, EventArgs e)
|
||||
{
|
||||
panelRight.Controls[1].Show();
|
||||
panelRight.Controls[0].Hide();
|
||||
panelRight.Controls[2].Hide();
|
||||
panelRight.Controls[3].Hide();
|
||||
panelRight.Controls[4].Hide();
|
||||
|
||||
PslineConfigUserControl.OnUpdateBtnClick(EventArgs.Empty);
|
||||
|
||||
}
|
||||
|
||||
private void btnMeasure_Click(object sender, EventArgs e)
|
||||
{
|
||||
panelRight.Controls[2].Show();
|
||||
panelRight.Controls[0].Hide();
|
||||
panelRight.Controls[1].Hide();
|
||||
panelRight.Controls[3].Hide();
|
||||
panelRight.Controls[4].Hide();
|
||||
}
|
||||
|
||||
private void btn_MeasureHeader_Click(object sender, EventArgs e)
|
||||
{
|
||||
panelRight.Controls[3].Show();
|
||||
panelRight.Controls[0].Hide();
|
||||
panelRight.Controls[1].Hide();
|
||||
panelRight.Controls[2].Hide();
|
||||
panelRight.Controls[4].Hide();
|
||||
MeasureHeaderUsercontrol.PopulateMeasureHeader();
|
||||
|
||||
}
|
||||
|
||||
private void btnDMM_Click(object sender, EventArgs e)
|
||||
{
|
||||
panelRight.Controls[4].Show();
|
||||
panelRight.Controls[0].Hide();
|
||||
panelRight.Controls[1].Hide();
|
||||
panelRight.Controls[2].Hide();
|
||||
panelRight.Controls[3].Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
120
daq_testing/MainForm.resx
Normal file
120
daq_testing/MainForm.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
20
daq_testing/MeasuredPosition.cs
Normal file
20
daq_testing/MeasuredPosition.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public class MeasuredPosition
|
||||
{
|
||||
public int Position { get; set; }
|
||||
public int PsLine { get; set; }
|
||||
public int DaqChannel { get; set; }
|
||||
|
||||
public MeasuredPosition()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
25
daq_testing/OpenTK.dll.config
Normal file
25
daq_testing/OpenTK.dll.config
Normal file
@@ -0,0 +1,25 @@
|
||||
<configuration>
|
||||
<dllmap os="linux" dll="opengl32.dll" target="libGL.so.1"/>
|
||||
<dllmap os="linux" dll="glu32.dll" target="libGLU.so.1"/>
|
||||
<dllmap os="linux" dll="openal32.dll" target="libopenal.so.1"/>
|
||||
<dllmap os="linux" dll="alut.dll" target="libalut.so.0"/>
|
||||
<dllmap os="linux" dll="opencl.dll" target="libOpenCL.so"/>
|
||||
<dllmap os="linux" dll="libX11" target="libX11.so.6"/>
|
||||
<dllmap os="linux" dll="libXi" target="libXi.so.6"/>
|
||||
<dllmap os="linux" dll="SDL2.dll" target="libSDL2-2.0.so.0"/>
|
||||
<dllmap os="osx" dll="opengl32.dll" target="/System/Library/Frameworks/OpenGL.framework/OpenGL"/>
|
||||
<dllmap os="osx" dll="openal32.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
|
||||
<dllmap os="osx" dll="alut.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
|
||||
<dllmap os="osx" dll="libGLES.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
|
||||
<dllmap os="osx" dll="libGLESv1_CM.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
|
||||
<dllmap os="osx" dll="libGLESv2.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
|
||||
<dllmap os="osx" dll="opencl.dll" target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/>
|
||||
<dllmap os="osx" dll="SDL2.dll" target="libSDL2.dylib"/>
|
||||
<!-- XQuartz compatibility (X11 on Mac) -->
|
||||
<dllmap os="osx" dll="libGL.so.1" target="/usr/X11/lib/libGL.dylib"/>
|
||||
<dllmap os="osx" dll="libX11" target="/usr/X11/lib/libX11.dylib"/>
|
||||
<dllmap os="osx" dll="libXcursor.so.1" target="/usr/X11/lib/libXcursor.dylib"/>
|
||||
<dllmap os="osx" dll="libXi" target="/usr/X11/lib/libXi.dylib"/>
|
||||
<dllmap os="osx" dll="libXinerama" target="/usr/X11/lib/libXinerama.dylib"/>
|
||||
<dllmap os="osx" dll="libXrandr.so.2" target="/usr/X11/lib/libXrandr.dylib"/>
|
||||
</configuration>
|
||||
22
daq_testing/Program.cs
Normal file
22
daq_testing/Program.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
}
|
||||
36
daq_testing/Properties/AssemblyInfo.cs
Normal file
36
daq_testing/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("daq_testing")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("daq_testing")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2024")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("f871696a-881e-4edb-bc23-ec1dcba11a5a")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
70
daq_testing/Properties/Resources.Designer.cs
generated
Normal file
70
daq_testing/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,70 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
namespace daq_testing.Properties
|
||||
{
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("daq_testing.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
daq_testing/Properties/Resources.resx
Normal file
117
daq_testing/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
29
daq_testing/Properties/Settings.Designer.cs
generated
Normal file
29
daq_testing/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,29 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
namespace daq_testing.Properties
|
||||
{
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
daq_testing/Properties/Settings.settings
Normal file
7
daq_testing/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
38
daq_testing/PslineConfig.cs
Normal file
38
daq_testing/PslineConfig.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public class PslineConfig
|
||||
{
|
||||
public int Psline { get; set; }
|
||||
public string Description { get; set; }
|
||||
public double Setpoint { get; set; }
|
||||
public double Tolerance { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
|
||||
public PslineConfig()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static PslineConfig GetPslineConfigFromCsv(string csvLine)
|
||||
{
|
||||
string[] values = csvLine.Split(',');
|
||||
PslineConfig pslineConfig = new PslineConfig ();
|
||||
pslineConfig.Psline = Convert.ToInt16(values[0]);
|
||||
pslineConfig.Description = Convert.ToString(values[1]);
|
||||
pslineConfig.Setpoint = Convert.ToDouble(values[2]);
|
||||
pslineConfig.Tolerance = Convert.ToDouble(values[3]);
|
||||
pslineConfig.Enabled = Convert.ToBoolean(values[4]);
|
||||
return pslineConfig;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
25
daq_testing/PslineMapping.cs
Normal file
25
daq_testing/PslineMapping.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public class PslineMapping
|
||||
{
|
||||
public int position;
|
||||
public int psline;
|
||||
public int daqchannel;
|
||||
|
||||
public static PslineMapping FromCsv(string csvLine)
|
||||
{
|
||||
string[] values = csvLine.Split(',');
|
||||
PslineMapping pslineMapping = new PslineMapping();
|
||||
pslineMapping.position = Convert.ToInt16(values[0]);
|
||||
pslineMapping.psline = Convert.ToInt16(values[1]);
|
||||
pslineMapping.daqchannel = Convert.ToInt16(values[2]);
|
||||
return pslineMapping;
|
||||
}
|
||||
}
|
||||
}
|
||||
32
daq_testing/Result.cs
Normal file
32
daq_testing/Result.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public class Result
|
||||
{
|
||||
public int ID { get; set; }
|
||||
public DateTime TimeStamp { get; set; }
|
||||
public int PsLine { get; set; }
|
||||
public string Description { get; set; }
|
||||
public int Position { get; set; }
|
||||
public double Value { get; set; }
|
||||
public string MeasureLocation { get; set; }
|
||||
|
||||
public string DriverID { get; set; }
|
||||
public int BiB { get; set; }
|
||||
|
||||
public Result()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
100
daq_testing/UserControlDMM.Designer.cs
generated
Normal file
100
daq_testing/UserControlDMM.Designer.cs
generated
Normal file
@@ -0,0 +1,100 @@
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
partial class UserControlDMM
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.lbMeasurementValue = new System.Windows.Forms.Label();
|
||||
this.btnMonitor = new System.Windows.Forms.Button();
|
||||
this.formsPlot1 = new ScottPlot.WinForms.FormsPlot();
|
||||
this.tbDataloggerChannel = new System.Windows.Forms.TextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// lbMeasurementValue
|
||||
//
|
||||
this.lbMeasurementValue.AutoSize = true;
|
||||
this.lbMeasurementValue.Font = new System.Drawing.Font("Courier New", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lbMeasurementValue.Location = new System.Drawing.Point(65, 32);
|
||||
this.lbMeasurementValue.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.lbMeasurementValue.Name = "lbMeasurementValue";
|
||||
this.lbMeasurementValue.Size = new System.Drawing.Size(325, 85);
|
||||
this.lbMeasurementValue.TabIndex = 0;
|
||||
this.lbMeasurementValue.Text = "0.0000";
|
||||
//
|
||||
// btnMonitor
|
||||
//
|
||||
this.btnMonitor.Location = new System.Drawing.Point(609, 559);
|
||||
this.btnMonitor.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.btnMonitor.Name = "btnMonitor";
|
||||
this.btnMonitor.Size = new System.Drawing.Size(199, 86);
|
||||
this.btnMonitor.TabIndex = 1;
|
||||
this.btnMonitor.Text = "Monitor";
|
||||
this.btnMonitor.UseVisualStyleBackColor = true;
|
||||
this.btnMonitor.Click += new System.EventHandler(this.btnMonitor_ClickAsync);
|
||||
//
|
||||
// formsPlot1
|
||||
//
|
||||
this.formsPlot1.DisplayScale = 0F;
|
||||
this.formsPlot1.Location = new System.Drawing.Point(59, 134);
|
||||
this.formsPlot1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.formsPlot1.Name = "formsPlot1";
|
||||
this.formsPlot1.Size = new System.Drawing.Size(749, 391);
|
||||
this.formsPlot1.TabIndex = 2;
|
||||
//
|
||||
// tbDataloggerChannel
|
||||
//
|
||||
this.tbDataloggerChannel.Location = new System.Drawing.Point(921, 48);
|
||||
this.tbDataloggerChannel.Name = "tbDataloggerChannel";
|
||||
this.tbDataloggerChannel.Size = new System.Drawing.Size(100, 22);
|
||||
this.tbDataloggerChannel.TabIndex = 3;
|
||||
this.tbDataloggerChannel.Text = "101";
|
||||
//
|
||||
// UserControlDMM
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.tbDataloggerChannel);
|
||||
this.Controls.Add(this.formsPlot1);
|
||||
this.Controls.Add(this.btnMonitor);
|
||||
this.Controls.Add(this.lbMeasurementValue);
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.Name = "UserControlDMM";
|
||||
this.Size = new System.Drawing.Size(1167, 682);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label lbMeasurementValue;
|
||||
private System.Windows.Forms.Button btnMonitor;
|
||||
private ScottPlot.WinForms.FormsPlot formsPlot1;
|
||||
private System.Windows.Forms.TextBox tbDataloggerChannel;
|
||||
}
|
||||
}
|
||||
159
daq_testing/UserControlDMM.cs
Normal file
159
daq_testing/UserControlDMM.cs
Normal file
@@ -0,0 +1,159 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using ScottPlot;
|
||||
using System.Diagnostics;
|
||||
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public partial class UserControlDMM : UserControl
|
||||
{
|
||||
public double MeasurementValue { get; set; }
|
||||
|
||||
// Control variables
|
||||
private bool isMonitoring = false;
|
||||
private List<double> dataPoints = new List<double>();
|
||||
private List<double> timePoints = new List<double>();
|
||||
private double time = 0;
|
||||
private const int MaxPoints = 100;
|
||||
|
||||
// Tolerance band values
|
||||
private double UpperTolerance = 1.0;
|
||||
private double LowerTolerance = -1.0;
|
||||
|
||||
// Histogram parameters
|
||||
private int NumBins = 20; // Number of bins for the histogram
|
||||
private double MaxVoltage = 1; // Maximum possible voltage for histogram scaling
|
||||
private double MinVoltage = -1; // Minimum possible voltage for histogram scaling
|
||||
|
||||
public UserControlDMM()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// Initialize the graph
|
||||
formsPlot1.Plot.Title("Real-Time Voltage");
|
||||
formsPlot1.Plot.YLabel("Voltage (V)");
|
||||
formsPlot1.Plot.XLabel("Time (s)");
|
||||
formsPlot1.Refresh();
|
||||
|
||||
// Set up the tolerance band once
|
||||
UpdateToleranceBand();
|
||||
|
||||
}
|
||||
private void UpdateToleranceBand()
|
||||
{
|
||||
// Generate tolerance band data
|
||||
double[] xs = new double[MaxPoints];
|
||||
double[] upperValues = new double[MaxPoints];
|
||||
double[] lowerValues = new double[MaxPoints];
|
||||
|
||||
for (int i = 0; i < MaxPoints; i++)
|
||||
{
|
||||
xs[i] = i;
|
||||
upperValues[i] = UpperTolerance;
|
||||
lowerValues[i] = LowerTolerance;
|
||||
}
|
||||
|
||||
// Add the tolerance band as a shaded region between lower and upper bounds
|
||||
var fill = formsPlot1.Plot.Add.FillY(
|
||||
xs: xs,
|
||||
ys1: lowerValues,
|
||||
ys2: upperValues
|
||||
);
|
||||
fill.FillColor = Colors.Green.WithAlpha(20);
|
||||
fill.LineColor = Colors.Green;
|
||||
fill.MarkerColor = Colors.Green;
|
||||
fill.LineWidth = 1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private async void btnMonitor_ClickAsync(object sender, EventArgs e)
|
||||
{
|
||||
var mainForm = this.FindForm() as MainForm;
|
||||
if (mainForm == null) return;
|
||||
|
||||
formsPlot1.Plot.Clear();
|
||||
dataPoints.Clear();
|
||||
timePoints.Clear();
|
||||
|
||||
// Toggle the monitoring state
|
||||
isMonitoring = !isMonitoring;
|
||||
|
||||
if (isMonitoring)
|
||||
{
|
||||
// Change button text to indicate stopping
|
||||
btnMonitor.Text = "Stop Monitoring";
|
||||
|
||||
// Start the monitoring configuration
|
||||
mainForm.DAQ.DAQInstrument.Voltage.DCVoltage.AutoRangeListConfig(tbDataloggerChannel.Text, true);
|
||||
mainForm.DAQ.DAQInstrument.Voltage.DCVoltage.Configure(tbDataloggerChannel.Text, 10, 0.01);
|
||||
mainForm.DAQ.DAQInstrument.Route.Monitor = Convert.ToInt32(tbDataloggerChannel.Text);
|
||||
mainForm.DAQ.DAQInstrument.Route.MonitorEnable = true;
|
||||
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
// Start the loop
|
||||
while (isMonitoring)
|
||||
{
|
||||
|
||||
sw.Start();
|
||||
// Get the voltage value
|
||||
double voltage = mainForm.DAQ.DAQInstrument.Route.MonitorData;
|
||||
|
||||
// Update the Label
|
||||
lbMeasurementValue.Text = $"{voltage:F3} V";
|
||||
|
||||
// Update the data points
|
||||
dataPoints.Add(voltage);
|
||||
timePoints.Add(time);
|
||||
|
||||
if (dataPoints.Count > 100) // Limit to 100 points for better performance
|
||||
{
|
||||
dataPoints.RemoveAt(0);
|
||||
timePoints.RemoveAt(0);
|
||||
}
|
||||
|
||||
// Clear previous plots
|
||||
formsPlot1.Plot.Clear();
|
||||
|
||||
// Re-add the tolerance band
|
||||
// UpdateToleranceBand();
|
||||
// Update the histogram and plot
|
||||
|
||||
// Add the updated scatter plot
|
||||
formsPlot1.Plot.Add.ScatterPoints(timePoints.ToArray(), dataPoints.ToArray());
|
||||
|
||||
// Autoscroll: Set X-axis to show the latest MaxPoints data
|
||||
formsPlot1.Plot.Axes.SetLimits(timePoints[0], timePoints[timePoints.Count - 1]);
|
||||
|
||||
|
||||
// Refresh the plot
|
||||
formsPlot1.Refresh();
|
||||
|
||||
// Increment time
|
||||
time += 0.100;
|
||||
|
||||
// Wait asynchronously for 100 ms
|
||||
await Task.Delay(100);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Change button text to indicate starting
|
||||
btnMonitor.Text = "Start Monitoring";
|
||||
|
||||
// Stop the monitoring
|
||||
mainForm.DAQ.DAQInstrument.Route.MonitorEnable = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
daq_testing/UserControlDMM.resx
Normal file
120
daq_testing/UserControlDMM.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
140
daq_testing/UserControlInstrument.Designer.cs
generated
Normal file
140
daq_testing/UserControlInstrument.Designer.cs
generated
Normal file
@@ -0,0 +1,140 @@
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
partial class UserControlInstrument
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UserControlInstrument));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.tbVisaAddress = new System.Windows.Forms.TextBox();
|
||||
this.btnConnectInstrument = new System.Windows.Forms.Button();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.cmbComPorts = new System.Windows.Forms.ComboBox();
|
||||
this.btnSearch = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(23, 22);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(59, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Datalogger";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(23, 74);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(68, 13);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "VisaAddress:";
|
||||
//
|
||||
// tbVisaAddress
|
||||
//
|
||||
this.tbVisaAddress.Location = new System.Drawing.Point(98, 74);
|
||||
this.tbVisaAddress.Name = "tbVisaAddress";
|
||||
this.tbVisaAddress.Size = new System.Drawing.Size(159, 20);
|
||||
this.tbVisaAddress.TabIndex = 2;
|
||||
this.tbVisaAddress.Text = "Search for Comport";
|
||||
//
|
||||
// btnConnectInstrument
|
||||
//
|
||||
this.btnConnectInstrument.Location = new System.Drawing.Point(182, 120);
|
||||
this.btnConnectInstrument.Name = "btnConnectInstrument";
|
||||
this.btnConnectInstrument.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnConnectInstrument.TabIndex = 3;
|
||||
this.btnConnectInstrument.Text = "CONNECT";
|
||||
this.btnConnectInstrument.UseVisualStyleBackColor = true;
|
||||
this.btnConnectInstrument.Click += new System.EventHandler(this.btnConnectInstrument_Click);
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||
this.pictureBox1.InitialImage = null;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(52, 170);
|
||||
this.pictureBox1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(205, 102);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 4;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// cmbComPorts
|
||||
//
|
||||
this.cmbComPorts.FormattingEnabled = true;
|
||||
this.cmbComPorts.Location = new System.Drawing.Point(98, 47);
|
||||
this.cmbComPorts.Name = "cmbComPorts";
|
||||
this.cmbComPorts.Size = new System.Drawing.Size(159, 21);
|
||||
this.cmbComPorts.TabIndex = 5;
|
||||
this.cmbComPorts.SelectedIndexChanged += new System.EventHandler(this.cmbComPorts_SelectedIndexChanged);
|
||||
//
|
||||
// btnSearch
|
||||
//
|
||||
this.btnSearch.Location = new System.Drawing.Point(285, 47);
|
||||
this.btnSearch.Name = "btnSearch";
|
||||
this.btnSearch.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnSearch.TabIndex = 6;
|
||||
this.btnSearch.Text = "Search";
|
||||
this.btnSearch.UseVisualStyleBackColor = true;
|
||||
this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
|
||||
//
|
||||
// UserControlInstrument
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.btnSearch);
|
||||
this.Controls.Add(this.cmbComPorts);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.btnConnectInstrument);
|
||||
this.Controls.Add(this.tbVisaAddress);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "UserControlInstrument";
|
||||
this.Size = new System.Drawing.Size(371, 303);
|
||||
this.Load += new System.EventHandler(this.UserControlInstrument_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox tbVisaAddress;
|
||||
private System.Windows.Forms.Button btnConnectInstrument;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.ComboBox cmbComPorts;
|
||||
private System.Windows.Forms.Button btnSearch;
|
||||
}
|
||||
}
|
||||
93
daq_testing/UserControlInstrument.cs
Normal file
93
daq_testing/UserControlInstrument.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO.Ports;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public partial class UserControlInstrument : UserControl
|
||||
{
|
||||
public event EventHandler InstrumentConnectButtonClicked;
|
||||
public string VisaAddress { get => tbVisaAddress.Text; set => VisaAddress = value; }
|
||||
|
||||
|
||||
private protected void OnInsturmentConnectButtonClicked ( EventArgs e)
|
||||
{
|
||||
InstrumentConnectButtonClicked?.Invoke(this, e);
|
||||
}
|
||||
|
||||
public UserControlInstrument()
|
||||
{
|
||||
InitializeComponent();
|
||||
#if DEBUG
|
||||
btnConnectInstrument.Enabled = true;
|
||||
#else
|
||||
btnConnectInstrument.Enabled = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Load available COM ports into ComboBox
|
||||
private void LoadComPorts()
|
||||
{
|
||||
string[] ports = SerialPort.GetPortNames();
|
||||
cmbComPorts.Items.Clear();
|
||||
foreach (string port in ports)
|
||||
{
|
||||
cmbComPorts.Items.Add(port);
|
||||
}
|
||||
if (cmbComPorts.Items.Count > 0)
|
||||
{
|
||||
cmbComPorts.SelectedIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void UserControlInstrument_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void btnConnectInstrument_Click(object sender, EventArgs e)
|
||||
{
|
||||
OnInsturmentConnectButtonClicked(EventArgs.Empty);
|
||||
}
|
||||
|
||||
public void SetConnectButtonActive()
|
||||
{
|
||||
btnConnectInstrument.BackColor = Color.Green;
|
||||
}
|
||||
|
||||
public void SetConnectButtonNonActive()
|
||||
{
|
||||
btnConnectInstrument.BackColor = Color.Red;
|
||||
}
|
||||
|
||||
private void btnSearch_Click(object sender, EventArgs e)
|
||||
{
|
||||
LoadComPorts();
|
||||
}
|
||||
|
||||
private void cmbComPorts_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cmbComPorts.SelectedItem != null)
|
||||
{
|
||||
string selectedPort = cmbComPorts.SelectedItem.ToString();
|
||||
string address = $"ASRL{selectedPort.Substring(3)}::INSTR";
|
||||
Console.WriteLine(address);
|
||||
tbVisaAddress.Text = address;
|
||||
btnConnectInstrument.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Please select a COM port.", "No COM Port Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
519
daq_testing/UserControlInstrument.resx
Normal file
519
daq_testing/UserControlInstrument.resx
Normal file
@@ -0,0 +1,519 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
61b3yfhS4WM1qvvGAxkDY/C1w/7Wp7xD2vc8qs/E12UM6gbJbVufpp+8T8K3Cf4ab/zGubyM9oGy+Fbj
|
||||
lVn7xPwrc/Sz8TWKWpLnlJPCwgNmtrXP0s/En4Wufpp+Jq95c2SpLkwNhLalz9NPxLUto3L4Vp+JiuS5
|
||||
sozzIL07u5l/eKnvFl1az166pn1htMpaaSeHh8Cihyqv+2n4kJ1fpp+JUsDPaBO9VSS66fiXYVq8f7af
|
||||
iWs5RKwBkRurhY+/zLkbyvnWtPxMWOhUvWBlO7qtPNSb9pE68qiw3p+8sLUlJcwJyV4XaW3hF2knOSWO
|
||||
YHQ7PW5syaT1nJI2FrRy1oY9Gj1NvRoteevOmuxvl4G5saOcaG4M+yt+Ghu6FLCRjWlHCWhs4RwiiqKw
|
||||
VAAAAAAAAAAAAAAAAAAAAAAAAAACxVjlF8omsgaO+oKcJRlFSi+KZyd7siDbdKW7+rL+Z3dxS3kzS3Vp
|
||||
nOhMHEVNmXENdzPqaZjzsrhf2UvYjqK9m8vQxoW7hWhLHBk8jkJ1sZ81lqVfXRPQyK7UasovRp4Md1I6
|
||||
mRNJ1ribhRpSlJLLSXBFyVperV21TwyZGx/OuLlrlCK+03UKWTUmjmnbXmv9Gq+6zHq1alGbhOnOMlya
|
||||
wdkrd9hz22N2F7KL5Y/chZg1buHjO6yPKJSaioSbbwklxK3KJdsmpX1BL6SP7yCOou2vxer7pHk95+b1
|
||||
fdZ1MKeS/G3b5F8ji6quKKTqUKkU+DcWi110n+TI6rbdPq9mty4byRzO/D1EswW+ukuTKlOpLhTn7rJ3
|
||||
4a8DqrZylbUcSeOrjz7hJo5TNX6OfuspdScZYcZJ9mDt405vm/ErjTqJ6SepfI4Tr32MdfJcmXas4ddN
|
||||
frMo34JciCulG4uIOdGhUqRWjcY5K/JL5/3ar7ptthS37WslwVRcPUbiFHJZByLs75f3ar7pj1J1aM9y
|
||||
rCUJLk1g7tWz7DmOkG7Da0451jGKx7BZg1HX57SqNSU5qEYtybwljiTvRMvZSjPa9vjVpyl4RZBb8mvO
|
||||
VtV9xlHVXWfxet7jOvhTbMhU6j/Kl4l8jiOpuvzet7jJ6m6/N631bO46qp6UvEdVU9KXiPI4fqbv82rf
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
1200
daq_testing/UserControlMeasure.Designer.cs
generated
Normal file
1200
daq_testing/UserControlMeasure.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
977
daq_testing/UserControlMeasure.cs
Normal file
977
daq_testing/UserControlMeasure.cs
Normal file
@@ -0,0 +1,977 @@
|
||||
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 Excel = Microsoft.Office.Interop.Excel;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public partial class UserControlMeasure : UserControl
|
||||
{
|
||||
public List<int> PositionList { get; set; }
|
||||
public string ProjectNumber { get => tbProjectNumber.Text; set => tbProjectNumber.Text = value; }
|
||||
public string MeasurementLocation { get => lbLocation.SelectedItem.ToString(); }
|
||||
|
||||
public event EventHandler MeasureButtonClick;
|
||||
|
||||
public event EventHandler ClearAllMeasurementsBtnClick;
|
||||
|
||||
public string DataloggerSerial { get; set; }
|
||||
|
||||
|
||||
public List<Result> results = new List<Result>();
|
||||
|
||||
|
||||
public List<PslineConfig> pslineConfigs = new List<PslineConfig>();
|
||||
|
||||
public void OnClearAllMeasurementsBtnClick(EventArgs e)
|
||||
{
|
||||
ClearAllMeasurementsBtnClick?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
|
||||
public void OnMeasureButtonClick(EventArgs e)
|
||||
{
|
||||
MeasureButtonClick?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
public UserControlMeasure()
|
||||
{
|
||||
|
||||
InitializeComponent();
|
||||
//PopulateButtons();
|
||||
InitializePositions();
|
||||
lbLocation.SetSelected(0, true);
|
||||
progressBar.Visible = false;
|
||||
}
|
||||
|
||||
|
||||
public void InitializePositions()
|
||||
{
|
||||
int posCounter = 0;
|
||||
foreach (var control in flowLayoutPanelPositionButtons.Controls)
|
||||
{
|
||||
if (control is CheckBox)
|
||||
{
|
||||
posCounter++;
|
||||
CheckBox cb = (CheckBox)control;
|
||||
cb.Name = string.Format("{0:00}", posCounter);
|
||||
cb.Checked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void OnPositionButtonClicked(object sender, EventArgs e)
|
||||
{
|
||||
CheckBox checkbox = (CheckBox)sender;
|
||||
UpdatePositionList();
|
||||
foreach (var item in PositionList)
|
||||
{
|
||||
Console.WriteLine(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdatePositionList()
|
||||
|
||||
{
|
||||
List<string> positionList = new List<string>();
|
||||
|
||||
foreach (var control in flowLayoutPanelPositionButtons.Controls)
|
||||
{
|
||||
if (control is CheckBox)
|
||||
{
|
||||
CheckBox checkbox = (CheckBox)control;
|
||||
if (checkbox.Checked)
|
||||
{
|
||||
positionList.Add(checkbox.Name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
PositionList = positionList.Select(int.Parse).ToList();
|
||||
Console.WriteLine("bla");
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void PopulateButtons()
|
||||
{
|
||||
const int MAXPOSITIONS = 40;
|
||||
flowLayoutPanelPositionButtons.Controls.Clear();
|
||||
for (int position = 1; position < MAXPOSITIONS + 1; position++)
|
||||
{
|
||||
CheckBox checkBox = new CheckBox();
|
||||
checkBox.Height = 120;
|
||||
checkBox.Width = 70;
|
||||
|
||||
checkBox.Name = string.Format("Position_{0}", position);
|
||||
checkBox.Text = string.Format("P{0}", position);
|
||||
checkBox.Appearance = Appearance.Button;
|
||||
checkBox.Click += OnPositionButtonClicked;
|
||||
flowLayoutPanelPositionButtons.Controls.Add(checkBox);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void btnMeasure_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
private List<string> GenFakeList()
|
||||
{
|
||||
List<string> values = new List<string>();
|
||||
|
||||
Random rnd = new Random();
|
||||
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
double dummyvalue = rnd.NextDouble();
|
||||
values.Add(string.Format("{0:0.00}",dummyvalue));
|
||||
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
public double GetResultValueByPositionAndPsline(int position, int Psline)
|
||||
{
|
||||
double value = 99999999;
|
||||
foreach (var result in this.results)
|
||||
{
|
||||
if ((result.Position == position) & (Psline == result.PsLine))
|
||||
{
|
||||
value = result.Value;
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
public void PopulateVoltage( List<Result> Results)
|
||||
{
|
||||
this.results = Results;
|
||||
|
||||
|
||||
lvRow1Front.View = View.Details;
|
||||
lvRow2Front.View = View.Details;
|
||||
lvRow3Front.View = View.Details;
|
||||
lvRow4Front.View = View.Details;
|
||||
lvRow5Front.View = View.Details;
|
||||
|
||||
|
||||
lvRow1Front.Items.Clear();
|
||||
lvRow2Front.Items.Clear();
|
||||
lvRow3Front.Items.Clear();
|
||||
lvRow4Front.Items.Clear();
|
||||
lvRow5Front.Items.Clear();
|
||||
|
||||
lvRow1Back.View = View.Details;
|
||||
lvRow2Back.View = View.Details;
|
||||
lvRow3Back.View = View.Details;
|
||||
lvRow4Back.View = View.Details;
|
||||
lvRow5Back.View = View.Details;
|
||||
|
||||
lvRow1Back.Items.Clear();
|
||||
lvRow2Back.Items.Clear();
|
||||
lvRow3Back.Items.Clear();
|
||||
lvRow4Back.Items.Clear();
|
||||
lvRow5Back.Items.Clear();
|
||||
|
||||
|
||||
|
||||
foreach (var result in results)
|
||||
{
|
||||
if (result.Position == 1 & result.PsLine !=1)
|
||||
{
|
||||
|
||||
lvRow1Front.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}",result.PsLine,result.Value) }));
|
||||
lvRow1Front.Items[lvRow1Front.Items.Count-1].BackColor = GetPassFailColor(result);
|
||||
|
||||
}
|
||||
if (result.Position == 9 & result.PsLine != 1)
|
||||
{
|
||||
lvRow2Front.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow2Front.Items[lvRow2Front.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
if (result.Position == 17 & result.PsLine != 1)
|
||||
{
|
||||
lvRow3Front.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow3Front.Items[lvRow3Front.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
if (result.Position == 25 & result.PsLine != 1)
|
||||
{
|
||||
lvRow4Front.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow4Front.Items[lvRow4Front.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
if (result.Position == 33 & result.PsLine != 1)
|
||||
{
|
||||
lvRow5Front.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow5Front.Items[lvRow5Front.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
|
||||
if (result.Position == 8 & result.PsLine != 1)
|
||||
{
|
||||
lvRow1Back.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow1Back.Items[lvRow1Back.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
if (result.Position == 16 & result.PsLine != 1)
|
||||
{
|
||||
lvRow2Back.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow2Back.Items[lvRow2Back.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
if (result.Position == 24 & result.PsLine != 1)
|
||||
{
|
||||
lvRow3Back.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow3Back.Items[lvRow3Back.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
if (result.Position == 32 & result.PsLine != 1)
|
||||
{
|
||||
lvRow4Back.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow4Back.Items[lvRow4Back.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
if (result.Position == 40 & result.PsLine != 1)
|
||||
{
|
||||
lvRow5Back.Items.Add(new ListViewItem(new string[] { string.Format("PS:{0}:{1:0.00}", result.PsLine, result.Value) }));
|
||||
lvRow5Back.Items[lvRow5Back.Items.Count - 1].BackColor = GetPassFailColor(result);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
foreach (var control in flowLayoutPanelPositionButtons.Controls)
|
||||
{
|
||||
if (control is CheckBox)
|
||||
{
|
||||
CheckBox checkbox = (CheckBox)control;
|
||||
|
||||
int position = Convert.ToInt32(checkbox.Name);
|
||||
int psline = 1;
|
||||
|
||||
var value = GetResultValueByPositionAndPsline(position, psline);
|
||||
var isInTolerance = CheckIfWithinTolerance(psline,value);
|
||||
|
||||
if (isInTolerance)
|
||||
{
|
||||
|
||||
checkbox.ForeColor = Color.Green;
|
||||
}
|
||||
else
|
||||
{
|
||||
checkbox.ForeColor = Color.Red;
|
||||
}
|
||||
|
||||
checkbox.Text = String.Format("Pos:{0} {1:0.000}V", position, value);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public Color GetPassFailColor(Result result)
|
||||
{
|
||||
var isInTolerance = CheckIfWithinTolerance(result.PsLine, result.Value);
|
||||
if (isInTolerance)
|
||||
{
|
||||
return Color.Green;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Color.Red;
|
||||
}
|
||||
}
|
||||
|
||||
public bool CheckIfWithinTolerance(int psline, double value)
|
||||
{
|
||||
var tolerances = this.pslineConfigs.Where(x => x.Psline == psline).Select(x => x.Tolerance).ToList();
|
||||
var setpoints = this.pslineConfigs.Where(x => x.Psline == psline).Select(x => x.Setpoint).ToList();
|
||||
|
||||
var tolerance = tolerances[0]/100;
|
||||
var setpoint = setpoints[0];
|
||||
|
||||
var upperlimit = setpoint + (tolerance * setpoint);
|
||||
var lowerlimit = setpoint - (tolerance * setpoint);
|
||||
|
||||
if ( value < upperlimit & value > lowerlimit)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnRow1_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> {0,1,2,3,4,5,6,7};
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnRow1.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnRow2_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 8, 9, 10, 11, 12, 13, 14, 15 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnRow2.Checked;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void btnRow3_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 16, 17, 18, 19, 20, 21, 22, 23 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnRow3.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnRow4_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 24, 25, 26, 27, 28, 29, 30, 31 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnRow4.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnRow5_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 32, 33, 34, 35, 36, 37, 38, 39 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnRow5.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCol1_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 0,8,16,24,32 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnCol1.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void bntCol2_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 1, 9, 17, 25, 33 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = bntCol2.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCol3_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 2, 10, 18, 26, 34 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnCol3.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCol4_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 3, 11, 19, 27, 35 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnCol4.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCol5_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 4, 12, 20, 28, 36 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnCol5.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCol6_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 5, 13, 21, 29, 37 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnCol6.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCol7_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 6, 14, 22, 30, 38 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnCol7.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCol8_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
List<int> buttons = new List<int> { 7, 15, 23, 31, 39 };
|
||||
foreach (int button in buttons)
|
||||
{
|
||||
CheckBox cb = (CheckBox)flowLayoutPanelPositionButtons.Controls[button];
|
||||
cb.Checked = btnCol8.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnAll_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
btnRow1.Checked = btnAll.Checked;
|
||||
btnRow2.Checked = btnAll.Checked;
|
||||
btnRow3.Checked = btnAll.Checked;
|
||||
btnRow4.Checked = btnAll.Checked;
|
||||
btnRow5.Checked = btnAll.Checked;
|
||||
|
||||
btnCol1.Checked = btnAll.Checked;
|
||||
bntCol2.Checked = btnAll.Checked;
|
||||
btnCol3.Checked = btnAll.Checked;
|
||||
btnCol4.Checked = btnAll.Checked;
|
||||
btnCol5.Checked = btnAll.Checked;
|
||||
btnCol6.Checked = btnAll.Checked;
|
||||
btnCol7.Checked = btnAll.Checked;
|
||||
btnCol8.Checked = btnAll.Checked;
|
||||
|
||||
|
||||
foreach (var control in flowLayoutPanelPositionButtons.Controls)
|
||||
{
|
||||
if (control is CheckBox)
|
||||
{
|
||||
CheckBox cb = (CheckBox)control;
|
||||
cb.Checked = btnAll.Checked;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void lvRow1Front_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void btnSaveToExcel_Click_old(object sender, EventArgs e)
|
||||
{
|
||||
// Path to the desired Excel file (the file we want to check)
|
||||
string filePath = string.Format(@"C:\configs\P{0}_sub{1}.xlsx", tbProjectNumber.Text, tbSub.Text);
|
||||
//string filePath = @"C:\configs\" + tbProjectNumber.Text + ".xlsx";
|
||||
|
||||
// Path to the source file that will be copied if the target file doesn't exist
|
||||
string sourceFilePath = @"C:\configs\P240262-3 RF_JESD22-6-A108 appendix.xlsx"; ;
|
||||
|
||||
// Check if the file exists
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
// If the file doesn't exist, copy the source file to the desired path
|
||||
File.Copy(sourceFilePath, filePath);
|
||||
Console.WriteLine($"File did not exist. Copied from {sourceFilePath} to {filePath}.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("File exists, proceeding to open.");
|
||||
}
|
||||
|
||||
// Create Excel Application instance
|
||||
Excel.Application excelApp = new Excel.Application();
|
||||
|
||||
// Set the application to be invisible (optional)
|
||||
excelApp.Visible = true;
|
||||
excelApp.DisplayAlerts = false;
|
||||
|
||||
// Open the Excel workbook
|
||||
Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
|
||||
|
||||
// Check if workbook "monkey" exists and open it
|
||||
bool workbookFound = false;
|
||||
string copiedSheetName = "";
|
||||
|
||||
foreach (Excel.Worksheet sheet in workbook.Sheets)
|
||||
{
|
||||
if (sheet.Name == "TEMPLATE")
|
||||
{
|
||||
Console.WriteLine("Workbook 'TEMPLATE' found. You can start editing.");
|
||||
|
||||
// Copy the sheet
|
||||
sheet.Copy(After: workbook.Sheets[workbook.Sheets.Count]);
|
||||
Excel.Worksheet copiedSheet = (Excel.Worksheet)workbook.Sheets[workbook.Sheets.Count];
|
||||
copiedSheet.Name = "BIB" + workbook.Sheets.Count.ToString();
|
||||
copiedSheetName = copiedSheet.Name;
|
||||
Console.WriteLine("Sheet copied and renamed");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
foreach (Excel.Worksheet sheet in workbook.Sheets)
|
||||
{
|
||||
workbookFound = true;
|
||||
if (sheet.Name == copiedSheetName)
|
||||
{
|
||||
WriteDataToExcel(sheet,progressBar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Save the workbook if the sheet was found and edited
|
||||
if (workbookFound)
|
||||
{
|
||||
workbook.Save();
|
||||
Console.WriteLine("Changes saved successfully.");
|
||||
MessageBox.Show("Results Saved Successfully");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Workbook 'monkey' not found.");
|
||||
}
|
||||
|
||||
// Close the workbook and quit Excel application
|
||||
workbook.Close();
|
||||
excelApp.Quit();
|
||||
|
||||
// Release COM objects to avoid memory leaks
|
||||
ReleaseObject(workbook);
|
||||
ReleaseObject(excelApp);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
private bool SheetExists(Excel.Workbook workbook, string sheetName)
|
||||
{
|
||||
foreach (Excel.Worksheet sheet in workbook.Sheets)
|
||||
{
|
||||
if (sheet.Name.Equals(sheetName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void btnSaveToExcel_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = $@"C:\configs\P{tbProjectNumber.Text}_sub{tbSub.Text}_step{tbStep.Text}.xlsx";
|
||||
string sourceFilePath = $@"C:\configs\P240262-3 RF_JESD22-6-A108 appendix.xlsx";
|
||||
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
File.Copy(sourceFilePath, filePath);
|
||||
Console.WriteLine($"File did not exist. Copied from {sourceFilePath} to {filePath}.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("File exists, proceeding to open.");
|
||||
}
|
||||
|
||||
Excel.Application excelApp = new Excel.Application
|
||||
{
|
||||
Visible = false,
|
||||
DisplayAlerts = false
|
||||
};
|
||||
|
||||
Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
|
||||
string copiedSheetName = "";
|
||||
|
||||
List<string> AllSheetNamesInWorkbook = new List<string>();
|
||||
AllSheetNamesInWorkbook.Clear();
|
||||
|
||||
foreach (Excel.Worksheet sheet in workbook.Sheets)
|
||||
{
|
||||
AllSheetNamesInWorkbook.Add(sheet.Name);
|
||||
}
|
||||
|
||||
foreach (Excel.Worksheet sheet in workbook.Sheets)
|
||||
{
|
||||
if (sheet.Name == "TEMPLATE")
|
||||
{
|
||||
Console.WriteLine("Workbook 'TEMPLATE' found. You can start editing.");
|
||||
sheet.Copy(After: workbook.Sheets[workbook.Sheets.Count]);
|
||||
Excel.Worksheet copiedSheet = (Excel.Worksheet)workbook.Sheets[workbook.Sheets.Count];
|
||||
|
||||
char postfix = 'A';
|
||||
copiedSheetName = $@"BIB{tbBibID.Text}_{postfix}";
|
||||
|
||||
while (AllSheetNamesInWorkbook.Contains(copiedSheetName))
|
||||
{
|
||||
postfix += (char) 1;
|
||||
copiedSheetName = $@"BIB{tbBibID.Text}_{postfix}";
|
||||
}
|
||||
copiedSheet.Name = copiedSheetName;
|
||||
|
||||
Console.WriteLine("Sheet copied and renamed");
|
||||
/*
|
||||
// Copy conditional formatting
|
||||
Excel.Range sourceRange = sheet.UsedRange;
|
||||
Excel.Range targetRange = copiedSheet.UsedRange;
|
||||
|
||||
//sourceRange.Copy();
|
||||
//targetRange.PasteSpecial(Excel.XlPasteType.xlPasteFormats);
|
||||
|
||||
sourceRange.Copy(Type.Missing); // Still needed for PasteSpecial to work sometimes
|
||||
targetRange.PasteSpecial(
|
||||
Excel.XlPasteType.xlPasteFormats,
|
||||
Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
|
||||
false, false);
|
||||
break;
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(copiedSheetName))
|
||||
{
|
||||
Excel.Worksheet sheet = workbook.Sheets[copiedSheetName];
|
||||
WriteDataToExcel(sheet,progressBar);
|
||||
workbook.Save();
|
||||
Console.WriteLine("Changes saved successfully.");
|
||||
MessageBox.Show("Results Saved Successfully");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Workbook 'TEMPLATE' not found.");
|
||||
}
|
||||
|
||||
workbook.Close();
|
||||
excelApp.Quit();
|
||||
|
||||
ReleaseObject(workbook);
|
||||
ReleaseObject(excelApp);
|
||||
}
|
||||
|
||||
private static long GetUnixTimestamp()
|
||||
{
|
||||
DateTimeOffset now = DateTimeOffset.Now;
|
||||
return now.ToUnixTimeSeconds();
|
||||
}
|
||||
|
||||
// Utility function to release COM objects
|
||||
static void ReleaseObject(object obj)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
|
||||
obj = null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
obj = null;
|
||||
Console.WriteLine("Unable to release object: " + ex.ToString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
GC.Collect();
|
||||
}
|
||||
}
|
||||
|
||||
public void WriteDataToExcel(Excel.Worksheet sheet, ProgressBar progressBar)
|
||||
{
|
||||
// Initialize the progress bar
|
||||
progressBar.Minimum = 0;
|
||||
progressBar.Maximum = results.Count;
|
||||
progressBar.Value = 0;
|
||||
|
||||
progressBar.Visible = true;
|
||||
|
||||
foreach (var result in results)
|
||||
{
|
||||
//PS1
|
||||
if (result.Position == 1 & result.PsLine == 1) { sheet.Cells[8, 3] = result.Value; }
|
||||
if (result.Position == 2 & result.PsLine == 1) { sheet.Cells[8, 4] = result.Value; }
|
||||
if (result.Position == 3 & result.PsLine == 1) { sheet.Cells[8, 5] = result.Value; }
|
||||
if (result.Position == 4 & result.PsLine == 1) { sheet.Cells[8, 6] = result.Value; }
|
||||
if (result.Position == 5 & result.PsLine == 1) { sheet.Cells[8, 7] = result.Value; }
|
||||
if (result.Position == 6 & result.PsLine == 1) { sheet.Cells[8, 8] = result.Value; }
|
||||
if (result.Position == 7 & result.PsLine == 1) { sheet.Cells[8, 9] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 1) { sheet.Cells[8, 10] = result.Value; }
|
||||
|
||||
if (result.Position == 9 & result.PsLine == 1) { sheet.Cells[9, 3] = result.Value; }
|
||||
if (result.Position == 10 & result.PsLine == 1) { sheet.Cells[9, 4] = result.Value; }
|
||||
if (result.Position == 11 & result.PsLine == 1) { sheet.Cells[9, 5] = result.Value; }
|
||||
if (result.Position == 12 & result.PsLine == 1) { sheet.Cells[9, 6] = result.Value; }
|
||||
if (result.Position == 13 & result.PsLine == 1) { sheet.Cells[9, 7] = result.Value; }
|
||||
if (result.Position == 14 & result.PsLine == 1) { sheet.Cells[9, 8] = result.Value; }
|
||||
if (result.Position == 15 & result.PsLine == 1) { sheet.Cells[9, 9] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 1) { sheet.Cells[9, 10] = result.Value; }
|
||||
|
||||
if (result.Position == 17 & result.PsLine == 1) { sheet.Cells[10, 3] = result.Value; }
|
||||
if (result.Position == 18 & result.PsLine == 1) { sheet.Cells[10, 4] = result.Value; }
|
||||
if (result.Position == 19 & result.PsLine == 1) { sheet.Cells[10, 5] = result.Value; }
|
||||
if (result.Position == 20 & result.PsLine == 1) { sheet.Cells[10, 6] = result.Value; }
|
||||
if (result.Position == 21 & result.PsLine == 1) { sheet.Cells[10, 7] = result.Value; }
|
||||
if (result.Position == 22 & result.PsLine == 1) { sheet.Cells[10, 8] = result.Value; }
|
||||
if (result.Position == 23 & result.PsLine == 1) { sheet.Cells[10, 9] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 1) { sheet.Cells[10, 10] = result.Value; }
|
||||
|
||||
if (result.Position == 25 & result.PsLine == 1) { sheet.Cells[11, 3] = result.Value; }
|
||||
if (result.Position == 26 & result.PsLine == 1) { sheet.Cells[11, 4] = result.Value; }
|
||||
if (result.Position == 27 & result.PsLine == 1) { sheet.Cells[11, 5] = result.Value; }
|
||||
if (result.Position == 28 & result.PsLine == 1) { sheet.Cells[11, 6] = result.Value; }
|
||||
if (result.Position == 29 & result.PsLine == 1) { sheet.Cells[11, 7] = result.Value; }
|
||||
if (result.Position == 30 & result.PsLine == 1) { sheet.Cells[11, 8] = result.Value; }
|
||||
if (result.Position == 31 & result.PsLine == 1) { sheet.Cells[11, 9] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 1) { sheet.Cells[11, 10] = result.Value; }
|
||||
|
||||
if (result.Position == 33 & result.PsLine == 1) { sheet.Cells[12, 3] = result.Value; }
|
||||
if (result.Position == 34 & result.PsLine == 1) { sheet.Cells[12, 4] = result.Value; }
|
||||
if (result.Position == 35 & result.PsLine == 1) { sheet.Cells[12, 5] = result.Value; }
|
||||
if (result.Position == 36 & result.PsLine == 1) { sheet.Cells[12, 6] = result.Value; }
|
||||
if (result.Position == 37 & result.PsLine == 1) { sheet.Cells[12, 7] = result.Value; }
|
||||
if (result.Position == 38 & result.PsLine == 1) { sheet.Cells[12, 8] = result.Value; }
|
||||
if (result.Position == 39 & result.PsLine == 1) { sheet.Cells[12, 9] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 1) { sheet.Cells[12, 10] = result.Value; }
|
||||
|
||||
//PS2
|
||||
if (result.Position == 1 & result.PsLine == 2) { sheet.Cells[8, 11] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 2) { sheet.Cells[8, 12] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 2) { sheet.Cells[9, 11] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 2) { sheet.Cells[9, 12] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 2) { sheet.Cells[10, 11] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 2) { sheet.Cells[10, 12] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 2) { sheet.Cells[11, 11] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 2) { sheet.Cells[11, 12] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 2) { sheet.Cells[12, 11] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 2) { sheet.Cells[12, 12] = result.Value; }
|
||||
|
||||
//PS3
|
||||
if (result.Position == 1 & result.PsLine == 3) { sheet.Cells[8, 13] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 3) { sheet.Cells[8, 14] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 3) { sheet.Cells[9, 13] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 3) { sheet.Cells[9, 14] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 3) { sheet.Cells[10, 13] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 3) { sheet.Cells[10, 14] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 3) { sheet.Cells[11, 13] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 3) { sheet.Cells[11, 14] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 3) { sheet.Cells[12, 13] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 3) { sheet.Cells[12, 14] = result.Value; }
|
||||
|
||||
//PS4
|
||||
if (result.Position == 1 & result.PsLine == 4) { sheet.Cells[8, 15] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 4) { sheet.Cells[8, 16] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 4) { sheet.Cells[9, 15] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 4) { sheet.Cells[9, 16] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 4) { sheet.Cells[10, 15] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 4) { sheet.Cells[10, 16] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 4) { sheet.Cells[11, 15] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 4) { sheet.Cells[11, 16] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 4) { sheet.Cells[12, 15] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 4) { sheet.Cells[12, 16] = result.Value; }
|
||||
|
||||
//PS5
|
||||
if (result.Position == 1 & result.PsLine == 5) { sheet.Cells[8, 17] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 5) { sheet.Cells[8, 18] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 5) { sheet.Cells[9, 17] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 5) { sheet.Cells[9, 18] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 5) { sheet.Cells[10, 17] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 5) { sheet.Cells[10, 18] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 5) { sheet.Cells[11, 17] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 5) { sheet.Cells[11, 18] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 5) { sheet.Cells[12, 17] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 5) { sheet.Cells[12, 18] = result.Value; }
|
||||
|
||||
//PS6
|
||||
if (result.Position == 1 & result.PsLine == 6) { sheet.Cells[26, 3] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 6) { sheet.Cells[26, 4] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 6) { sheet.Cells[27, 3] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 6) { sheet.Cells[27, 4] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 6) { sheet.Cells[28, 3] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 6) { sheet.Cells[28, 4] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 6) { sheet.Cells[29, 3] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 6) { sheet.Cells[29, 4] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 6) { sheet.Cells[30, 3] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 6) { sheet.Cells[30, 4] = result.Value; }
|
||||
|
||||
//PS7
|
||||
if (result.Position == 1 & result.PsLine == 7) { sheet.Cells[26, 5] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 7) { sheet.Cells[26, 6] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 7) { sheet.Cells[27, 5] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 7) { sheet.Cells[27, 6] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 7) { sheet.Cells[28, 5] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 7) { sheet.Cells[28, 6] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 7) { sheet.Cells[29, 5] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 7) { sheet.Cells[29, 6] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 7) { sheet.Cells[30, 5] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 7) { sheet.Cells[30, 6] = result.Value; }
|
||||
|
||||
//PS8
|
||||
if (result.Position == 1 & result.PsLine == 8) { sheet.Cells[26, 7] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 8) { sheet.Cells[26, 8] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 8) { sheet.Cells[27, 7] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 8) { sheet.Cells[27, 8] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 8) { sheet.Cells[28, 7] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 8) { sheet.Cells[28, 8] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 8) { sheet.Cells[29, 7] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 8) { sheet.Cells[29, 8] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 8) { sheet.Cells[30, 7] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 8) { sheet.Cells[30, 8] = result.Value; }
|
||||
|
||||
//PS9
|
||||
if (result.Position == 1 & result.PsLine == 9) { sheet.Cells[26, 9] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 9) { sheet.Cells[26, 10] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 9) { sheet.Cells[27, 9] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 9) { sheet.Cells[27, 10] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 9) { sheet.Cells[28, 9] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 9) { sheet.Cells[28, 10] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 9) { sheet.Cells[29, 9] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 9) { sheet.Cells[29, 10] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 9) { sheet.Cells[30, 9] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 9) { sheet.Cells[30, 10] = result.Value; }
|
||||
|
||||
//PS10
|
||||
if (result.Position == 1 & result.PsLine == 10) { sheet.Cells[26, 11] = result.Value; }
|
||||
if (result.Position == 8 & result.PsLine == 10) { sheet.Cells[26, 12] = result.Value; }
|
||||
if (result.Position == 9 & result.PsLine == 10) { sheet.Cells[27, 11] = result.Value; }
|
||||
if (result.Position == 16 & result.PsLine == 10) { sheet.Cells[27, 12] = result.Value; }
|
||||
if (result.Position == 17 & result.PsLine == 10) { sheet.Cells[28, 11] = result.Value; }
|
||||
if (result.Position == 24 & result.PsLine == 10) { sheet.Cells[28, 12] = result.Value; }
|
||||
if (result.Position == 25 & result.PsLine == 10) { sheet.Cells[29, 11] = result.Value; }
|
||||
if (result.Position == 32 & result.PsLine == 10) { sheet.Cells[29, 12] = result.Value; }
|
||||
if (result.Position == 33 & result.PsLine == 10) { sheet.Cells[30, 11] = result.Value; }
|
||||
if (result.Position == 40 & result.PsLine == 10) { sheet.Cells[30, 12] = result.Value; }
|
||||
|
||||
// Update the progress bar
|
||||
progressBar.Value++;
|
||||
|
||||
}
|
||||
sheet.Unprotect();
|
||||
WritePsuConfigData(sheet);
|
||||
WriteStaticData(sheet);
|
||||
|
||||
|
||||
progressBar.Visible = false;
|
||||
|
||||
}
|
||||
private void WriteStaticData(Excel.Worksheet sheet)
|
||||
{
|
||||
sheet.Cells[57, 17] = DateTime.UtcNow.ToString();
|
||||
sheet.Cells[58, 17] = DataloggerSerial;
|
||||
sheet.Cells[59, 17] = tbProjectNumber.Text;
|
||||
sheet.Cells[60, 17] = tbBibID.Text;
|
||||
sheet.Cells[61, 17] = tbDriverID.Text;
|
||||
sheet.Cells[62, 17] = lbLocation.SelectedItem.ToString();
|
||||
}
|
||||
|
||||
private void WritePsuConfigData(Excel.Worksheet sheet)
|
||||
{
|
||||
foreach (var psuline in pslineConfigs)
|
||||
{
|
||||
switch (psuline.Psline)
|
||||
{
|
||||
case 1:
|
||||
sheet.Cells[5, 3] = psuline.Description;
|
||||
sheet.Cells[6, 3] = psuline.Setpoint;
|
||||
sheet.Cells[7, 3] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 2:
|
||||
sheet.Cells[5, 11] = psuline.Description;
|
||||
sheet.Cells[6, 11] = psuline.Setpoint;
|
||||
sheet.Cells[7, 11] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 3:
|
||||
sheet.Cells[5, 13] = psuline.Description;
|
||||
sheet.Cells[6, 13] = psuline.Setpoint;
|
||||
sheet.Cells[7, 13] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 4:
|
||||
sheet.Cells[5, 15] = psuline.Description;
|
||||
sheet.Cells[6, 15] = psuline.Setpoint;
|
||||
sheet.Cells[7, 15] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 5:
|
||||
sheet.Cells[5, 17] = psuline.Description;
|
||||
sheet.Cells[6, 17] = psuline.Setpoint;
|
||||
sheet.Cells[7, 17] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 6:
|
||||
sheet.Cells[23, 3] = psuline.Description;
|
||||
sheet.Cells[24, 3] = psuline.Setpoint;
|
||||
sheet.Cells[25, 3] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 7:
|
||||
sheet.Cells[23, 5] = psuline.Description;
|
||||
sheet.Cells[24, 5] = psuline.Setpoint;
|
||||
sheet.Cells[25, 5] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 8:
|
||||
sheet.Cells[23, 7] = psuline.Description;
|
||||
sheet.Cells[24, 7] = psuline.Setpoint;
|
||||
sheet.Cells[25, 7] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 9:
|
||||
sheet.Cells[23, 9] = psuline.Description;
|
||||
sheet.Cells[24, 9] = psuline.Setpoint;
|
||||
sheet.Cells[25, 9] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 10:
|
||||
sheet.Cells[23, 11] = psuline.Description;
|
||||
sheet.Cells[24, 11] = psuline.Setpoint;
|
||||
sheet.Cells[25, 11] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 11:
|
||||
sheet.Cells[23, 13] = psuline.Description;
|
||||
sheet.Cells[24, 13] = psuline.Setpoint;
|
||||
sheet.Cells[25, 13] = psuline.Tolerance/100;
|
||||
break;
|
||||
case 12:
|
||||
sheet.Cells[23, 15] = psuline.Description;
|
||||
sheet.Cells[24, 15] = psuline.Setpoint;
|
||||
sheet.Cells[25, 15] = psuline.Tolerance/100;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
OnClearAllMeasurementsBtnClick(EventArgs.Empty);
|
||||
}
|
||||
|
||||
private void btnMeasure_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
UpdatePositionList();
|
||||
OnMeasureButtonClick(EventArgs.Empty);
|
||||
|
||||
}
|
||||
|
||||
private void UserControlMeasure_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
120
daq_testing/UserControlMeasure.resx
Normal file
120
daq_testing/UserControlMeasure.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
379
daq_testing/UserControlMeasureHeader.Designer.cs
generated
Normal file
379
daq_testing/UserControlMeasureHeader.Designer.cs
generated
Normal file
@@ -0,0 +1,379 @@
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
partial class UserControlMeasureHeader
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||
this.lbLocation = new System.Windows.Forms.ListBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.tbBibID = new System.Windows.Forms.TextBox();
|
||||
this.tbDriverID = new System.Windows.Forms.TextBox();
|
||||
this.tbStep = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.tbSub = new System.Windows.Forms.TextBox();
|
||||
this.tbProjectNumber = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnMeasure = new System.Windows.Forms.Button();
|
||||
this.btnSaveToExcel = new System.Windows.Forms.Button();
|
||||
this.btnClearAllMeasurements = new System.Windows.Forms.Button();
|
||||
this.btnNextPosition = new System.Windows.Forms.Button();
|
||||
this.tbCurrentPosition = new System.Windows.Forms.TextBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.lbMeasuredPins = new System.Windows.Forms.CheckedListBox();
|
||||
this.btnInvertListboxMeasuredPins = new System.Windows.Forms.Button();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.tbIncrement = new System.Windows.Forms.TextBox();
|
||||
this.lbIncrement = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// dataGridView1
|
||||
//
|
||||
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dataGridView1.Location = new System.Drawing.Point(421, 161);
|
||||
this.dataGridView1.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.dataGridView1.Name = "dataGridView1";
|
||||
this.dataGridView1.RowHeadersWidth = 51;
|
||||
this.dataGridView1.Size = new System.Drawing.Size(1265, 471);
|
||||
this.dataGridView1.TabIndex = 0;
|
||||
this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick);
|
||||
//
|
||||
// lbLocation
|
||||
//
|
||||
this.lbLocation.FormattingEnabled = true;
|
||||
this.lbLocation.ItemHeight = 16;
|
||||
this.lbLocation.Items.AddRange(new object[] {
|
||||
"BENCH DEV1",
|
||||
"BENCH DEV2",
|
||||
"CUBE1 UPPER",
|
||||
"CUBE2 LOWER",
|
||||
"MSL UPPER",
|
||||
"MSL LOWER"});
|
||||
this.lbLocation.Location = new System.Drawing.Point(137, 161);
|
||||
this.lbLocation.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.lbLocation.Name = "lbLocation";
|
||||
this.lbLocation.Size = new System.Drawing.Size(136, 100);
|
||||
this.lbLocation.TabIndex = 25;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(25, 161);
|
||||
this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(62, 17);
|
||||
this.label6.TabIndex = 24;
|
||||
this.label6.Text = "Location";
|
||||
//
|
||||
// tbBibID
|
||||
//
|
||||
this.tbBibID.Location = new System.Drawing.Point(137, 89);
|
||||
this.tbBibID.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tbBibID.Name = "tbBibID";
|
||||
this.tbBibID.Size = new System.Drawing.Size(57, 22);
|
||||
this.tbBibID.TabIndex = 23;
|
||||
this.tbBibID.Text = "1";
|
||||
//
|
||||
// tbDriverID
|
||||
//
|
||||
this.tbDriverID.Location = new System.Drawing.Point(137, 57);
|
||||
this.tbDriverID.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tbDriverID.Name = "tbDriverID";
|
||||
this.tbDriverID.Size = new System.Drawing.Size(57, 22);
|
||||
this.tbDriverID.TabIndex = 22;
|
||||
this.tbDriverID.Text = "1";
|
||||
//
|
||||
// tbStep
|
||||
//
|
||||
this.tbStep.Location = new System.Drawing.Point(329, 25);
|
||||
this.tbStep.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tbStep.Name = "tbStep";
|
||||
this.tbStep.Size = new System.Drawing.Size(39, 22);
|
||||
this.tbStep.TabIndex = 21;
|
||||
this.tbStep.Text = "1";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(283, 28);
|
||||
this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(37, 17);
|
||||
this.label5.TabIndex = 20;
|
||||
this.label5.Text = "Step";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(204, 28);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(33, 17);
|
||||
this.label4.TabIndex = 19;
|
||||
this.label4.Text = "Sub";
|
||||
//
|
||||
// tbSub
|
||||
//
|
||||
this.tbSub.Location = new System.Drawing.Point(235, 25);
|
||||
this.tbSub.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tbSub.Name = "tbSub";
|
||||
this.tbSub.Size = new System.Drawing.Size(39, 22);
|
||||
this.tbSub.TabIndex = 18;
|
||||
this.tbSub.Text = "1";
|
||||
//
|
||||
// tbProjectNumber
|
||||
//
|
||||
this.tbProjectNumber.Location = new System.Drawing.Point(137, 25);
|
||||
this.tbProjectNumber.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tbProjectNumber.Name = "tbProjectNumber";
|
||||
this.tbProjectNumber.Size = new System.Drawing.Size(57, 22);
|
||||
this.tbProjectNumber.TabIndex = 17;
|
||||
this.tbProjectNumber.Text = "240000";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(25, 92);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(29, 17);
|
||||
this.label3.TabIndex = 16;
|
||||
this.label3.Text = "BIB";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(25, 63);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(59, 17);
|
||||
this.label2.TabIndex = 15;
|
||||
this.label2.Text = "DriverID";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(25, 25);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(102, 17);
|
||||
this.label1.TabIndex = 14;
|
||||
this.label1.Text = "ProjectNumber";
|
||||
//
|
||||
// btnMeasure
|
||||
//
|
||||
this.btnMeasure.Location = new System.Drawing.Point(958, 671);
|
||||
this.btnMeasure.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnMeasure.Name = "btnMeasure";
|
||||
this.btnMeasure.Size = new System.Drawing.Size(141, 71);
|
||||
this.btnMeasure.TabIndex = 53;
|
||||
this.btnMeasure.Text = "Measure";
|
||||
this.btnMeasure.UseVisualStyleBackColor = true;
|
||||
this.btnMeasure.Click += new System.EventHandler(this.btnMeasure_Click);
|
||||
//
|
||||
// btnSaveToExcel
|
||||
//
|
||||
this.btnSaveToExcel.Location = new System.Drawing.Point(1318, 675);
|
||||
this.btnSaveToExcel.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnSaveToExcel.Name = "btnSaveToExcel";
|
||||
this.btnSaveToExcel.Size = new System.Drawing.Size(143, 71);
|
||||
this.btnSaveToExcel.TabIndex = 52;
|
||||
this.btnSaveToExcel.Text = "SAVE";
|
||||
this.btnSaveToExcel.UseVisualStyleBackColor = true;
|
||||
this.btnSaveToExcel.Click += new System.EventHandler(this.btnSaveToExcel_Click);
|
||||
//
|
||||
// btnClearAllMeasurements
|
||||
//
|
||||
this.btnClearAllMeasurements.Location = new System.Drawing.Point(1545, 675);
|
||||
this.btnClearAllMeasurements.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnClearAllMeasurements.Name = "btnClearAllMeasurements";
|
||||
this.btnClearAllMeasurements.Size = new System.Drawing.Size(141, 71);
|
||||
this.btnClearAllMeasurements.TabIndex = 51;
|
||||
this.btnClearAllMeasurements.Text = "Clear All Measurements";
|
||||
this.btnClearAllMeasurements.UseVisualStyleBackColor = true;
|
||||
this.btnClearAllMeasurements.Click += new System.EventHandler(this.btnClearAllMeasurements_Click);
|
||||
//
|
||||
// btnNextPosition
|
||||
//
|
||||
this.btnNextPosition.Location = new System.Drawing.Point(1108, 671);
|
||||
this.btnNextPosition.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnNextPosition.Name = "btnNextPosition";
|
||||
this.btnNextPosition.Size = new System.Drawing.Size(141, 71);
|
||||
this.btnNextPosition.TabIndex = 54;
|
||||
this.btnNextPosition.Text = "Next Position";
|
||||
this.btnNextPosition.UseVisualStyleBackColor = true;
|
||||
this.btnNextPosition.Click += new System.EventHandler(this.btnNextPosition_Click);
|
||||
//
|
||||
// tbCurrentPosition
|
||||
//
|
||||
this.tbCurrentPosition.Location = new System.Drawing.Point(1494, 106);
|
||||
this.tbCurrentPosition.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tbCurrentPosition.Name = "tbCurrentPosition";
|
||||
this.tbCurrentPosition.Size = new System.Drawing.Size(76, 22);
|
||||
this.tbCurrentPosition.TabIndex = 55;
|
||||
this.tbCurrentPosition.Text = "1";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(1579, 110);
|
||||
this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(109, 17);
|
||||
this.label7.TabIndex = 56;
|
||||
this.label7.Text = "Current Position";
|
||||
//
|
||||
// lbMeasuredPins
|
||||
//
|
||||
this.lbMeasuredPins.FormattingEnabled = true;
|
||||
this.lbMeasuredPins.Items.AddRange(new object[] {
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9"});
|
||||
this.lbMeasuredPins.Location = new System.Drawing.Point(137, 406);
|
||||
this.lbMeasuredPins.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.lbMeasuredPins.Name = "lbMeasuredPins";
|
||||
this.lbMeasuredPins.Size = new System.Drawing.Size(100, 225);
|
||||
this.lbMeasuredPins.TabIndex = 57;
|
||||
this.lbMeasuredPins.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.lbMeasuredPins_ItemCheck);
|
||||
//
|
||||
// btnInvertListboxMeasuredPins
|
||||
//
|
||||
this.btnInvertListboxMeasuredPins.Location = new System.Drawing.Point(248, 604);
|
||||
this.btnInvertListboxMeasuredPins.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.btnInvertListboxMeasuredPins.Name = "btnInvertListboxMeasuredPins";
|
||||
this.btnInvertListboxMeasuredPins.Size = new System.Drawing.Size(100, 28);
|
||||
this.btnInvertListboxMeasuredPins.TabIndex = 58;
|
||||
this.btnInvertListboxMeasuredPins.Text = "Invert";
|
||||
this.btnInvertListboxMeasuredPins.UseVisualStyleBackColor = true;
|
||||
this.btnInvertListboxMeasuredPins.Click += new System.EventHandler(this.btnInvertListboxMeasuredPins_Click);
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(137, 383);
|
||||
this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(101, 17);
|
||||
this.label8.TabIndex = 59;
|
||||
this.label8.Text = "Measured pins";
|
||||
//
|
||||
// tbIncrement
|
||||
//
|
||||
this.tbIncrement.Location = new System.Drawing.Point(1286, 107);
|
||||
this.tbIncrement.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tbIncrement.Name = "tbIncrement";
|
||||
this.tbIncrement.Size = new System.Drawing.Size(76, 22);
|
||||
this.tbIncrement.TabIndex = 60;
|
||||
this.tbIncrement.Text = "1";
|
||||
//
|
||||
// lbIncrement
|
||||
//
|
||||
this.lbIncrement.AutoSize = true;
|
||||
this.lbIncrement.Location = new System.Drawing.Point(1370, 111);
|
||||
this.lbIncrement.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.lbIncrement.Name = "lbIncrement";
|
||||
this.lbIncrement.Size = new System.Drawing.Size(70, 17);
|
||||
this.lbIncrement.TabIndex = 61;
|
||||
this.lbIncrement.Text = "Increment";
|
||||
//
|
||||
// UserControlMeasureHeader
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.lbIncrement);
|
||||
this.Controls.Add(this.tbIncrement);
|
||||
this.Controls.Add(this.label8);
|
||||
this.Controls.Add(this.btnInvertListboxMeasuredPins);
|
||||
this.Controls.Add(this.lbMeasuredPins);
|
||||
this.Controls.Add(this.label7);
|
||||
this.Controls.Add(this.tbCurrentPosition);
|
||||
this.Controls.Add(this.btnNextPosition);
|
||||
this.Controls.Add(this.btnMeasure);
|
||||
this.Controls.Add(this.btnSaveToExcel);
|
||||
this.Controls.Add(this.btnClearAllMeasurements);
|
||||
this.Controls.Add(this.lbLocation);
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.tbBibID);
|
||||
this.Controls.Add(this.tbDriverID);
|
||||
this.Controls.Add(this.tbStep);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.tbSub);
|
||||
this.Controls.Add(this.tbProjectNumber);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.dataGridView1);
|
||||
this.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.Name = "UserControlMeasureHeader";
|
||||
this.Size = new System.Drawing.Size(1767, 842);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.DataGridView dataGridView1;
|
||||
private System.Windows.Forms.ListBox lbLocation;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.TextBox tbBibID;
|
||||
private System.Windows.Forms.TextBox tbDriverID;
|
||||
private System.Windows.Forms.TextBox tbStep;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.TextBox tbSub;
|
||||
private System.Windows.Forms.TextBox tbProjectNumber;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button btnMeasure;
|
||||
private System.Windows.Forms.Button btnSaveToExcel;
|
||||
private System.Windows.Forms.Button btnClearAllMeasurements;
|
||||
private System.Windows.Forms.Button btnNextPosition;
|
||||
private System.Windows.Forms.TextBox tbCurrentPosition;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.CheckedListBox lbMeasuredPins;
|
||||
private System.Windows.Forms.Button btnInvertListboxMeasuredPins;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.TextBox tbIncrement;
|
||||
private System.Windows.Forms.Label lbIncrement;
|
||||
}
|
||||
}
|
||||
246
daq_testing/UserControlMeasureHeader.cs
Normal file
246
daq_testing/UserControlMeasureHeader.cs
Normal file
@@ -0,0 +1,246 @@
|
||||
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 WindowsFormsApp5;
|
||||
using Excel = Microsoft.Office.Interop.Excel;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public partial class UserControlMeasureHeader : UserControl
|
||||
{
|
||||
public string ProjectNumber { get => tbProjectNumber.Text; set => tbProjectNumber.Text = value; }
|
||||
public string MeasurementLocation { get => lbLocation.SelectedItem.ToString(); }
|
||||
public string CurrentMeasurePosition { get => tbCurrentPosition.Text; set => tbCurrentPosition.Text = value; }
|
||||
|
||||
public int BiBID
|
||||
{
|
||||
get => int.TryParse(tbBibID.Text, out int result) ? result : 0;
|
||||
set => tbBibID.Text = value.ToString();
|
||||
}
|
||||
|
||||
public string DriverID
|
||||
{
|
||||
get => tbDriverID.Text;
|
||||
set => tbBibID.Text = value;
|
||||
}
|
||||
|
||||
public List<PslineConfig> pslineConfigs = new List<PslineConfig>();
|
||||
|
||||
public List<int> CheckedItems = new List<int>();
|
||||
|
||||
public event EventHandler MeasureButtonClick;
|
||||
public event EventHandler ClearAllMeasurementsBtnClick;
|
||||
public event EventHandler PopuplateHeaderEvent;
|
||||
|
||||
public void PopulateMeasureHeader()
|
||||
{
|
||||
lbMeasuredPins.Items.Clear();
|
||||
foreach (var item in pslineConfigs)
|
||||
{
|
||||
if (item.Enabled)
|
||||
{
|
||||
lbMeasuredPins.Items.Add(item.Psline);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPopulateHeaderEvent(EventArgs e)
|
||||
{
|
||||
PopuplateHeaderEvent?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
public UserControlMeasureHeader()
|
||||
{
|
||||
InitializeComponent();
|
||||
dataGridView1.AutoGenerateColumns = true;
|
||||
PopulateHeaders();
|
||||
lbLocation.SetSelected(0, true);
|
||||
lbMeasuredPins.CheckOnClick = true; // Enables to single click.
|
||||
}
|
||||
|
||||
private void PopulateHeaders ()
|
||||
{
|
||||
OnPopulateHeaderEvent(EventArgs.Empty);
|
||||
}
|
||||
public void OnClearAllMeasurementsBtnClick(EventArgs e)
|
||||
{
|
||||
ClearAllMeasurementsBtnClick?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
public void OnMeasureButtonClick(EventArgs e)
|
||||
{
|
||||
MeasureButtonClick?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
private void btnMeasure_Click(object sender, EventArgs e)
|
||||
{
|
||||
OnMeasureButtonClick(EventArgs.Empty);
|
||||
}
|
||||
|
||||
private void btnNextPosition_Click(object sender, EventArgs e)
|
||||
{
|
||||
int position;
|
||||
int increment;
|
||||
int.TryParse(this.CurrentMeasurePosition,out position);
|
||||
int.TryParse(tbIncrement.Text, out increment);
|
||||
position+=increment;
|
||||
this.CurrentMeasurePosition = position.ToString();
|
||||
}
|
||||
|
||||
public void PopulateVoltageOld(List<Result> results)
|
||||
{
|
||||
results = results.OrderBy(o => o.PsLine).ToList();
|
||||
|
||||
dataGridView1.DataSource = null;
|
||||
dataGridView1.DataSource = results;
|
||||
dataGridView1.Refresh();
|
||||
|
||||
}
|
||||
|
||||
public void PopulateVoltage(List<Result> results)
|
||||
{
|
||||
// Convert the list to a DataTable
|
||||
var dataTable = DataTableHelper.ToDataTable(results);
|
||||
|
||||
// Bind the DataTable to DataGridView
|
||||
dataGridView1.DataSource = dataTable;
|
||||
|
||||
dataGridView1.CellFormatting += DataGridView_CellFormatting;
|
||||
|
||||
// Enable sorting for all columns
|
||||
foreach (DataGridViewColumn column in dataGridView1.Columns)
|
||||
{
|
||||
column.SortMode = DataGridViewColumnSortMode.Automatic;
|
||||
}
|
||||
|
||||
// Sort the DataGridView by the first column (assuming it's "ID")
|
||||
if (dataGridView1.Columns.Count > 0)
|
||||
{
|
||||
dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Descending);
|
||||
}
|
||||
}
|
||||
|
||||
private void DataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
|
||||
{
|
||||
// Check if the column is "Value"
|
||||
if (dataGridView1.Columns[e.ColumnIndex].Name == "Value")
|
||||
{
|
||||
// Get the value from the cell
|
||||
if (e.Value is double value)
|
||||
{
|
||||
// Get Psline
|
||||
var PsLine = (int)dataGridView1.Rows[e.RowIndex].Cells["PsLine"].Value;
|
||||
var tolerance = pslineConfigs.Where(x => x.Psline == PsLine).Select(x => x.Tolerance).FirstOrDefault();
|
||||
// Get setpoint
|
||||
var setpoint = pslineConfigs.Where(x => x.Psline == PsLine).Select(x => x.Setpoint).FirstOrDefault();
|
||||
|
||||
//Calculate limit
|
||||
var limit = setpoint * (tolerance/100);
|
||||
|
||||
// check if exceeding tolerance limit
|
||||
if (Math.Abs(setpoint-value) > limit)
|
||||
{
|
||||
// Change the background color
|
||||
e.CellStyle.BackColor = System.Drawing.Color.Orange;
|
||||
}
|
||||
else
|
||||
{
|
||||
e.CellStyle.BackColor = System.Drawing.Color.Green;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnSaveToExcel_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = $@"C:\configs\P{tbProjectNumber.Text}_sub{tbSub.Text}_step_{tbStep.Text}_Header.xlsx";
|
||||
string sourceFilePath = @"C:\configs\Header.xlsx";
|
||||
|
||||
|
||||
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
File.Copy(sourceFilePath, filePath);
|
||||
Console.WriteLine($"File did not exist. Copied from {sourceFilePath} to {filePath}.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("File exists, proceeding to open.");
|
||||
}
|
||||
|
||||
Excel.Application excelApp = new Excel.Application
|
||||
{
|
||||
Visible = true,
|
||||
DisplayAlerts = false
|
||||
};
|
||||
|
||||
Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
|
||||
|
||||
string copiedSheetName = "Measurements";
|
||||
|
||||
Excel.Worksheet worksheet = workbook.Sheets[1];
|
||||
// Add column headers
|
||||
for (int i = 0; i < dataGridView1.Columns.Count; i++)
|
||||
{
|
||||
worksheet.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;
|
||||
}
|
||||
|
||||
// Add rows
|
||||
for (int i = 0; i < dataGridView1.Rows.Count; i++)
|
||||
{
|
||||
for (int j = 0; j < dataGridView1.Columns.Count; j++)
|
||||
{
|
||||
worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value;
|
||||
}
|
||||
}
|
||||
|
||||
workbook.Save();
|
||||
workbook.Close();
|
||||
excelApp.Quit();
|
||||
|
||||
//ReleaseObject(workbook);
|
||||
//ReleaseObject(excelApp);
|
||||
}
|
||||
|
||||
private void lbMeasuredPins_ItemCheck(object sender, ItemCheckEventArgs e)
|
||||
{
|
||||
List<int> checkedItems = new List<int>();
|
||||
foreach (var item in lbMeasuredPins.CheckedItems)
|
||||
{
|
||||
checkedItems.Add(Convert.ToInt32(item));
|
||||
}
|
||||
if (e.NewValue == CheckState.Checked)
|
||||
checkedItems.Add(Convert.ToInt32(lbMeasuredPins.Items[e.Index]));
|
||||
else
|
||||
checkedItems.Remove(Convert.ToInt32(lbMeasuredPins.Items[e.Index]));
|
||||
Console.WriteLine(checkedItems);
|
||||
this.CheckedItems = checkedItems;
|
||||
}
|
||||
|
||||
private void btnInvertListboxMeasuredPins_Click(object sender, EventArgs e)
|
||||
{
|
||||
for (int i = 0; i < lbMeasuredPins.Items.Count; i++)
|
||||
{
|
||||
bool isChecked = lbMeasuredPins.GetItemChecked(i);
|
||||
lbMeasuredPins.SetItemChecked(i, !isChecked);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnClearAllMeasurements_Click(object sender, EventArgs e)
|
||||
{
|
||||
OnClearAllMeasurementsBtnClick(EventArgs.Empty);
|
||||
}
|
||||
|
||||
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
120
daq_testing/UserControlMeasureHeader.resx
Normal file
120
daq_testing/UserControlMeasureHeader.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
94
daq_testing/UserControlPslineConfig.Designer.cs
generated
Normal file
94
daq_testing/UserControlPslineConfig.Designer.cs
generated
Normal file
@@ -0,0 +1,94 @@
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
partial class UserControlPslineConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.dgvPslinesConfig = new System.Windows.Forms.DataGridView();
|
||||
this.btnSave = new System.Windows.Forms.Button();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvPslinesConfig)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// dgvPslinesConfig
|
||||
//
|
||||
this.dgvPslinesConfig.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvPslinesConfig.Location = new System.Drawing.Point(64, 77);
|
||||
this.dgvPslinesConfig.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.dgvPslinesConfig.Name = "dgvPslinesConfig";
|
||||
this.dgvPslinesConfig.RowHeadersWidth = 51;
|
||||
this.dgvPslinesConfig.Size = new System.Drawing.Size(751, 383);
|
||||
this.dgvPslinesConfig.TabIndex = 0;
|
||||
this.dgvPslinesConfig.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvPslinesConfig_CellContentClick);
|
||||
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.Location = new System.Drawing.Point(651, 521);
|
||||
this.btnSave.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(164, 59);
|
||||
this.btnSave.TabIndex = 1;
|
||||
this.btnSave.Text = "Save";
|
||||
this.btnSave.UseVisualStyleBackColor = true;
|
||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Enabled = false;
|
||||
this.button1.Location = new System.Drawing.Point(715, 468);
|
||||
this.button1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(100, 28);
|
||||
this.button1.TabIndex = 2;
|
||||
this.button1.Text = "Update";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// UserControlPslineConfig
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.btnSave);
|
||||
this.Controls.Add(this.dgvPslinesConfig);
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.Name = "UserControlPslineConfig";
|
||||
this.Size = new System.Drawing.Size(967, 655);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvPslinesConfig)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.DataGridView dgvPslinesConfig;
|
||||
private System.Windows.Forms.Button btnSave;
|
||||
private System.Windows.Forms.Button button1;
|
||||
}
|
||||
}
|
||||
111
daq_testing/UserControlPslineConfig.cs
Normal file
111
daq_testing/UserControlPslineConfig.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace daq_testing
|
||||
{
|
||||
public partial class UserControlPslineConfig : UserControl
|
||||
{
|
||||
private BindingList<PslineConfig> gridData;
|
||||
private FileHandler fileHandler;
|
||||
|
||||
public event EventHandler UpdateBtnClick;
|
||||
|
||||
public void OnUpdateBtnClick(EventArgs e)
|
||||
{
|
||||
LoadDgv();
|
||||
UpdateBtnClick?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
public List<PslineConfig> Data { get; set; }
|
||||
public UserControlPslineConfig()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
dgvPslinesConfig.CellContentClick += dgvPslinesConfig_CellContentClick;
|
||||
dgvPslinesConfig.CurrentCellDirtyStateChanged += dgvPslinesConfig_CurrentCellDirtyStateChanged;
|
||||
}
|
||||
|
||||
public void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
LoadDgv();
|
||||
OnUpdateBtnClick(EventArgs.Empty);
|
||||
}
|
||||
|
||||
public void LoadDgv_old()
|
||||
{
|
||||
BindingSource bs = new BindingSource();
|
||||
bs.DataSource = Data;
|
||||
dgvPslinesConfig.DataSource = bs;
|
||||
dgvPslinesConfig.Update();
|
||||
}
|
||||
|
||||
public void LoadDgv()
|
||||
{
|
||||
string filePath = @"c:\configs\data.json";
|
||||
|
||||
fileHandler = new FileHandler(filePath);
|
||||
// Load data
|
||||
gridData = fileHandler.LoadData();
|
||||
|
||||
// Bind data to DataGridView
|
||||
dgvPslinesConfig.DataSource = gridData;
|
||||
|
||||
// Set column properties
|
||||
dgvPslinesConfig.Columns["Psline"].HeaderText = "Psline";
|
||||
dgvPslinesConfig.Columns["Description"].HeaderText = "Description";
|
||||
dgvPslinesConfig.Columns["Setpoint"].HeaderText = "Setpoint";
|
||||
dgvPslinesConfig.Columns["Tolerance"].HeaderText = "Tolerance";
|
||||
dgvPslinesConfig.Columns["Enabled"].HeaderText = "Enabled";
|
||||
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
fileHandler.SaveData(gridData);
|
||||
OnUpdateBtnClick(EventArgs.Empty);
|
||||
}
|
||||
|
||||
private void dgvPslinesConfig_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex == dgvPslinesConfig.Columns["Enabled"].Index)
|
||||
{
|
||||
// Check if the Enabled cell was set to true
|
||||
if (Convert.ToBoolean(dgvPslinesConfig.Rows[e.RowIndex].Cells["Enabled"].Value) == true)
|
||||
{
|
||||
// Check for duplicates
|
||||
var pslineValue = dgvPslinesConfig.Rows[e.RowIndex].Cells["Psline"].Value;
|
||||
var hasDuplicate = dgvPslinesConfig.Rows
|
||||
.Cast<DataGridViewRow>()
|
||||
.Where(row => Convert.ToBoolean(row.Cells["Enabled"].Value) == true &&
|
||||
row.Cells["Psline"].Value.Equals(pslineValue) &&
|
||||
row.Index != e.RowIndex) // Exclude the current row
|
||||
.Any();
|
||||
|
||||
if (hasDuplicate)
|
||||
{
|
||||
// Revert the change and notify the user
|
||||
dgvPslinesConfig.Rows[e.RowIndex].Cells["Enabled"].Value = false; // Set back to false
|
||||
MessageBox.Show("Cannot enable this row because a duplicate Psline entry exists.", "Duplicate Entry", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvPslinesConfig_CurrentCellDirtyStateChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (dgvPslinesConfig.IsCurrentCellDirty)
|
||||
{
|
||||
dgvPslinesConfig.CommitEdit(DataGridViewDataErrorContexts.Commit);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
120
daq_testing/UserControlPslineConfig.resx
Normal file
120
daq_testing/UserControlPslineConfig.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
300
daq_testing/daq_testing.csproj
Normal file
300
daq_testing/daq_testing.csproj
Normal file
@@ -0,0 +1,300 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{F871696A-881E-4EDB-BC23-EC1DCBA11A5A}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>daq_testing</RootNamespace>
|
||||
<AssemblyName>daq_testing</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<PublishUrl>D:\deploy\</PublishUrl>
|
||||
<Install>false</Install>
|
||||
<InstallFrom>Unc</InstallFrom>
|
||||
<UpdateEnabled>true</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<InstallUrl>\\silicium\software\</InstallUrl>
|
||||
<ApplicationRevision>1</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestCertificateThumbprint>8C7D832975646199C4D1F0FE99E67DE3A1873D22</ManifestCertificateThumbprint>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestKeyFile>daq_testing_TemporaryKey.pfx</ManifestKeyFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<GenerateManifests>true</GenerateManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignManifests>true</SignManifests>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="HarfBuzzSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\HarfBuzzSharp.7.3.0.3\lib\net462\HarfBuzzSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Office.Interop.Excel.15.0.4795.1001\lib\net20\Microsoft.Office.Interop.Excel.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenTK, Version=3.1.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenTK.3.1.0\lib\net20\OpenTK.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenTK.GLControl, Version=3.1.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenTK.GLControl.3.1.0\lib\net20\OpenTK.GLControl.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ScottPlot, Version=5.0.54.0, Culture=neutral, PublicKeyToken=86698dc10387c39e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ScottPlot.5.0.54\lib\net462\ScottPlot.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ScottPlot.WinForms, Version=5.0.54.0, Culture=neutral, PublicKeyToken=86698dc10387c39e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ScottPlot.WinForms.5.0.54\lib\net462\ScottPlot.WinForms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SkiaSharp.2.88.9\lib\net462\SkiaSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SkiaSharp.HarfBuzz, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SkiaSharp.HarfBuzz.2.88.9\lib\net462\SkiaSharp.HarfBuzz.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SkiaSharp.Views.Desktop.Common, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SkiaSharp.Views.Desktop.Common.2.88.9\lib\net462\SkiaSharp.Views.Desktop.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SkiaSharp.Views.WindowsForms, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SkiaSharp.Views.WindowsForms.2.88.9\lib\net462\SkiaSharp.Views.WindowsForms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing.Common, Version=4.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Drawing.Common.4.7.3\lib\net461\System.Drawing.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=8.0.0.4, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.8.0.4\lib\net462\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DataTableHelper.cs" />
|
||||
<Compile Include="FileHandler.cs" />
|
||||
<Compile Include="MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Instrument.cs" />
|
||||
<Compile Include="MeasuredPosition.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="PslineConfig.cs" />
|
||||
<Compile Include="PslineMapping.cs" />
|
||||
<Compile Include="Result.cs" />
|
||||
<Compile Include="UserControlDMM.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControlDMM.Designer.cs">
|
||||
<DependentUpon>UserControlDMM.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControlInstrument.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControlInstrument.Designer.cs">
|
||||
<DependentUpon>UserControlInstrument.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControlMeasure.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControlMeasure.Designer.cs">
|
||||
<DependentUpon>UserControlMeasure.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControlMeasureHeader.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControlMeasureHeader.Designer.cs">
|
||||
<DependentUpon>UserControlMeasureHeader.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControlPslineConfig.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControlPslineConfig.Designer.cs">
|
||||
<DependentUpon>UserControlPslineConfig.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="UserControlDMM.resx">
|
||||
<DependentUpon>UserControlDMM.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControlInstrument.resx">
|
||||
<DependentUpon>UserControlInstrument.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControlMeasure.resx">
|
||||
<DependentUpon>UserControlMeasure.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControlMeasureHeader.resx">
|
||||
<DependentUpon>UserControlMeasureHeader.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControlPslineConfig.resx">
|
||||
<DependentUpon>UserControlPslineConfig.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="daq_testing_TemporaryKey.pfx" />
|
||||
<None Include="OpenTK.dll.config" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Include="Agilent34970Lib">
|
||||
<Guid>{9C2645D3-6791-4A84-80AA-30E529FA54EF}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>4</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>primary</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</COMReference>
|
||||
<COMReference Include="IviDriverLib">
|
||||
<Guid>{47ED5120-A398-11D4-BA58-000064657374}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>primary</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</COMReference>
|
||||
<COMReference Include="VisaComLib">
|
||||
<Guid>{DB8CBF00-D6D3-11D4-AA51-00A024EE30BD}</Guid>
|
||||
<VersionMajor>5</VersionMajor>
|
||||
<VersionMinor>14</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>primary</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</COMReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\HarfBuzzSharp.NativeAssets.macOS.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.macOS.targets" Condition="Exists('..\packages\HarfBuzzSharp.NativeAssets.macOS.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.macOS.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\HarfBuzzSharp.NativeAssets.macOS.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.macOS.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\HarfBuzzSharp.NativeAssets.macOS.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.macOS.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\HarfBuzzSharp.NativeAssets.Win32.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Win32.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\HarfBuzzSharp.NativeAssets.Win32.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Win32.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\HarfBuzzSharp.NativeAssets.Linux.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Linux.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\HarfBuzzSharp.NativeAssets.Linux.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Linux.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\SkiaSharp.NativeAssets.Linux.NoDependencies.2.88.9\build\net462\SkiaSharp.NativeAssets.Linux.NoDependencies.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SkiaSharp.NativeAssets.Linux.NoDependencies.2.88.9\build\net462\SkiaSharp.NativeAssets.Linux.NoDependencies.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\HarfBuzzSharp.NativeAssets.Win32.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Win32.targets" Condition="Exists('..\packages\HarfBuzzSharp.NativeAssets.Win32.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Win32.targets')" />
|
||||
<Import Project="..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets" Condition="Exists('..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets')" />
|
||||
<Import Project="..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets')" />
|
||||
<Import Project="..\packages\HarfBuzzSharp.NativeAssets.Linux.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Linux.targets" Condition="Exists('..\packages\HarfBuzzSharp.NativeAssets.Linux.7.3.0.3\build\net462\HarfBuzzSharp.NativeAssets.Linux.targets')" />
|
||||
<Import Project="..\packages\SkiaSharp.NativeAssets.Linux.NoDependencies.2.88.9\build\net462\SkiaSharp.NativeAssets.Linux.NoDependencies.targets" Condition="Exists('..\packages\SkiaSharp.NativeAssets.Linux.NoDependencies.2.88.9\build\net462\SkiaSharp.NativeAssets.Linux.NoDependencies.targets')" />
|
||||
</Project>
|
||||
31
daq_testing/packages.config
Normal file
31
daq_testing/packages.config
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="HarfBuzzSharp" version="7.3.0.3" targetFramework="net472" />
|
||||
<package id="HarfBuzzSharp.NativeAssets.Linux" version="7.3.0.3" targetFramework="net472" />
|
||||
<package id="HarfBuzzSharp.NativeAssets.macOS" version="7.3.0.3" targetFramework="net472" />
|
||||
<package id="HarfBuzzSharp.NativeAssets.Win32" version="7.3.0.3" targetFramework="net472" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net472" />
|
||||
<package id="Microsoft.Office.Interop.Excel" version="15.0.4795.1001" targetFramework="net472" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net472" />
|
||||
<package id="OpenTK" version="3.1.0" targetFramework="net472" />
|
||||
<package id="OpenTK.GLControl" version="3.1.0" targetFramework="net472" />
|
||||
<package id="ScottPlot" version="5.0.54" targetFramework="net472" />
|
||||
<package id="ScottPlot.WinForms" version="5.0.54" targetFramework="net472" />
|
||||
<package id="SkiaSharp" version="2.88.9" targetFramework="net472" />
|
||||
<package id="SkiaSharp.HarfBuzz" version="2.88.9" targetFramework="net472" />
|
||||
<package id="SkiaSharp.NativeAssets.Linux.NoDependencies" version="2.88.9" targetFramework="net472" />
|
||||
<package id="SkiaSharp.NativeAssets.macOS" version="2.88.9" targetFramework="net472" />
|
||||
<package id="SkiaSharp.NativeAssets.Win32" version="2.88.9" targetFramework="net472" />
|
||||
<package id="SkiaSharp.Views.Desktop.Common" version="2.88.9" targetFramework="net472" />
|
||||
<package id="SkiaSharp.Views.WindowsForms" version="2.88.9" targetFramework="net472" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||
<package id="System.Drawing.Common" version="4.7.3" targetFramework="net472" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net472" />
|
||||
<package id="System.Text.Encodings.Web" version="8.0.0" targetFramework="net472" />
|
||||
<package id="System.Text.Json" version="8.0.4" targetFramework="net472" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user