10 Commits

Author SHA1 Message Date
Michael Croes
d99d0d0e6f Release S7NetPlus 0.15.0
Release highlights:
- Add flowed cancellation to ConnectAsync
2022-11-08 11:22:47 +01:00
Michael Croes
ce9f9f9e08 Merge pull request #423 from gfoidl/openasync_cancellation
Flowed cancellation token to TcpClient.ConnectAsync in .NET 5.0 target
2022-11-08 11:19:37 +01:00
Michael Croes
ea1140314b Merge branch 'develop' into openasync_cancellation 2022-11-08 11:13:25 +01:00
Michael Croes
e3fad0b94f Release S7NetPlus 0.14.0
Release highlights:
- Support setting the Encoding for S7String
2022-06-17 23:14:48 +02:00
Michael Croes
7f76d4fc5a Merge pull request #435 from ismdiego/develop
Allow changing the default Encoding used in S7String
2022-06-17 23:12:43 +02:00
diego
ec554ddb59 Better stringEncoding initialization, as per code review comments 2022-06-17 11:23:58 +02:00
diego
2ecd2c6b49 Changes following code review 2022-06-17 11:08:09 +02:00
diego
d808ea5eb6 Give the option of changing the Encoding used to serialize and deserialize S7String, instead of always using Encoding.ASCII 2022-06-16 17:21:23 +02:00
Günther Foidl
5d3f01e59e Updated AppVeyor image to VS 2022 to allow better conditional compilation 2021-12-26 19:26:44 +01:00
Günther Foidl
9c3f95ce73 Flowed cancellation token to TcpClient.ConnectAsync in .NET 5.0 target 2021-12-26 19:26:04 +01:00
4 changed files with 24 additions and 8 deletions

View File

@@ -25,7 +25,7 @@ namespace S7.Net
/// <returns>A task that represents the asynchronous open operation.</returns>
public async Task OpenAsync(CancellationToken cancellationToken = default)
{
var stream = await ConnectAsync().ConfigureAwait(false);
var stream = await ConnectAsync(cancellationToken).ConfigureAwait(false);
try
{
await queue.Enqueue(async () =>
@@ -44,11 +44,16 @@ namespace S7.Net
}
}
private async Task<NetworkStream> ConnectAsync()
private async Task<NetworkStream> ConnectAsync(CancellationToken cancellationToken)
{
tcpClient = new TcpClient();
ConfigureConnection();
#if NET5_0_OR_GREATER
await tcpClient.ConnectAsync(IP, Port, cancellationToken).ConfigureAwait(false);
#else
await tcpClient.ConnectAsync(IP, Port).ConfigureAwait(false);
#endif
return tcpClient.GetStream();
}

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net452;netstandard2.0;netstandard1.3</TargetFrameworks>
<TargetFrameworks>net452;netstandard2.0;netstandard1.3;net5.0</TargetFrameworks>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>Properties\S7.Net.snk</AssemblyOriginatorKeyFile>
<InternalsVisibleTo>S7.Net.UnitTest</InternalsVisibleTo>

View File

@@ -8,7 +8,19 @@ namespace S7.Net.Types
/// An S7 String has a preceeding 2 byte header containing its capacity and length
/// </summary>
public static class S7String
{
{
private static Encoding stringEncoding = Encoding.ASCII;
/// <summary>
/// The Encoding used when serializing and deserializing S7String (Encoding.ASCII by default)
/// </summary>
/// <exception cref="ArgumentNullException">StringEncoding must not be null</exception>
public static Encoding StringEncoding
{
get => stringEncoding;
set => stringEncoding = value ?? throw new ArgumentNullException(nameof(StringEncoding));
}
/// <summary>
/// Converts S7 bytes to a string
/// </summary>
@@ -30,7 +42,7 @@ namespace S7.Net.Types
try
{
return Encoding.ASCII.GetString(bytes, 2, length);
return StringEncoding.GetString(bytes, 2, length);
}
catch (Exception e)
{
@@ -38,7 +50,6 @@ namespace S7.Net.Types
$"Failed to parse {VarType.S7String} from data. Following fields were read: size: '{size}', actual length: '{length}', total number of bytes (including header): '{bytes.Length}'.",
e);
}
}
/// <summary>
@@ -56,7 +67,7 @@ namespace S7.Net.Types
if (reservedLength > 254) throw new ArgumentException($"The maximum string length supported is 254.");
var bytes = Encoding.ASCII.GetBytes(value);
var bytes = StringEncoding.GetBytes(value);
if (bytes.Length > reservedLength) throw new ArgumentException($"The provided string length ({bytes.Length} is larger than the specified reserved length ({reservedLength}).");
var buffer = new byte[2 + reservedLength];

View File

@@ -1,4 +1,4 @@
image: Visual Studio 2019
image: Visual Studio 2022
configuration: Release
install:
- choco install gitversion.portable -y