150 lines
4.5 KiB
C#
150 lines
4.5 KiB
C#
using Newtonsoft.Json;
|
|
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using Xylem.Common.CommonCore.Consts;
|
|
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
|
|
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<SlotConfig[]>(_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.ByteArrayToValue<Int32>(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 = (Int32)numericUpDown1.Value * 1000;
|
|
timer1.Enabled = true;
|
|
|
|
meterBatch = new MeterBatch();
|
|
|
|
foreach (var item in cblSlots.CheckedItems)
|
|
{
|
|
var meter = new GenesisMeter();
|
|
meter.SetupFromConfigFile((Int32)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;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|