using Newtonsoft.Json; using System; using System.IO; using System.Text; using System.Windows.Forms; using Xylem.Common.CommonCore.Consts; using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig; using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore; using Xylem.Common.Hardware.WaterMeter.Genesis.Registers; using Xylem.Common.Hardware.WaterMeter.WaterMeterCore; namespace Xylem.Common.Ui.GenesisToolBox { public partial class FrmPressure : Form { public FrmPressure() { InitializeComponent(); } private void FrmPressure_Load(object sender, System.EventArgs e) { var configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), nameof(Hardware.WaterMeter.Genesis), ProgramConfig.SerialConfigFileName); if (!File.Exists(configFile)) { configFile = Path.Combine(ProgramConfig.SerialConfigFileName); if (!File.Exists(configFile)) { throw new ApplicationException($"Configuration file {configFile} not found "); } } if (!File.Exists(configFile)) { return; } SlotConfig[] meterConfigList; using (var tr = new StreamReader(configFile)) { var _fileString = tr.ReadToEnd(); meterConfigList = JsonConvert.DeserializeObject(_fileString); } cblSlots.Items.Clear(); foreach (var item in meterConfigList) { cblSlots.Items.Add(item.Slot, false); } } private void button1_Click(object sender, System.EventArgs e) { } private void timer1_Tick(object sender, System.EventArgs e) { if (meterBatch != null) { var sb = new StringBuilder(); sb.Append($"{DateTime.Now} ;"); foreach (var item in meterBatch.ListOfMeters) { if (item is GenesisMeter meter) { try { if (meter.ReLogin()) { var a = meter.WriteRegister("METROLOGYASST_PressureMeasure", 1, true); if (a) { var toEinheit = RegisterConverter.ConvertTo(meter.ReadRegister("METROLOGYASST_PressureMeasure")); sb.Append($" {meter.Slot } : {toEinheit} Pa;"); meter.WriteLog($" Pressure : {toEinheit} Pa;"); } } } catch (Exception ex) { sb.Append($" {meter.Slot } : {ex} ;"); } } } textBox1.Text = textBox1.Text + System.Environment.NewLine + sb.ToString(); } } private MeterBatch meterBatch; private void btnStart_Click(object sender, EventArgs e) { btnStart.Enabled = false; try { if (!timer1.Enabled) { timer1.Interval = (int)numericUpDown1.Value * 1000; timer1.Enabled = true; meterBatch = new MeterBatch(); foreach (var item in cblSlots.CheckedItems) { var meter = new GenesisMeter(); meter.SetupFromConfigFile((int)item); meterBatch.AddMeter(meter); meter.Login(); meter.WriteRegister("METROLOGYASST_PressurePresent", true, true); } btnStart.Text = "Stop"; } else { btnStart.Text = "Start"; meterBatch.Dispose(); timer1.Enabled = false; } } catch (Exception ex) { btnStart.Text = "Start"; meterBatch.Dispose(); timer1.Enabled = false; } finally { btnStart.Enabled = true; } } } }