/// <summary> /// Check if all registers from (starting_address + quantity_of_registers) are present in device database /// </summary> /// <param name="unitID">Unit ID</param> /// <param name="table">Tabella del database modbus</param> /// <param name="startingAddress">Starting address (offset) in database</param> /// <param name="numRegisters">Quantity of registers to read/write</param> /// <returns>True if register are present, otherwhise False</returns> bool IsAllRegistersPresent(byte unitID, ModbusDBTables table, ushort startingAddress, ushort numRegisters) { bool result = true; switch (table) { case ModbusDBTables.DISCRETE_INPUTS_REGISTERS: try { ModbusDatabase.Single(x => x.UnitID == unitID).DiscreteInputs.ToList().GetRange(startingAddress, numRegisters); } catch { result = false; } break; case ModbusDBTables.COIL_REGISTERS: try { ModbusDatabase.Single(x => x.UnitID == unitID).Coils.ToList().GetRange(startingAddress, numRegisters); } catch { result = false; } break; case ModbusDBTables.INPUT_REGISTERS: try { ModbusDatabase.Single(x => x.UnitID == unitID).InputRegisters.ToList().GetRange(startingAddress, numRegisters); } catch { result = false; } break; case ModbusDBTables.HOLDING_REGISTERS: try { ModbusDatabase.Single(x => x.UnitID == unitID).HoldingRegisters.ToList().GetRange(startingAddress, numRegisters); } catch { result = false; } break; default: result = false; break; } return(result); }
/// <summary> /// Check if all registers from (starting_address + quantity_of_registers) are present in device database /// </summary> /// <param name="unit_id">Unit ID</param> /// <param name="table">Tabella del database modbus</param> /// <param name="starting_address">Starting address (offset) in database</param> /// <param name="quantity_of_registers">Quantity of registers to read/write</param> /// <returns>True if register are present, otherwhise False</returns> bool IsAllRegistersPresent(byte unit_id, ModbusDBTables table, ushort starting_address, ushort quantity_of_registers) { bool ret = true; switch (table) { case ModbusDBTables.DISCRETE_INPUTS_REGISTERS: try { modbus_db.Single(x => x.UnitID == unit_id).DiscreteInputs.ToList().GetRange(starting_address, quantity_of_registers); } catch { ret = false; } break; case ModbusDBTables.COIL_REGISTERS: try { modbus_db.Single(x => x.UnitID == unit_id).Coils.ToList().GetRange(starting_address, quantity_of_registers); } catch { ret = false; } break; case ModbusDBTables.INPUT_REGISTERS: try { modbus_db.Single(x => x.UnitID == unit_id).InputRegisters.ToList().GetRange(starting_address, quantity_of_registers); } catch { ret = false; } break; case ModbusDBTables.HOLDING_REGISTERS: try { modbus_db.Single(x => x.UnitID == unit_id).HoldingRegisters.ToList().GetRange(starting_address, quantity_of_registers); } catch { ret = false; } break; default: ret = false; break; } return ret; }