742 lines
24 KiB
C#
742 lines
24 KiB
C#
namespace Xylem.Common.Ui.GenesisToolBox
|
|
{
|
|
using global::CordonelPreadjustmentUi;
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
using System;
|
|
using System.Collections.Concurrent;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.IO.Pipes;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
using TempFlansh;
|
|
using Xylem.Common.CommonCore.Configuration;
|
|
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages;
|
|
using Xylem.Common.Hardware.WaterMeter.Genesis.DataPackages.MeasurementRecords;
|
|
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
|
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
|
using Xylem.Common.Hardware.WaterMeter.WaterMeterCore;
|
|
using Xylem.Common.Logic.ProductionOrderCore.OrderData;
|
|
using Xylem.Common.Logic.SoftwareAccessHelper;
|
|
using Xylem.Common.Ui.GenesisToolBox.Infrastructure;
|
|
|
|
public partial class FrmManCalibration : Form
|
|
{
|
|
private ToolStripLabel slotsLabel;
|
|
private ToolStripComboBox slotsList;
|
|
private ToolStripLabel pcbidLabel;
|
|
private ToolStripTextBox pcbidTextBox;
|
|
private ToolStripButton connectBtn;
|
|
private ToolStripButton disconnectBtn;
|
|
private ToolStripButton testBtn;
|
|
|
|
private ProgrammState programmState;
|
|
private ZeroFlowGenesisMeter currentGenesis;
|
|
private MeterBatch meterBatch;
|
|
private Boolean lutIsMissing;
|
|
private List<RefTempRange> reftempRangeReq;
|
|
private List<CordonelTempLut> cordonelTempLut;
|
|
|
|
public FrmManCalibration()
|
|
{
|
|
this.InitializeComponent();
|
|
InitializeContent();
|
|
this.meterBatch = new MeterBatch();
|
|
|
|
|
|
nudCal1.Maximum = Int32.MaxValue;
|
|
nudCal2.Maximum = Int32.MaxValue;
|
|
nudCal3.Maximum = Int32.MaxValue;
|
|
nudZeroOffset1.Minimum = Int32.MinValue;
|
|
nudZeroOffset2.Minimum = Int32.MinValue;
|
|
nudZeroOffset3.Minimum = Int32.MinValue;
|
|
|
|
}
|
|
|
|
private void BtnConnect_Click(Object sender, EventArgs e)
|
|
=> this.Connect();
|
|
|
|
private void Connect()
|
|
{
|
|
try
|
|
{
|
|
if (int.TryParse($"{this.slotsList.SelectedItem}", out var slotNr))
|
|
{
|
|
var meter = new ZeroFlowGenesisMeter(slotNr,3, false);
|
|
this.meterBatch.AddMeter(meter);
|
|
|
|
Task.Factory.StartNew(() =>
|
|
{
|
|
meter.Login();
|
|
|
|
if (!meter.IsLoggedOn)
|
|
{
|
|
Thread.Sleep(2000);
|
|
meter.Login();
|
|
}
|
|
|
|
|
|
}
|
|
);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message);
|
|
SetEnabled(ProgrammState.Start);
|
|
}
|
|
}
|
|
|
|
private void UpdateConnectedMetersList()
|
|
{
|
|
this.InvokeOnUIThread(() =>
|
|
{
|
|
|
|
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is ZeroFlowGenesisMeter gns)
|
|
{
|
|
var pcbId = gns.PcbId;
|
|
var connected = !string.IsNullOrWhiteSpace(pcbId);
|
|
var item = new ListViewItem
|
|
{
|
|
BackColor = connected ? Color.LightGreen : Color.IndianRed,
|
|
Text = pcbId,
|
|
};
|
|
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private class TempTime
|
|
{
|
|
public TempTime(Double temp)
|
|
{
|
|
date = DateTime.UtcNow;
|
|
Temp = temp;
|
|
}
|
|
|
|
public TempTime(String temp)
|
|
{
|
|
Double tmp = double.MinValue;
|
|
if (double.TryParse(temp, out tmp))
|
|
{
|
|
date = DateTime.UtcNow;
|
|
|
|
Temp = tmp;
|
|
}
|
|
}
|
|
|
|
public DateTime date;
|
|
public Double Temp;
|
|
}
|
|
|
|
private class ToFTime
|
|
{
|
|
public ToFTime(Double temp, DateTimeOffset date)
|
|
{
|
|
Date = date.ToUniversalTime().DateTime;
|
|
Tof = temp;
|
|
}
|
|
|
|
public DateTime Date;
|
|
public Double Tof;
|
|
}
|
|
|
|
private ConcurrentQueue<TempTofCalc> listTempTime = new ConcurrentQueue<TempTofCalc>();
|
|
|
|
private void RunTemConnection()
|
|
{
|
|
using (var pipeClient = new NamedPipeClientStream(".", "TempPipe", PipeDirection.In))
|
|
{
|
|
// Connect to the pipe or wait until the pipe is available.
|
|
//Console.Write("Attempting to connect to pipe...");
|
|
pipeClient.Connect();
|
|
|
|
//Console.WriteLine("Connected to pipe.");
|
|
//Console.WriteLine("There are currently {0} pipe server instances open.",
|
|
// pipeClient.NumberOfServerInstances);
|
|
using (var sr = new StreamReader(pipeClient))
|
|
{
|
|
string temp;
|
|
|
|
while ((temp = sr.ReadLine()) != null)
|
|
{
|
|
CalibrationRecord record;
|
|
Double avgTof = 0;
|
|
Double reftemp = 0;
|
|
if (double.TryParse(temp, out reftemp))
|
|
{
|
|
avgTof = 0;
|
|
var i = 0;
|
|
while (currentGenesis.CurrentRecords.TryDequeue(out record))
|
|
{
|
|
if (record.Channel == 2)
|
|
{
|
|
avgTof = avgTof + record.TotalTimeOfFlightS;
|
|
i = 1 + i;
|
|
}
|
|
|
|
}
|
|
if (i > 0)
|
|
{
|
|
|
|
|
|
avgTof = avgTof / i;
|
|
if (!double.IsNaN(avgTof))
|
|
{
|
|
listTempTime.Enqueue(new TempTofCalc() { RefDate = DateTime.Now, RefTemp = reftemp, Tof = avgTof });
|
|
if (avgTof.ToString().Contains("a"))
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void InitializeContent()
|
|
{
|
|
this.mainMenuStrip.Padding = new Padding(5);
|
|
|
|
var menuFont = this.mainMenuStrip.Font;
|
|
var fontBold = new Font(menuFont.FontFamily, menuFont.Size, FontStyle.Bold);
|
|
|
|
this.slotsLabel = new ToolStripLabel
|
|
{
|
|
Text = "Slot: ",
|
|
AutoSize = true,
|
|
Font = fontBold,
|
|
ForeColor = Color.Gray
|
|
};
|
|
|
|
this.slotsList = new ToolStripComboBox
|
|
{
|
|
Items = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 },
|
|
SelectedIndex = 0,
|
|
AutoSize = true,
|
|
FlatStyle = FlatStyle.System,
|
|
DropDownStyle = ComboBoxStyle.DropDownList,
|
|
};
|
|
|
|
this.pcbidLabel = new ToolStripLabel
|
|
{
|
|
Text = "Pcb Id: ",
|
|
AutoSize = true,
|
|
TextAlign = ContentAlignment.MiddleRight,
|
|
Font = fontBold,
|
|
Margin = new Padding(10, 0, 0, 0),
|
|
ForeColor = Color.Gray
|
|
};
|
|
|
|
this.pcbidTextBox = new ToolStripTextBox
|
|
{
|
|
Text = "n/a",
|
|
AutoSize = true,
|
|
TextAlign = ContentAlignment.MiddleRight,
|
|
BorderStyle = BorderStyle.None,
|
|
ReadOnly = true,
|
|
BackColor = this.slotsList.BackColor
|
|
};
|
|
|
|
this.connectBtn = new ToolStripButton
|
|
{
|
|
Text = "Connect",
|
|
AutoSize = true,
|
|
Font = fontBold,
|
|
TextAlign = ContentAlignment.MiddleCenter,
|
|
Margin = new Padding(10, 0, 0, 0),
|
|
Padding = new Padding(10, 0, 10, 0),
|
|
BackColor = Color.LightGray,
|
|
Visible = true
|
|
};
|
|
this.connectBtn.Click += this.BtnConnect_Click;
|
|
|
|
this.disconnectBtn = new ToolStripButton
|
|
{
|
|
Text = "Disconnect",
|
|
AutoSize = true,
|
|
Font = fontBold,
|
|
TextAlign = ContentAlignment.MiddleCenter,
|
|
Margin = new Padding(10, 0, 0, 0),
|
|
Padding = new Padding(10, 0, 10, 0),
|
|
BackColor = Color.LightGray,
|
|
Visible = true
|
|
};
|
|
this.disconnectBtn.Click += this.BtnDisconnect_Click;
|
|
|
|
this.testBtn = new ToolStripButton
|
|
{
|
|
Text = "Test",
|
|
AutoSize = true,
|
|
Font = fontBold,
|
|
TextAlign = ContentAlignment.MiddleCenter,
|
|
Margin = new Padding(5, 0, 0, 0),
|
|
Padding = new Padding(10, 0, 10, 0),
|
|
BackColor = Color.LightGray
|
|
};
|
|
|
|
|
|
this.mainMenuStrip.Items.Add(this.slotsLabel);
|
|
this.mainMenuStrip.Items.Add(this.slotsList);
|
|
this.mainMenuStrip.Items.Add(this.pcbidLabel);
|
|
this.mainMenuStrip.Items.Add(this.pcbidTextBox);
|
|
this.mainMenuStrip.Items.Add(this.connectBtn);
|
|
this.mainMenuStrip.Items.Add(this.disconnectBtn);
|
|
this.mainMenuStrip.Items.Add(this.testBtn);
|
|
|
|
|
|
this.SetEnabled(ProgrammState.Start);
|
|
}
|
|
|
|
private void BtnDisconnect_Click(Object sender, EventArgs args)
|
|
{
|
|
try
|
|
{
|
|
this.currentGenesis.Dispose();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine(e);
|
|
}
|
|
finally
|
|
{
|
|
this.meterBatch.RemoveMeter(this.currentGenesis);
|
|
}
|
|
|
|
this.InvokeOnUIThread(new Action(() =>
|
|
{
|
|
this.currentGenesis = null;
|
|
this.pcbidTextBox.Text = "not connected";
|
|
this.SetEnabled(ProgrammState.Start);
|
|
this.UpdateConnectedMetersList();
|
|
}));
|
|
}
|
|
|
|
private void SetEnabled(ProgrammState state)
|
|
{
|
|
this.programmState = state;
|
|
|
|
|
|
}
|
|
|
|
private bool automatic = false;
|
|
private Object connectedMeters;
|
|
|
|
public void StartRecording()
|
|
{
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is ZeroFlowGenesisMeter zfgnsm)
|
|
{
|
|
zfgnsm.StartRecordData();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public void AddMessage(String message)
|
|
{
|
|
this.BeginInvoke(new Action(() =>
|
|
{
|
|
try
|
|
{
|
|
//var text = $"{message}{Environment.NewLine}" + this.automaticContentBox.Text;
|
|
//text = text.Substring(0, Math.Min(2000, text?.Length ?? 0));
|
|
|
|
//this.automaticContentBox.ResetText();
|
|
//this.automaticContentBox.AppendText(text);
|
|
//this.automaticContentBox.ScrollBars = RichTextBoxScrollBars.None;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
// TODO: implement logging.
|
|
}
|
|
}));
|
|
}
|
|
|
|
protected override void OnClosed(EventArgs args)
|
|
{
|
|
this.meterBatch.Dispose();
|
|
base.OnClosed(args);
|
|
}
|
|
|
|
protected override void OnFormClosed(FormClosedEventArgs e)
|
|
=> this.BtnDisconnect_Click(default(Object), EventArgs.Empty);
|
|
|
|
|
|
|
|
public void InvokeOnUIThread(Action action)
|
|
=> this.Invoke(action);
|
|
|
|
|
|
|
|
public bool StopLED(int slot)
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
foreach (var meter in this.meterBatch.ListOfMeters.Where(m => m.Slot == slot))
|
|
{
|
|
if (meter is ZeroFlowGenesisMeter zfgnsm)
|
|
{
|
|
if (!zfgnsm.IsLoggedOn)
|
|
{
|
|
zfgnsm.ReLogin();
|
|
}
|
|
|
|
zfgnsm.SetLcdText(false, new Byte[] { 0x10, 0x10 });
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
public bool StartLED(int slot)
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
foreach (var meter in this.meterBatch.ListOfMeters.Where(m => m.Slot == slot))
|
|
{
|
|
if (meter is ZeroFlowGenesisMeter zfgnsm)
|
|
{
|
|
if (!zfgnsm.IsLoggedOn)
|
|
{
|
|
zfgnsm.ReLogin();
|
|
}
|
|
|
|
zfgnsm.SetLcdText(true, new byte[] { 0x00, 0x00 });
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
private void MeterSelected(Object sender, ListViewItemSelectionChangedEventArgs e)
|
|
{
|
|
var pcbId = e?.Item?.Text;
|
|
|
|
this.InvokeOnUIThread(() =>
|
|
{
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is ZeroFlowGenesisMeter zfgnsm && zfgnsm.PcbId == pcbId)
|
|
{
|
|
this.currentGenesis = zfgnsm;
|
|
this.pcbidTextBox.Text = pcbId;
|
|
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void btnWirte_Click(Object sender, EventArgs e)
|
|
{
|
|
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
gen.WriteRegister("GENESISFLOW_SampleRate", (int)nudSampleRate.Value);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void BtnWritetemp_Click(Object sender, EventArgs e)
|
|
{
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
UInt32 TempToRegister = (UInt32)(nudTemp.Value * 4096);
|
|
gen.WriteRegister(Register.Genesisflow.ToFTempCalibrate, TempToRegister);
|
|
gen.Logout();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void brnRead_Click(Object sender, EventArgs e)
|
|
{
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
gen.ReLogin();
|
|
lblTof1.Text = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.ToFTempOffset1), 0).ToString();
|
|
lblTof2.Text = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.ToFTempOffset2), 0).ToString();
|
|
lblTof3.Text = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.ToFTempOffset3), 0).ToString();
|
|
|
|
nudZeroOffset1.Value = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.ZeroOffset1), 0);
|
|
nudZeroOffset2.Value = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.ZeroOffset2), 0);
|
|
nudZeroOffset3.Value = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.ZeroOffset3), 0);
|
|
|
|
|
|
nudCal1.Value = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.CalFactor1), 0);
|
|
nudCal2.Value = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.CalFactor2), 0);
|
|
nudCal3.Value = BitConverter.ToInt32(gen.ReadRegister(Register.Genesisflow.CalFactor3), 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void button3_Click(Object sender, EventArgs e)
|
|
{
|
|
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
gen.ReLogin();
|
|
|
|
gen.WriteRegister(Register.Genesisflow.ZeroOffset1, nudZeroOffset1.Value);
|
|
gen.WriteRegister(Register.Genesisflow.ZeroOffset2, nudZeroOffset2.Value);
|
|
gen.WriteRegister(Register.Genesisflow.ZeroOffset3, nudZeroOffset3.Value);
|
|
|
|
var r = gen.WriteRegister(Register.Genesisflow.CalFactor1, (UInt16)nudCal1.Value, true,true);
|
|
gen.WriteRegister(Register.Genesisflow.CalFactor2, (UInt16)nudCal2.Value, true, true);
|
|
gen.WriteRegister(Register.Genesisflow.CalFactor3, (UInt16)nudCal3.Value, true, true);
|
|
|
|
gen.WriteRegister(Register.Genesisflow.StoreCalibration, 1);
|
|
|
|
gen.Logout();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void ReCalibration_Click(Object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void btnStartM_Click(Object sender, EventArgs e)
|
|
{
|
|
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
gen.StartMeasurement();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnRefeshM_Click(Object sender, EventArgs e)
|
|
{
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
try
|
|
{
|
|
var r = gen.GetAllMeasurementResults(null, null, true);
|
|
foreach (var item in r)
|
|
{
|
|
|
|
switch (item.Channel)
|
|
{
|
|
case 0 :
|
|
lblFlowDisplay.Text = item.DutFlowRateCmPh.ToString();
|
|
break;
|
|
|
|
case 1:
|
|
lblFlowChnl1.Text = item.DutFlowRateCmPh.ToString();
|
|
break;
|
|
case 2:
|
|
lblFlowChnl2.Text = item.DutFlowRateCmPh.ToString();
|
|
break;
|
|
|
|
case 3:
|
|
lblFlowChnl3.Text = item.DutFlowRateCmPh.ToString();
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnStopM_Click(Object sender, EventArgs e)
|
|
{
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
gen.GetAllMeasurementResults(null, null, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void tabInit_Click(Object sender, EventArgs e)
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
private void btnGet_Click(Object sender, EventArgs e)
|
|
{
|
|
dgvInit.Rows.Clear();
|
|
var listRegs = new List<object>();
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.CalFactor1, "15625", "15625" });
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.CalFactor2, "15625", "15625" });
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.CalFactor3, "15625", "15625" });
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.ZeroOffset1, "0", "0" });
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.ZeroOffset2, "0", "0" });
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.ZeroOffset3, "0", "0" });
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.MeterSize, cb_Metersize.SelectedItem.GetHashCode().ToString(), cb_Metersize.SelectedItem.GetHashCode().ToString() });
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.LedMode, "6", "6" });
|
|
dgvInit.Rows.Add(new[] { Register.Genesisflow.TriggerActive, "1", "1" });
|
|
|
|
|
|
|
|
var r = LocalWebRequest.GetRequest($"{ ServiceUrls.GenesisFinalCheckServiceUrl()}GetMetersizeProgrammingData?MeterSize={cb_Metersize.SelectedItem.GetHashCode().GetHashCode()}", 2000);
|
|
var dt = JsonConvert.DeserializeObject<Dictionary<string, UInt32>>(r);
|
|
|
|
foreach (var item in dt)
|
|
{
|
|
dgvInit.Rows.Add(new[] { item.Key, item.Value.ToString(), item.Value.ToString() });
|
|
}
|
|
|
|
}
|
|
|
|
private void multiflancshCalibration_SelectedIndexChanged(Object sender, EventArgs e)
|
|
{
|
|
cb_Metersize.Items.Clear();
|
|
|
|
foreach (MeterSize size in (MeterSize[])Enum.GetValues(typeof(MeterSize)))
|
|
{
|
|
cb_Metersize.Items.Add(size);
|
|
}
|
|
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
var r = gen.ReadRegister(Register.Genesisflow.MeterSize);
|
|
|
|
var v = RegisterConverter.ByteArrayToValue<int>(r);
|
|
foreach (MeterSize size in (MeterSize[])Enum.GetValues(typeof(MeterSize)))
|
|
{
|
|
if (v == size.GetHashCode())
|
|
{
|
|
cb_Metersize.SelectedItem = size;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnSet_Click(Object sender, EventArgs e)
|
|
{
|
|
foreach (var meter in this.meterBatch.ListOfMeters)
|
|
{
|
|
if (meter is GenesisMeter gen)
|
|
{
|
|
foreach (var item in dgvInit.Rows)
|
|
{
|
|
if (item is DataGridViewRow row)
|
|
{
|
|
int val = 0;
|
|
Int64 valBig =0;
|
|
if (int.TryParse(row.Cells[1].Value.ToString(), out val))
|
|
{
|
|
if (!gen.WriteRegister(row.Cells[0].Value.ToString(), val))
|
|
{
|
|
MessageBox.Show(@"Error");
|
|
}
|
|
}
|
|
else if (Int64.TryParse(row.Cells[1].Value.ToString(), out valBig))
|
|
{
|
|
if (!gen.WriteRegister(row.Cells[0].Value.ToString(), valBig))
|
|
{
|
|
MessageBox.Show(@"Error");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
AmpHelper amp = new AmpHelper();
|
|
private void btnLoad_Click(Object sender, EventArgs e)
|
|
{
|
|
amp = new AmpHelper();
|
|
amp.Init();
|
|
}
|
|
|
|
private void ShowAmps()
|
|
{
|
|
|
|
//foreach (var item in collection)
|
|
//{
|
|
|
|
//}
|
|
//dgvAmps
|
|
}
|
|
}
|
|
}
|