Skip to content

Commit e1df503

Browse files
committed
Changed .NET 6.0 target to .NET Standard 2.0
1 parent f10dd1e commit e1df503

10 files changed

Lines changed: 44 additions & 35 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [2.2.0] - 2022-11-12
8+
### Changed
9+
- .NET 6.0 target to .NET Standard 2.0.
10+
711
## [2.1.0] - 2022-10-12
812
### Added
913
- ConnectTimeout property.

Examples/ModbusClient/ModbusClient.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<ItemGroup>
1212
<PackageReference Include="PL.Tree" Version="1.0.0" />
1313
<PackageReference Include="PL.Tree.WinForms" Version="1.0.0" />
14-
<PackageReference Include="System.IO.Ports" Version="6.0.0" />
14+
<PackageReference Include="System.IO.Ports" Version="7.0.0" />
1515
</ItemGroup>
1616

1717
<ItemGroup>

Examples/ModbusMemoryTest/ModbusMemoryTest.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<ItemGroup>
1212
<PackageReference Include="PL.Tree" Version="1.0.0" />
1313
<PackageReference Include="PL.Tree.WinForms" Version="1.0.0" />
14-
<PackageReference Include="System.IO.Ports" Version="6.0.0" />
14+
<PackageReference Include="System.IO.Ports" Version="7.0.0" />
1515
</ItemGroup>
1616

1717
<ItemGroup>

Examples/ModbusSpeedTest/ModbusSpeedTest.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<ItemGroup>
1212
<PackageReference Include="PL.Tree" Version="1.0.0" />
1313
<PackageReference Include="PL.Tree.WinForms" Version="1.0.0" />
14-
<PackageReference Include="System.IO.Ports" Version="6.0.0" />
14+
<PackageReference Include="System.IO.Ports" Version="7.0.0" />
1515
</ItemGroup>
1616

1717
<ItemGroup>

PL.Modbus/Client.cs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
using System.Text;
1+
using System;
2+
using System.Text;
3+
using System.Threading;
24
using System.Collections;
5+
using System.Collections.Generic;
6+
using System.Linq;
37
using System.IO.Ports;
48

59
namespace PL.Modbus
@@ -115,9 +119,9 @@ public virtual byte[] Command(byte functionCode, byte[] data)
115119
_stream.Write(commandBuffer);
116120

117121
string responseString = Encoding.ASCII.GetString(_stream.ReadTo((byte)'\n'));
118-
if (responseString[0] != ':' || responseString[^2..] != "\r\n")
122+
if (responseString[0] != ':' || responseString.Substring(responseString.Length - 2) != "\r\n")
119123
responseError = true;
120-
responseBuffer = Utility.AsciiStringToByteArray(responseString[1..^2]);
124+
responseBuffer = Utility.AsciiStringToByteArray(responseString.Substring(1, responseString.Length - 3));
121125
break;
122126

123127
case Protocol.Tcp:
@@ -151,7 +155,7 @@ public virtual byte[] Command(byte functionCode, byte[] data)
151155
_stream.ReadAvailableData();
152156
if (DelayAfterRead > 0)
153157
Thread.Sleep(DelayAfterRead);
154-
throw new("Modbus response error.");
158+
throw new System.Exception("Modbus response error.");
155159
}
156160

157161
if (_protocol == Protocol.Rtu)
@@ -170,7 +174,7 @@ public virtual byte[] Command(byte functionCode, byte[] data)
170174
_stream.ReadAvailableData();
171175
if (DelayAfterRead > 0)
172176
Thread.Sleep(DelayAfterRead);
173-
throw new("Modbus CRC error.");
177+
throw new System.Exception("Modbus CRC error.");
174178
}
175179

176180
if (DelayAfterRead > 0)
@@ -182,11 +186,11 @@ public virtual byte[] Command(byte functionCode, byte[] data)
182186
switch (_protocol)
183187
{
184188
case Protocol.Rtu:
185-
return responseBuffer[2..^2];
189+
return responseBuffer.Skip(2).Take(responseBuffer.Length - 4).ToArray();
186190
case Protocol.Ascii:
187-
return responseBuffer[2..^1];
191+
return responseBuffer.Skip(2).Take(responseBuffer.Length - 3).ToArray();
188192
default:
189-
return responseBuffer[2..];
193+
return responseBuffer.Skip(2).ToArray();
190194
}
191195
}
192196
}
@@ -384,12 +388,12 @@ protected virtual byte[] ReadRtuData(byte functionCode)
384388
_stream.ReadAvailableData();
385389
if (DelayAfterRead > 0)
386390
Thread.Sleep(DelayAfterRead);
387-
throw new("Unknown Modbus function code.");
391+
throw new System.Exception("Unknown Modbus function code.");
388392
}
389393

