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); modbus_Tcp.GetBuffer(10, 8, 1); Task.Delay(Timeout.Infinite).GetAwaiter().GetResult(); } } public class ConnectionNotify : ITcpConnectNority { public void Connect(string ip, int port) { } public void DisConnect(string ip, int port) { } }