Skip to content

Commit 9b0278d

Browse files
IX-BOTPTKu
andauthored
[BUG] Unassigned values read over WebAPI fail to parse (#219)
* Create draft PR for #217 * wip * adds response check due to unassigned CHAR and WCHAR not appearing in the resutls when reading --------- Co-authored-by: PTKu <[email protected]> Co-authored-by: PTKu <[email protected]>
1 parent 8b5bb0e commit 9b0278d

26 files changed

+139
-43
lines changed

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiBool.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ ApiPlcWriteRequest IWebApiPrimitive.PlcWriteRequestData
6666
/// <inheritdoc />
6767
public void Read(string value)
6868
{
69-
UpdateRead(bool.Parse(value));
69+
if (bool.TryParse(value, out var val))
70+
{
71+
UpdateRead(val);
72+
}
7073
}
7174

7275
/// <inheritdoc />

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiByte.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// Third party licenses: https://github.com/ix-ax/axsharp/blob/master/notices.md
77

88
using AXSharp.Connector.ValueTypes;
9+
using Newtonsoft.Json.Linq;
910

1011
namespace AXSharp.Connector.S71500.WebApi;
1112

@@ -64,9 +65,12 @@ ApiPlcWriteRequest IWebApiPrimitive.PlcWriteRequestData
6465
}
6566

6667
/// <inheritdoc />
67-
public void Read(string result)
68+
public void Read(string value)
6869
{
69-
UpdateRead(byte.Parse(result));
70+
if (byte.TryParse(value, out var val))
71+
{
72+
UpdateRead(val);
73+
}
7074
}
7175

7276
/// <inheritdoc />

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiChar.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ ApiPlcWriteRequest IWebApiPrimitive.PlcWriteRequestData
7171
/// <inheritdoc />
7272
public void Read(string value)
7373
{
74-
UpdateRead(char.Parse(value));
74+
if (char.TryParse(value, out var val))
75+
{
76+
UpdateRead(val);
77+
}
7578
}
7679

7780
/// <inheritdoc />

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiDInt.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ ApiPlcWriteRequest IWebApiPrimitive.PlcWriteRequestData
6666
/// <inheritdoc />
6767
public void Read(string value)
6868
{
69-
UpdateRead(int.Parse(value));
69+
if (int.TryParse(value, out var val))
70+
{
71+
UpdateRead(val);
72+
}
7073
}
7174

7275

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiDWord.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ ApiPlcWriteRequest IWebApiPrimitive.PlcWriteRequestData
6666
/// <inheritdoc />
6767
public void Read(string value)
6868
{
69-
UpdateRead(uint.Parse(value));
69+
if (uint.TryParse(value, out var val))
70+
{
71+
UpdateRead(val);
72+
}
7073
}
7174

7275
/// <inheritdoc />

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiDate.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,12 @@ public override async Task<DateOnly> GetAsync()
7777

7878
private DateOnly GetFromBinary(string value)
7979
{
80-
var val = long.Parse(value);
81-
return GetFromBinary(val);
80+
if (long.TryParse(value, out var val))
81+
{
82+
return GetFromBinary(val);
83+
}
84+
85+
return DateOnly.MinValue;
8286
}
8387

8488
private DateOnly GetFromBinary(long value)

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiDateTime.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// Third party licenses: https://github.com/ix-ax/axsharp/blob/master/notices.md
77

88
using AXSharp.Connector.ValueTypes;
9+
using Newtonsoft.Json.Linq;
910

1011
namespace AXSharp.Connector.S71500.WebApi;
1112

@@ -75,9 +76,14 @@ public override async Task<DateTime> GetAsync()
7576
return await _webApiConnector.ReadAsync<DateTime>(this);
7677
}
7778

78-
private DateTime GetFromBinary(string val)
79+
private DateTime GetFromBinary(string value)
7980
{
80-
return GetFromBinary(long.Parse(val));
81+
if (long.TryParse(value, out var val))
82+
{
83+
return GetFromBinary(val);
84+
}
85+
86+
return DateTime.MinValue;
8187
}
8288

8389
private DateTime GetFromBinary(long val)

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiInt.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ ApiPlcWriteRequest IWebApiPrimitive.PlcWriteRequestData
6666
/// <inheritdoc />
6767
public void Read(string value)
6868
{
69-
UpdateRead(short.Parse(value));
69+
if (short.TryParse(value, out var val))
70+
{
71+
UpdateRead(val);
72+
}
7073
}
7174

7275
/// <inheritdoc />

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiLDate.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ public override async Task<DateOnly> GetAsync()
7878

7979
private DateOnly GetFromBinary(string value)
8080
{
81-
var val = long.Parse(value);
82-
return GetFromBinary(val);
81+
return long.TryParse(value, out var val) ? GetFromBinary(val) : DateOnly.MinValue;
8382
}
8483

8584
private DateOnly GetFromBinary(long value)

src/AXSharp.connectors/src/AXSharp.Connector.S71500.WebAPI/BuiltInWrappers/WebApiLDateTime.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// Third party licenses: https://github.com/ix-ax/axsharp/blob/master/notices.md
77

88
using AXSharp.Connector.ValueTypes;
9+
using Newtonsoft.Json.Linq;
910

1011
namespace AXSharp.Connector.S71500.WebApi;
1112

@@ -75,9 +76,9 @@ public override async Task<DateTime> GetAsync()
7576
return await _webApiConnector.ReadAsync<DateTime>(this);
7677
}
7778

78-
private DateTime GetFromBinary(string val)
79+
private DateTime GetFromBinary(string value)
7980
{
80-
return GetFromBinary(long.Parse(val));
81+
return long.TryParse(value, out var val) ? GetFromBinary(val) : DateTime.MinValue;
8182
}
8283

8384
private DateTime GetFromBinary(long val)

0 commit comments

Comments
 (0)