103 lines
3.0 KiB
C#
103 lines
3.0 KiB
C#
using System;
|
|
using System.Collections.Concurrent;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
|
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
|
|
|
namespace Xylem.Common.Ui.GenesisToolBox
|
|
{
|
|
public partial class FrmMultiWrite : Form
|
|
{
|
|
public FrmMultiWrite(GenesisMeter _currentGenesis, ConcurrentDictionary<RegisterDefinition, Byte[]> listOfRegister = null)
|
|
{
|
|
InitializeComponent();
|
|
|
|
if (listOfRegister == null)
|
|
{
|
|
listOfRegister = _currentGenesis.GetRegistersDic();
|
|
}
|
|
ListOfRegister = listOfRegister;
|
|
CurrentMeter = _currentGenesis;
|
|
cbxRegister.Items.Clear();
|
|
foreach (var item in listOfRegister.OrderBy(o => o.Key.GetIdent()))
|
|
{
|
|
cbxRegister.Items.Add(item.Key.GetIdent());
|
|
}
|
|
cbxRegister.SelectedIndex = 0;
|
|
|
|
}
|
|
|
|
public ConcurrentDictionary<RegisterDefinition, Byte[]> ListOfRegister { get; internal set; }
|
|
public GenesisMeter CurrentMeter { get; internal set; }
|
|
|
|
private void button1_Click(Object sender, EventArgs e)
|
|
{
|
|
CurrentMeter.ReadRegister(Register.System.MonotonicSeconds);
|
|
var nrOfReads = (Int32)numericUpDown1.Value;
|
|
var r = CurrentMeter.ReadRegister(((String)cbxRegister.SelectedItem), nrOfReads * 4);
|
|
if (r != null)
|
|
{
|
|
r.Reverse();
|
|
txtResult.Text = BitConverter.ToString(r);
|
|
}
|
|
else
|
|
{
|
|
txtResult.Text = "None";
|
|
}
|
|
|
|
}
|
|
|
|
private void btnWrite_Click(Object sender, EventArgs e)
|
|
{
|
|
|
|
String[] arr = txtResult.Text.Split('-');
|
|
Byte[] array = new Byte[arr.Length];
|
|
for (Int32 i = arr.Length - 1; i >= 0; i--) array[i] = Convert.ToByte(arr[i], 16);
|
|
array = array.Reverse().ToArray();
|
|
|
|
var res = CurrentMeter.WriteRegister(((String)cbxRegister.SelectedItem), array);
|
|
|
|
if (res)
|
|
{
|
|
MessageBox.Show(@"success");
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(@"error");
|
|
}
|
|
|
|
}
|
|
|
|
private void txtResult_TextChanged(Object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
|
|
String[] arr = txtResult.Text.Split('-');
|
|
Byte[] array = new Byte[arr.Length];
|
|
for (Int32 i = arr.Length - 1; i >= 0; i--) array[i] = Convert.ToByte(arr[i], 16);
|
|
array = array.Reverse().ToArray();
|
|
|
|
|
|
|
|
|
|
|
|
lblNrOFWirtes.Text = Math.Ceiling((Double)array.Length / 4).ToString();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
lblNrOFWirtes.Text = "NA";
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
}
|