From 3733aa0ca0e9f8ef9e913aa3e2dde5a8b948cfe3 Mon Sep 17 00:00:00 2001 From: Chris Pulman Date: Thu, 19 Oct 2023 09:26:35 +0100 Subject: [PATCH] Add unsigned read --- Version.json | 2 +- src/S7PlcRx/RxS7.cs | 71 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/Version.json b/Version.json index ece3f2b..1020903 100644 --- a/Version.json +++ b/Version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", - "version": "1.2.1", + "version": "1.2.2", "publicReleaseRefSpec": [ "^refs/heads/master$", "^refs/heads/main$" diff --git a/src/S7PlcRx/RxS7.cs b/src/S7PlcRx/RxS7.cs index 7d7799f..846a414 100644 --- a/src/S7PlcRx/RxS7.cs +++ b/src/S7PlcRx/RxS7.cs @@ -809,6 +809,16 @@ private void GetTagValue(Tag? tag) return Read(tag, DataType.DataBlock, dB, dbIndex, VarType.Word); } + if (tag.Type == typeof(short[])) + { + return Read(tag, DataType.DataBlock, dB, dbIndex, VarType.Word); + } + + if (tag.Type == typeof(short)) + { + return Read(tag, DataType.DataBlock, dB, dbIndex, VarType.Word); + } + return Read(tag, DataType.DataBlock, dB, dbIndex, VarType.Word); case "DBD": @@ -873,6 +883,16 @@ private void GetTagValue(Tag? tag) return Read(tag, DataType.Input, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); } + if (tag.Type == typeof(short[])) + { + return Read(tag, DataType.Input, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); + } + + if (tag.Type == typeof(short)) + { + return Read(tag, DataType.Input, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); + } + return Read(tag, DataType.Input, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); case "ED": @@ -883,6 +903,16 @@ private void GetTagValue(Tag? tag) return Read(tag, DataType.Input, 0, int.Parse(correctVariable.Substring(2)), VarType.DWord); } + if (tag.Type == typeof(int[])) + { + return Read(tag, DataType.Input, 0, int.Parse(correctVariable.Substring(2)), VarType.DWord); + } + + if (tag.Type == typeof(int)) + { + return Read(tag, DataType.Input, 0, int.Parse(correctVariable.Substring(2)), VarType.DWord); + } + return Read(tag, DataType.Input, 0, int.Parse(correctVariable.Substring(2)), VarType.DWord); case "AB": @@ -903,6 +933,16 @@ private void GetTagValue(Tag? tag) return Read(tag, DataType.Output, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); } + if (tag.Type == typeof(short[])) + { + return Read(tag, DataType.Output, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); + } + + if (tag.Type == typeof(short)) + { + return Read(tag, DataType.Output, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); + } + return Read(tag, DataType.Output, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); case "AD": @@ -913,6 +953,16 @@ private void GetTagValue(Tag? tag) return Read(tag, DataType.Output, 0, int.Parse(correctVariable.Substring(2)), VarType.DWord); } + if (tag.Type == typeof(int[])) + { + return Read(tag, DataType.Output, 0, int.Parse(correctVariable.Substring(2)), VarType.DWord); + } + + if (tag.Type == typeof(int)) + { + return Read(tag, DataType.Output, 0, int.Parse(correctVariable.Substring(2)), VarType.DWord); + } + return Read(tag, DataType.Output, 0, int.Parse(correctVariable.Substring(2)), VarType.DWord); case "MB": @@ -933,6 +983,16 @@ private void GetTagValue(Tag? tag) return Read(tag, DataType.Memory, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); } + if (tag.Type == typeof(short[])) + { + return Read(tag, DataType.Memory, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); + } + + if (tag.Type == typeof(short)) + { + return Read(tag, DataType.Memory, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); + } + return Read(tag, DataType.Memory, 0, int.Parse(correctVariable.Substring(2)), VarType.Word); case "MD": @@ -987,6 +1047,16 @@ private void GetTagValue(Tag? tag) return Read(tag, DataType.Counter, 0, int.Parse(correctVariable.Substring(2)), VarType.Counter); } + if (tag.Type == typeof(short[])) + { + return Read(tag, DataType.Counter, 0, int.Parse(correctVariable.Substring(2)), VarType.Counter); + } + + if (tag.Type == typeof(short)) + { + return Read(tag, DataType.Counter, 0, int.Parse(correctVariable.Substring(2)), VarType.Counter); + } + return Read(tag, DataType.Counter, 0, int.Parse(correctVariable.Substring(1)), VarType.Counter); default: @@ -1206,6 +1276,7 @@ private bool Write(Tag tag, DataType dataType, int db, int startByteAdr, object? byte[] package; switch (tag.Type.Name) { + // TODO: fix Bit case "Byte": package = new byte[] { (byte)(value ?? Convert.ChangeType(tag.NewValue, typeof(byte)))! }; break;