Different types of units. Writing values, relay unit

This commit is contained in:
ftc
2021-09-12 16:01:26 +03:00
parent 80cad276e8
commit cfd8d4c018
10 changed files with 296 additions and 74 deletions
+26
View File
@@ -111,6 +111,32 @@ namespace ESPServer
response.Add((byte)(value & 0xFF));
}
}
else if (function == 0x06)
{
int addr = (((int)received[8] << 8) | (int)received[9]);
int value = (((int)received[10] << 8) | (int)received[11]);
registers.WriteRegister(addr, value);
response.Add((byte)((addr >> 8) & 0xFF));
response.Add((byte)(addr & 0xFF));
response.Add((byte)((value >> 8) & 0xFF));
response.Add((byte)(value & 0xFF));
}
else if (function == 0x10)
{
int addr = (((int)received[8] << 8) | (int)received[9]);
int amount = (((int)received[10] << 8) | (int)received[11]);
// received[12] is amount of data bytes (2 * amount)
List<int> values = new List<int>();
for (int a = 0; a < amount; a++)
{
values.Add(((int)received[13 + 2 * a] << 8) | (int)received[14 + 2 * a]);
}
registers.WriteRegisters(addr, values.ToArray());
response.Add((byte)((addr >> 8) & 0xFF));
response.Add((byte)(addr & 0xFF));
response.Add((byte)((amount >> 8) & 0xFF));
response.Add((byte)(amount & 0xFF));
}
else
{
throw new Exception("Unsupported function: " + function);