1
0
mirror of https://github.com/zhaopeiym/IoTClient synced 2025-10-26 22:15:44 +08:00

添加注释、补充使用说明

This commit is contained in:
BennyZhao
2021-04-19 20:19:51 +08:00
parent 9b8d98884d
commit c01ba65659
5 changed files with 528 additions and 150 deletions

View File

@@ -1,7 +1,9 @@
using IoTClient.Clients.Modbus;
using IoTClient.Enums;
using IoTClient.Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net;
using System.Threading.Tasks;
using Xunit;
@@ -19,6 +21,106 @@ namespace IoTClient.Tests.Modbus
client = new ModbusTcpClient(new IPEndPoint(ip, port));
}
[Fact]
public async Task ()
{
Random rnd = new Random((int)Stopwatch.GetTimestamp());
for (int i = 0; i < 10; i++)
{
#region
short short_number = (short)rnd.Next(short.MinValue, short.MaxValue);
ushort ushort_number = (ushort)rnd.Next(ushort.MinValue, ushort.MaxValue);
int int_number = rnd.Next(int.MinValue, int.MaxValue);
uint uint_number = (uint)Math.Abs(rnd.Next(int.MinValue, int.MaxValue));
long long_number = rnd.Next(int.MinValue, int.MaxValue);
ulong ulong_number = (ulong)Math.Abs(rnd.Next(int.MinValue, int.MaxValue));
float float_number = rnd.Next(int.MinValue, int.MaxValue) / 100;
double double_number = (double)rnd.Next(int.MinValue, int.MaxValue) / 100;
bool coil = int_number % 2 == 0;
#endregion
//写入地址:0 值为:short_number 站号:stationNumber 功能码:默认16(也可以自己传入对应的功能码)
client.Write("0", short_number, stationNumber, 16);
client.Write("4", ushort_number, stationNumber, 16);
client.Write("8", int_number, stationNumber, 16);
client.Write("12", uint_number, stationNumber, 16);
client.Write("16", long_number, stationNumber, 16);
client.Write("20", ulong_number, stationNumber, 16);
client.Write("24", float_number, stationNumber, 16);
client.Write("28", double_number, stationNumber, 16);
client.Write("32", coil, stationNumber, 5);
//写入可能有一定的延时500毫秒后检验
await Task.Delay(500);
//读取地址:0 站号:stationNumber 功能码:默认16(也可以自己传入对应的功能码)
var read_short_number = client.ReadInt16("0", stationNumber, 3).Value;
Assert.True(read_short_number == short_number);
Assert.True(client.ReadUInt16("4", stationNumber, 3).Value == ushort_number);
Assert.True(client.ReadInt32("8", stationNumber, 3).Value == int_number);
Assert.True(client.ReadUInt32("12", stationNumber, 3).Value == uint_number);
Assert.True(client.ReadInt64("16", stationNumber, 3).Value == long_number);
Assert.True(client.ReadUInt64("20", stationNumber, 3).Value == ulong_number);
Assert.True(client.ReadFloat("24", stationNumber, 3).Value == float_number);
Assert.True(client.ReadDouble("28", stationNumber, 3).Value == double_number);
Assert.True(client.ReadCoil("32", stationNumber, 1).Value == coil);
}
}
[Fact]
public async Task ()
{
client.Open();
Random rnd = new Random((int)Stopwatch.GetTimestamp());
for (int i = 0; i < 10; i++)
{
#region
short short_number = (short)rnd.Next(short.MinValue, short.MaxValue);
ushort ushort_number = (ushort)rnd.Next(ushort.MinValue, ushort.MaxValue);
int int_number = rnd.Next(int.MinValue, int.MaxValue);
uint uint_number = (uint)Math.Abs(rnd.Next(int.MinValue, int.MaxValue));
long long_number = rnd.Next(int.MinValue, int.MaxValue);
ulong ulong_number = (ulong)Math.Abs(rnd.Next(int.MinValue, int.MaxValue));
float float_number = rnd.Next(int.MinValue, int.MaxValue) / 100;
double double_number = (double)rnd.Next(int.MinValue, int.MaxValue) / 100;
bool coil = int_number % 2 == 0;
#endregion
//写入地址:0 值为:short_number 站号:stationNumber 功能码:默认16(也可以自己传入对应的功能码)
client.Write("0", short_number, stationNumber, 16);
client.Write("4", ushort_number, stationNumber, 16);
client.Write("8", int_number, stationNumber, 16);
client.Write("12", uint_number, stationNumber, 16);
client.Write("16", long_number, stationNumber, 16);
client.Write("20", ulong_number, stationNumber, 16);
client.Write("24", float_number, stationNumber, 16);
client.Write("28", double_number, stationNumber, 16);
client.Write("32", coil, stationNumber, 5);
//写入可能有一定的延时500毫秒后检验
await Task.Delay(500);
//读取地址:0 站号:stationNumber 功能码:默认16(也可以自己传入对应的功能码)
var read_short_number = client.ReadInt16("0", stationNumber, 3).Value;
Assert.True(read_short_number == short_number);
Assert.True(client.ReadUInt16("4", stationNumber, 3).Value == ushort_number);
Assert.True(client.ReadInt32("8", stationNumber, 3).Value == int_number);
Assert.True(client.ReadUInt32("12", stationNumber, 3).Value == uint_number);
Assert.True(client.ReadInt64("16", stationNumber, 3).Value == long_number);
Assert.True(client.ReadUInt64("20", stationNumber, 3).Value == ulong_number);
Assert.True(client.ReadFloat("24", stationNumber, 3).Value == float_number);
Assert.True(client.ReadDouble("28", stationNumber, 3).Value == double_number);
Assert.True(client.ReadCoil("32", stationNumber, 1).Value == coil);
}
client.Close();
}
[Fact]
public void ()
{
@@ -61,91 +163,5 @@ namespace IoTClient.Tests.Modbus
});
var result = client.BatchRead(list);
}
/// <summary>
/// Modbus值的写入有一定的延时500毫秒后检验
/// </summary>
/// <returns></returns>
[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);
int numberInt32 = -12;
client.Write("4", numberInt32, stationNumber);
await Task.Delay(500);
Assert.True(client.ReadInt32("4", stationNumber).Value == numberInt32);
float numberFloat = 112;
client.Write("4", numberFloat, stationNumber);
await Task.Delay(500);
Assert.True(client.ReadFloat("4", stationNumber).Value == numberFloat);
double numberDouble = 32;
client.Write("4", numberDouble, stationNumber);
await Task.Delay(500);
Assert.True(client.ReadDouble("4", stationNumber).Value == numberDouble);
}
[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);
int numberInt32 = -12;
client.Write("4", numberInt32, stationNumber);
await Task.Delay(500);
Assert.True(client.ReadInt32("4", stationNumber).Value == numberInt32);
float numberFloat = 112;
client.Write("4", numberFloat, stationNumber);
await Task.Delay(500);
Assert.True(client.ReadFloat("4", stationNumber).Value == numberFloat);
double numberDouble = 32;
client.Write("4", numberDouble, stationNumber);
await Task.Delay(500);
Assert.True(client.ReadDouble("4", stationNumber).Value == numberDouble);
client.Close();
}
}
}