Different types of units. Writing values, relay unit
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user