mirror of
https://github.com/evopro-ag/Sharp7Reactive.git
synced 2025-12-16 19:52:53 +00:00
Move ToArea to extension method
This commit is contained in:
17
Sharp7.Rx/Extensions/OperandExtensions.cs
Normal file
17
Sharp7.Rx/Extensions/OperandExtensions.cs
Normal 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)
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user