SlaveDataStore.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using NModbus;
  2. namespace ModbusSimulationProtocol.Data;
  3. public class SlaveDataStore : ISlaveDataStore
  4. {
  5. private readonly IPointSource<bool> _coilDiscretes;
  6. private readonly IPointSource<bool> _coilInputs;
  7. private readonly IPointSource<ushort> _holdingRegisters;
  8. private readonly IPointSource<ushort> _inputRegisters;
  9. public SlaveDataStore(
  10. int coilDiscreteCount,
  11. int coilInputCount,
  12. int holdingRegisterCount,
  13. int inputRegisterCount)
  14. {
  15. _coilDiscretes = new PointSource<bool>(coilDiscreteCount, writeable: true);
  16. _coilInputs = new PointSource<bool>(coilInputCount, writeable: false);
  17. _holdingRegisters = new PointSource<ushort>(holdingRegisterCount, writeable: true);
  18. _inputRegisters = new PointSource<ushort>(inputRegisterCount, writeable: false);
  19. }
  20. /// <summary>
  21. /// Read and Write
  22. /// </summary>
  23. public IPointSource<bool> CoilDiscretes => _coilDiscretes;
  24. /// <summary>
  25. /// Read Only
  26. /// </summary>
  27. public IPointSource<bool> CoilInputs => _coilInputs;
  28. /// <summary>
  29. /// Read and Write
  30. /// </summary>
  31. public IPointSource<ushort> HoldingRegisters => _holdingRegisters;
  32. /// <summary>
  33. /// Read Only
  34. /// </summary>
  35. public IPointSource<ushort> InputRegisters => _inputRegisters;
  36. }