| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | using ModbusSimulationProtocol.Interface;using ModbusSimulationProtocol.Services;using ModBusTcp;using NModbus;using ProtocalGeneral;using System.Net.Sockets;namespace ModbusMasterSlaveSim;internal class Program {    static void Main(string[] args)    {        IModbusLogger logger =new ModbusLogger();        IModbusSlaveService modbusSlaveService =new ModbusSlaveService(logger);        modbusSlaveService.Initialize("127.0.0.1", 1502, 1);        modbusSlaveService.Open();        var coilDiscretes = modbusSlaveService.SlaveDataStore.CoilDiscretes;        modbusSlaveService.TryWriteValues(coilDiscretes, 0, [true, false, true, true]);        modbusSlaveService.TryReadValues(coilDiscretes,0,5,out var outPoints);        if (outPoints is not null)        {            foreach (var point in outPoints)            {                Console.WriteLine(point);            }        }        //TcpClient masterTcpClient = new TcpClient("127.0.0.1", 1502);        //var factory = new ModbusFactory();        //var master = factory.CreateMaster(masterTcpClient);        //Task.Factory.StartNew(async () =>         //{        //    Console.WriteLine("Waiting for 3s...");        //    await Task.Delay(3000);        //    master.WriteSingleCoil(1, 10, true);        //    var rst = master.ReadCoils(1, 10, 2);        //    if (rst is not null)        //    {        //        foreach (var point in rst)        //        {        //            Console.WriteLine(point);        //        }        //    }        //});        Modbus_Tcp modbus_Tcp=new Modbus_Tcp();        modbus_Tcp.Initialize("Master", new ConnectionNotify());        modbus_Tcp.Open("127.0.0.1", 1502);        modbus_Tcp.SetValue(10, 100);        Task.Delay(3000).Wait();        modbusSlaveService.TryReadValues(modbusSlaveService.SlaveDataStore.HoldingRegisters, 10, 5, out var outPoints2);        Task.Delay(Timeout.Infinite).GetAwaiter().GetResult();    }}public class ConnectionNotify : ITcpConnectNority{    public void Connect(string ip, int port)    {            }    public void DisConnect(string ip, int port)    {            }}
 |