using IoTClient.Clients.ModBus; using IoTServer.Common; using System.Net; using System.Threading.Tasks; using Xunit; namespace IoTClient.Tests.ModBus { public class ModBusTcpClient_tests { ModBusTcpClient client; byte stationNumber = 2;//站号 public ModBusTcpClient_tests() { var ip = IPAddress.Parse("ip".GetConfig()); var port = int.Parse("port".GetConfig()); client = new ModBusTcpClient(new IPEndPoint(ip, port)); } /// /// 值的写入有一定的延时,修改500毫秒后检验 /// /// [Fact] public async Task 短连接自动开关() { short Number = 33; client.Write("4", Number, stationNumber); await Task.Delay(500); Assert.True(client.ReadInt16("4", stationNumber).Value == Number); Number = 34; client.Write("4", Number, stationNumber); await Task.Delay(500); Assert.True(client.ReadInt16("4", stationNumber).Value == Number); Number = 1; client.Write("12", Number, stationNumber); await Task.Delay(500); Assert.True(client.ReadInt16("12", stationNumber).Value == 1); Number = 0; client.Write("12", Number, stationNumber); await Task.Delay(500); Assert.True(client.ReadInt16("12", stationNumber).Value == 0); } [Fact] public async Task 长连接主动开关() { client.Open(); short Number = 33; client.Write("4", Number, stationNumber); await Task.Delay(500); Assert.True(client.ReadInt16("4", stationNumber).Value == Number); Number = 34; client.Write("4", Number, stationNumber); await Task.Delay(500); Assert.True(client.ReadInt16("4", stationNumber).Value == Number); Number = 1; client.Write("12", Number, stationNumber); await Task.Delay(500); Assert.True(client.ReadInt16("12", stationNumber).Value == 1); Number = 0; client.Write("12", Number, stationNumber); await Task.Delay(500); Assert.True(client.ReadInt16("12", stationNumber).Value == 0); client.Close(); } } }