FactoryExtensions.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using NModbus.Device;
  2. using NModbus.IO;
  3. namespace NModbus
  4. {
  5. /// <summary>
  6. /// Extension methods for the IModbusFactory interface.
  7. /// </summary>
  8. public static class FactoryExtensions
  9. {
  10. /// <summary>
  11. /// Creates an RTU master.
  12. /// </summary>
  13. /// <param name="factory"></param>
  14. /// <param name="streamResource"></param>
  15. /// <returns></returns>
  16. public static IModbusSerialMaster CreateRtuMaster(this IModbusFactory factory, IStreamResource streamResource)
  17. {
  18. IModbusRtuTransport transport = factory.CreateRtuTransport(streamResource);
  19. return new ModbusSerialMaster(transport);
  20. }
  21. /// <summary>
  22. /// Creates an ASCII master.
  23. /// </summary>
  24. /// <param name="factory"></param>
  25. /// <param name="streamResource"></param>
  26. /// <returns></returns>
  27. public static IModbusSerialMaster CreateAsciiMaster(this IModbusFactory factory, IStreamResource streamResource)
  28. {
  29. IModbusAsciiTransport transport = factory.CreateAsciiTransport(streamResource);
  30. return new ModbusSerialMaster(transport);
  31. }
  32. /// <summary>
  33. /// Creates a TCP or UDP master.
  34. /// </summary>
  35. /// <param name="factory"></param>
  36. /// <param name="streamResource"></param>
  37. /// <returns></returns>
  38. public static IModbusMaster CreateIpMaster(this IModbusFactory factory, IStreamResource streamResource)
  39. {
  40. IModbusTransport transport = factory.CreateIpTransport(streamResource);
  41. return new ModbusIpMaster(transport);
  42. }
  43. /// <summary>
  44. /// Creates an RTU slave network.
  45. /// </summary>
  46. /// <param name="factory"></param>
  47. /// <param name="streamResource"></param>
  48. /// <returns></returns>
  49. public static IModbusSlaveNetwork CreateRtuSlaveNetwork(this IModbusFactory factory,
  50. IStreamResource streamResource)
  51. {
  52. IModbusRtuTransport transport = factory.CreateRtuTransport(streamResource);
  53. return factory.CreateSlaveNetwork(transport);
  54. }
  55. /// <summary>
  56. /// Creates an ASCII slave network.
  57. /// </summary>
  58. /// <param name="factory"></param>
  59. /// <param name="streamResource"></param>
  60. /// <returns></returns>
  61. public static IModbusSlaveNetwork CreateAsciiSlaveNetwork(this IModbusFactory factory,
  62. IStreamResource streamResource)
  63. {
  64. IModbusAsciiTransport transport = factory.CreateAsciiTransport(streamResource);
  65. return factory.CreateSlaveNetwork(transport);
  66. }
  67. }
  68. }