Автозаряд и авторазряд will do well.

This commit is contained in:
ftc
2024-03-03 18:19:35 +03:00
parent acaba420d6
commit c93ec551a6
9 changed files with 432 additions and 48 deletions
+16 -8
View File
@@ -11,6 +11,8 @@ namespace charger_gui
class UpdateWorker
{
const int SLAVE_ADDRESS = 1;
const int CHARGE_REGISTER = 4;
const int LAMP_REGISTER = 5;
private MainWindowViewModel model;
private Thread workingThread;
@@ -21,7 +23,7 @@ namespace charger_gui
isWorking = false;
shouldRestart = false;
workingThread = new Thread(Work);
model.isConnected = false;
model.IsConnected = false;
}
private bool isWorking;
@@ -47,6 +49,7 @@ namespace charger_gui
private void Work()
{
while (true)
{
try
@@ -57,6 +60,7 @@ namespace charger_gui
serialPort.DataBits = 8;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.ReadTimeout = 50;
serialPort.Open();
// create modbus master
@@ -64,19 +68,23 @@ namespace charger_gui
while (!shouldRestart)
{
var r1 = master.ReadHoldingRegisters(SLAVE_ADDRESS, 0, 4);
model.iAcc = ToFloat(r1[0], r1[1]);
model.iLamp = ToFloat(r1[2], r1[3]);
var r2 = master.ReadHoldingRegisters(SLAVE_ADDRESS, 6, 4);
model.uAcc = ToFloat(r2[0], r2[1]);
model.uLamp = ToFloat(r2[2], r2[3]);
model.IAcc = ToFloat(r1[0], r1[1]);
model.ILamp = ToFloat(r1[2], r1[3]);
var r2 = master.ReadHoldingRegisters(SLAVE_ADDRESS, 6, 8);
model.U1Acc = ToFloat(r2[0], r2[1]);
model.U2Acc = ToFloat(r2[2], r2[3]);
model.U1Lamp = ToFloat(r2[4], r2[5]);
model.U2Lamp = ToFloat(r2[6], r2[7]);
master.WriteSingleRegister(SLAVE_ADDRESS, CHARGE_REGISTER, (ushort)(model.IsCharging ? 1 : 0));
master.WriteSingleRegister(SLAVE_ADDRESS, LAMP_REGISTER, (ushort)(model.IsLampOn ? 1 : 0));
// ничего не упало, коннект есть значит
model.isConnected = true;
model.IsConnected = true;
}
}
}
catch (Exception e)
{
model.isConnected = false;
model.IsConnected = false;
Thread.Sleep(100);
// will continue
}