390394
private List<bool> ReadBits(byte functionCode, ushort address, ushort numberOfBits)
391395
{
392-
List<bool> bits = new();
396+
List<bool> bits = new List<bool>();
393397
foreach (var addressRange in Utility.SplitAddressRange(address, numberOfBits, 2000))
394398
{
395399
byte[] commandData = new byte[4];
@@ -398,7 +402,7 @@ private List<bool> ReadBits(byte functionCode, ushort address, ushort numberOfBi
398402
BitConverter.GetBytes(addressRange.NumberOfItems).CopyTo(commandData, 2);
399403
Array.Reverse(commandData, 2, 2);
400404

401-
BitArray responseData = new(Command(functionCode, commandData)[1..]);
405+
BitArray responseData = new BitArray(Command(functionCode, commandData).Skip(1).ToArray());
402406

403407
int maxIndex = Math.Min(addressRange.NumberOfItems, responseData.Length);
404408
for (int j = 0; j < maxIndex; j++)
@@ -409,7 +413,7 @@ private List<bool> ReadBits(byte functionCode, ushort address, ushort numberOfBi
409413

410414
private List<ushort> ReadRegisters(byte functionCode, ushort address, ushort numberOfRegisters)
411415
{
412-
List<ushort> registers = new();
416+
List<ushort> registers = new List<ushort>();
413417
foreach (var addressRange in Utility.SplitAddressRange(address, numberOfRegisters, 125))
414418
{
415419
byte[] commandData = new byte[4];
@@ -418,7 +422,7 @@ private List<ushort> ReadRegisters(byte functionCode, ushort address, ushort num
418422
BitConverter.GetBytes(addressRange.NumberOfItems).CopyTo(commandData, 2);
419423
Array.Reverse(commandData, 2, 2);
420424

421-
byte[] responseData = Command(functionCode, commandData)[1..];
425+
byte[] responseData = Command(functionCode, commandData).Skip(1).ToArray();
422426

423427
int maxIndex = Math.Min(addressRange.NumberOfItems * 2, responseData.Length / 2 * 2);
424428
for (int j = 0; j < maxIndex; j+=2)

PL.Modbus/NetworkStream.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.IO.Ports;
1+
using System;
2+
using System.Threading;
23
using System.Net.Sockets;
34

45
namespace PL.Modbus
@@ -10,7 +11,7 @@ internal class NetworkStream : Stream
1011
{
1112
private readonly string _ipAddress;
1213
private readonly ushort _port;
13-
private TcpClient _tcpClient = new();
14+
private TcpClient _tcpClient = new TcpClient();
1415

1516
/// <summary>
1617
/// Initializes a new instance of the NetworkStream class.
@@ -57,7 +58,7 @@ public override void Open()
5758
if (!_tcpClient.Connected)
5859
{
5960
_tcpClient.Dispose();
60-
_tcpClient = new();
61+
_tcpClient = new TcpClient();
6162
if (!_tcpClient.ConnectAsync(_ipAddress, _port).Wait(ConnectTimeout))
6263
throw new SocketException(10060);
6364
_tcpClient.NoDelay = true;

PL.Modbus/PL.Modbus.csproj

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net6.0</TargetFramework>
5-
<ImplicitUsings>enable</ImplicitUsings>
6-
<Nullable>enable</Nullable>
4+
<TargetFramework>netstandard2.0</TargetFramework>
75
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
86
<Authors>plasmapper</Authors>
97
<Description>Modbus client library for .NET</Description>
@@ -13,13 +11,10 @@
1311
<RepositoryUrl>https://github.com/plasmapper/modbus-dotnet</RepositoryUrl>
1412
<RepositoryType>git</RepositoryType>
1513
<PackageTags>modbus;client</PackageTags>
16-
<PackageReleaseNotes>Added
17-
- ConnectTimeout property.
18-
19-
Changed
20-
- Disabled Nagle's algorithm.</PackageReleaseNotes>
14+
<PackageReleaseNotes>Changed
15+
- .NET 6.0 target to .NET Standard 2.0.</PackageReleaseNotes>
2116
<PackageLicenseExpression>MIT</PackageLicenseExpression>
22-
<VersionPrefix>2.1.0</VersionPrefix>
17+
<VersionPrefix>2.2.0</VersionPrefix>
2318
</PropertyGroup>
2419

2520
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
@@ -43,7 +38,7 @@ Changed
4338
</ItemGroup>
4439

4540
<ItemGroup>
46-
<PackageReference Include="System.IO.Ports" Version="6.0.0" />
41+
<PackageReference Include="System.IO.Ports" Version="7.0.0" />
4742
</ItemGroup>
4843

4944
</Project>

PL.Modbus/SerialStream.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.IO.Ports;
1+
using System;
2+
using System.Threading;
3+
using System.IO.Ports;
24

35
namespace PL.Modbus
46
{

PL.Modbus/Stream.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
namespace PL.Modbus
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace PL.Modbus
25
{
36
internal abstract class Stream
47
{
@@ -12,7 +15,7 @@ internal abstract class Stream
1215

1316
public byte[] ReadTo(byte termByte)
1417
{
15-
List<byte> buffer = new();
18+
List<byte> buffer = new List<byte>();
1619
do
1720
{
1821
buffer.Add(Read(1)[0]);

PL.Modbus/Utility.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ public static byte[] AsciiStringToByteArray(string asciiString)
8181
public static List<AddressRange> SplitAddressRange(ushort address, ushort numberOfItems, ushort maxNumberOfItems)
8282
{
8383
if (numberOfItems == 0)
84-
return new() { new() { Address = address, NumberOfItems = numberOfItems } };
84+
return new List<AddressRange>() { new AddressRange() { Address = address, NumberOfItems = numberOfItems } };
8585

86-
List<AddressRange> addressRangeList = new();
86+
List<AddressRange> addressRangeList = new List<AddressRange>();
8787
int count = (numberOfItems - 1) / maxNumberOfItems + 1;
8888
for (int i = 0; i < count; i++)
8989
{
90-
addressRangeList.Add(new()
90+
addressRangeList.Add(new AddressRange()
9191
{
9292
Address = (ushort)(address + i * maxNumberOfItems),
9393
NumberOfItems = i < (count - 1) ? maxNumberOfItems : (ushort)((numberOfItems - 1) % maxNumberOfItems + 1)

0 commit comments

Comments
 (0)