public void FC023Test() { // Arrange var endpoint = EndpointSource.GetNext(); using var server = new ModbusTcpServer(); server.Start(endpoint); lock (server.Lock) { var buffer = server.GetHoldingRegisterBuffer <float>(); buffer[6] = 65.455F; buffer[7] = 24; buffer[8] = 25; } var client = new ModbusTcpClient(); client.Connect(endpoint); // Act var actual1 = client.ReadWriteMultipleRegisters <float, float>(0, 2, 10, 12, new float[] { 1.211F }); // Assert var expected = new float[] { 0, 0, 0, 0, 0, 1.211F, 24, 25, 0, 0 }; Assert.True(expected.SequenceEqual(actual1.ToArray())); lock (server.Lock) { var actual2 = server.GetHoldingRegisterBuffer <float>().Slice(1, 10); Assert.True(expected.SequenceEqual(actual2.ToArray())); } }
public async void ServerWorksWithExternalTcpClient() { // Arrange var endpoint = EndpointSource.GetNext(); var listener = new TcpListener(endpoint); using var server = new ModbusTcpServer(); var client = new ModbusTcpClient(); var expected = new double[] { 0.1, 0.2, 0.3, 0.4, 0.5 }; double[] actual = null; // Act listener.Start(); var clientTask = Task.Run(() => { client.Connect(endpoint); actual = client .ReadWriteMultipleRegisters <double, double>(0, 0, 5, 0, expected) .ToArray(); client.Disconnect(); }); var serverTask = Task.Run(() => { var tcpClient = listener.AcceptTcpClient(); server.Start(tcpClient); }); await clientTask; // Assert Assert.True(actual.SequenceEqual(expected)); }