예제 #1
0
        public async Task ClientWriteCoilsTest()
        {
            // Function Code 0x0F

            byte[] expectedRequest = new byte[] { 0, 0, 0, 9, 4, 15, 0, 20, 0, 10, 2, 205, 1 };

            using var server = new MiniTestServer
                  {
                      RequestHandler = (request, clientIp) =>
                      {
                          CollectionAssert.AreEqual(expectedRequest, request.Skip(2).ToArray(), "Request is incorrect");
                          Console.WriteLine("Server sending response");
                          return(new byte[] { request[0], request[1], 0, 0, 0, 6, 4, 15, 0, 20, 0, 10 });
                      }
                  };
            server.Start();

            using var client = new ModbusClient(IPAddress.Loopback, server.Port, new ConsoleLogger());
            await client.Connect();

            Assert.IsTrue(client.IsConnected);

            var coils = new List <Coil>
            {
                new Coil {
                    Address = 20, BoolValue = true
                },
                new Coil {
                    Address = 21, BoolValue = false
                },
                new Coil {
                    Address = 22, BoolValue = true
                },
                new Coil {
                    Address = 23, BoolValue = true
                },
                new Coil {
                    Address = 24, BoolValue = false
                },
                new Coil {
                    Address = 25, BoolValue = false
                },
                new Coil {
                    Address = 26, BoolValue = true
                },
                new Coil {
                    Address = 27, BoolValue = true
                },
                new Coil {
                    Address = 28, BoolValue = true
                },
                new Coil {
                    Address = 29, BoolValue = false
                },
            };
            bool success = await client.WriteCoils(4, coils);

            Assert.IsTrue(string.IsNullOrWhiteSpace(server.LastError), server.LastError);
            Assert.IsTrue(success);
        }