Program.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using ModbusSimulationProtocol.Interface;
  2. using ModbusSimulationProtocol.Services;
  3. using ModBusTcp;
  4. using NModbus;
  5. using ProtocalGeneral;
  6. using System.Net.Sockets;
  7. namespace ModbusMasterSlaveSim;
  8. internal class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. IModbusLogger logger =new ModbusLogger();
  13. IModbusSlaveService modbusSlaveService =new ModbusSlaveService(logger);
  14. modbusSlaveService.Initialize("127.0.0.1", 1502, 1);
  15. modbusSlaveService.Open();
  16. var coilDiscretes = modbusSlaveService.SlaveDataStore.CoilDiscretes;
  17. modbusSlaveService.TryWriteValues(coilDiscretes, 0, [true, false, true, true]);
  18. modbusSlaveService.TryReadValues(coilDiscretes,0,5,out var outPoints);
  19. if (outPoints is not null)
  20. {
  21. foreach (var point in outPoints)
  22. {
  23. Console.WriteLine(point);
  24. }
  25. }
  26. //TcpClient masterTcpClient = new TcpClient("127.0.0.1", 1502);
  27. //var factory = new ModbusFactory();
  28. //var master = factory.CreateMaster(masterTcpClient);
  29. //Task.Factory.StartNew(async () =>
  30. //{
  31. // Console.WriteLine("Waiting for 3s...");
  32. // await Task.Delay(3000);
  33. // master.WriteSingleCoil(1, 10, true);
  34. // var rst = master.ReadCoils(1, 10, 2);
  35. // if (rst is not null)
  36. // {
  37. // foreach (var point in rst)
  38. // {
  39. // Console.WriteLine(point);
  40. // }
  41. // }
  42. //});
  43. Modbus_Tcp modbus_Tcp=new Modbus_Tcp();
  44. modbus_Tcp.Initialize("Master", new ConnectionNotify());
  45. modbus_Tcp.Open("127.0.0.1", 1502);
  46. modbus_Tcp.SetValue(10, 100);
  47. Task.Delay(3000).Wait();
  48. modbusSlaveService.TryReadValues(modbusSlaveService.SlaveDataStore.HoldingRegisters, 10, 5, out var outPoints2);
  49. modbus_Tcp.GetBuffer(10, 8, 1);
  50. Task.Delay(Timeout.Infinite).GetAwaiter().GetResult();
  51. }
  52. }
  53. public class ConnectionNotify : ITcpConnectNority
  54. {
  55. public void Connect(string ip, int port)
  56. {
  57. }
  58. public void DisConnect(string ip, int port)
  59. {
  60. }
  61. }