Move ToArea to extension method

This commit is contained in:
Peter Butzhammer
2024-02-07 09:53:43 +01:00
parent d6dafebfe7
commit bacfbf05e2
2 changed files with 21 additions and 22 deletions

View File

@@ -0,0 +1,17 @@
using Sharp7.Rx.Enums;
namespace Sharp7.Rx.Extensions;
internal static class OperandExtensions
{
public static S7Area ToArea(this Operand operand) =>
operand switch
{
Operand.Input => S7Area.PE,
Operand.Output => S7Area.PA,
Operand.Marker => S7Area.MK,
Operand.Db => S7Area.DB,
_ => throw new ArgumentOutOfRangeException(nameof(operand), operand, null)
};
}

View File

@@ -146,10 +146,9 @@ namespace Sharp7.Rx
var buffer = new byte[bytesToRead]; var buffer = new byte[bytesToRead];
var area = FromOperand(operand);
var result = var result =
await Task.Factory.StartNew(() => sharp7.ReadArea(area, dBNr, startByteAddress, bytesToRead, S7Consts.S7WLByte, buffer), token, TaskCreationOptions.None, scheduler); await Task.Factory.StartNew(() => sharp7.ReadArea(operand.ToArea(), dBNr, startByteAddress, bytesToRead, S7WordLength.Byte, buffer), token, TaskCreationOptions.None, scheduler);
token.ThrowIfCancellationRequested(); token.ThrowIfCancellationRequested();
if (result != 0) if (result != 0)
@@ -170,7 +169,7 @@ namespace Sharp7.Rx
var offsetStart = (startByteAddress * 8) + bitAdress; var offsetStart = (startByteAddress * 8) + bitAdress;
var result = await Task.Factory.StartNew(() => sharp7.WriteArea(FromOperand(operand), dbNr, offsetStart, 1, S7Consts.S7WLBit, buffer), token, TaskCreationOptions.None, scheduler); var result = await Task.Factory.StartNew(() => sharp7.WriteArea(operand.ToArea(), dbNr, offsetStart, 1, S7WordLength.Bit, buffer), token, TaskCreationOptions.None, scheduler);
token.ThrowIfCancellationRequested(); token.ThrowIfCancellationRequested();
if (result != 0) if (result != 0)
@@ -186,7 +185,7 @@ namespace Sharp7.Rx
{ {
EnsureConnectionValid(); EnsureConnectionValid();
var result = await Task.Factory.StartNew(() => sharp7.WriteArea(FromOperand(operand), dBNr, startByteAdress, data.Length, S7Consts.S7WLByte, data), token, TaskCreationOptions.None, scheduler); var result = await Task.Factory.StartNew(() => sharp7.WriteArea(operand.ToArea(), dBNr, startByteAdress, data.Length, S7WordLength.Byte, data), token, TaskCreationOptions.None, scheduler);
token.ThrowIfCancellationRequested(); token.ThrowIfCancellationRequested();
if (result != 0) if (result != 0)
@@ -258,23 +257,6 @@ namespace Sharp7.Rx
return false; return false;
} }
private int FromOperand(Operand operand)
{
switch (operand)
{
case Operand.Input:
return S7Consts.S7AreaPE;
case Operand.Output:
return S7Consts.S7AreaPA;
case Operand.Marker:
return S7Consts.S7AreaMK;
case Operand.Db:
return S7Consts.S7AreaDB;
default:
throw new ArgumentOutOfRangeException(nameof(operand), operand, null);
}
}
private async Task<bool> Reconnect() private async Task<bool> Reconnect()
{ {
await CloseConnection(); await CloseConnection();