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 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 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"; } } } }