From d6df04dd6a9c8ebb47d36255a080c08df1e86aa3 Mon Sep 17 00:00:00 2001 From: Kimdiego2098 <2248356998@qq.com> Date: Tue, 8 Aug 2023 12:31:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=95=E5=B1=82=E9=83=A8=E5=88=86=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 ++- .../Controllers/SwaggerController.cs | 2 +- .../OpenApiAuth/OpenApiAuthService.cs | 2 +- .../System/Services/Auth/AuthService.cs | 4 +-- .../Shared/Login.razor.cs | 2 +- .../Const/UserManager.cs | 2 +- .../Extension/ObjectExtensions.cs | 18 ++++++++-- .../Extension/StringExtensions.cs | 2 +- .../ThingsGateway.Admin.Core.xml | 10 ++++-- .../Workers/Alarm/AlarmWorker.cs | 6 ++-- .../HistoryValue/HistoryValueWorker.cs | 4 +-- .../ReadWriteDevicesTcpDataHandleAdapter.cs | 18 +++------- .../Extensions/LoggerExtensions.cs | 2 ++ .../ThingsGateway.Foundation.csproj | 5 +++ .../ModbusRtu/ModbusRtuDataHandleAdapter.cs | 34 +++++++++++------- .../ModbusServerDataHandleAdapter.cs | 14 ++++---- .../ModbusTcp/ModbusTcpDataHandleAdapter.cs | 35 ++++++++++++++----- .../Siemens/SiemensS7PLCDataHandleAdapter.cs | 21 ++++++----- .../ModbusServer/ModbusServer.cs | 2 +- .../IotSharp/IotSharpClient.cs | 2 +- .../ThingsGateway.Mqtt/MqttClient.cs | 2 +- .../ThingsGateway.Mqtt/MqttServer.cs | 2 +- .../Handlers/BlazorAuthorizeHandler.cs | 6 ++-- 23 files changed, 126 insertions(+), 74 deletions(-) diff --git a/.gitignore b/.gitignore index 9491a2fda..3aa749cb7 100644 --- a/.gitignore +++ b/.gitignore @@ -360,4 +360,7 @@ MigrationBackup/ .ionide/ # Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file +FodyWeavers.xsd + + +/framework/*Pro* diff --git a/framework/ThingsGateway.Admin.ApiController/Controllers/SwaggerController.cs b/framework/ThingsGateway.Admin.ApiController/Controllers/SwaggerController.cs index c202f652d..297e9e7b1 100644 --- a/framework/ThingsGateway.Admin.ApiController/Controllers/SwaggerController.cs +++ b/framework/ThingsGateway.Admin.ApiController/Controllers/SwaggerController.cs @@ -46,7 +46,7 @@ namespace ThingsGateway.Admin.Application [AllowAnonymous, NonUnify] public async Task SwaggerCheckUrlAsync() { - var enable = (await _configService.GetByConfigKeyAsync(ConfigConst.SYS_CONFIGBASEDEFAULT, ConfigConst.CONFIG_SWAGGERLOGIN_OPEN)).ConfigValue.ToBool(); + var enable = (await _configService.GetByConfigKeyAsync(ConfigConst.SYS_CONFIGBASEDEFAULT, ConfigConst.CONFIG_SWAGGERLOGIN_OPEN)).ConfigValue.ToBoolean(); return enable ? 401 : 200; } diff --git a/framework/ThingsGateway.Admin.Application/OpenApi/Services/OpenApiAuth/OpenApiAuthService.cs b/framework/ThingsGateway.Admin.Application/OpenApi/Services/OpenApiAuth/OpenApiAuthService.cs index 48420721a..a52b45c33 100644 --- a/framework/ThingsGateway.Admin.Application/OpenApi/Services/OpenApiAuth/OpenApiAuthService.cs +++ b/framework/ThingsGateway.Admin.Application/OpenApi/Services/OpenApiAuth/OpenApiAuthService.cs @@ -149,7 +149,7 @@ public class OpenApiAuthService : IOpenApiAuthService, ITransient { bool isSingle = false;//默认不开启单用户登录 var singleConfig = await _configService.GetByConfigKeyAsync(ConfigConst.SYS_CONFIGBASEDEFAULT, ConfigConst.CONFIG_SINGLE_OPEN);//获取系统单用户登录选项 - if (singleConfig != null) isSingle = singleConfig.ConfigValue.ToBool();//如果配置不为空则设置单用户登录选项为系统配置的值 + if (singleConfig != null) isSingle = singleConfig.ConfigValue.ToBoolean();//如果配置不为空则设置单用户登录选项为系统配置的值 //判断是否单用户登录 if (isSingle) diff --git a/framework/ThingsGateway.Admin.Application/System/Services/Auth/AuthService.cs b/framework/ThingsGateway.Admin.Application/System/Services/Auth/AuthService.cs index a6a9df64b..6d57c23ae 100644 --- a/framework/ThingsGateway.Admin.Application/System/Services/Auth/AuthService.cs +++ b/framework/ThingsGateway.Admin.Application/System/Services/Auth/AuthService.cs @@ -79,7 +79,7 @@ public class AuthService : IAuthService if (sysBase != null)//如果有这个配置项 { - if (sysBase.ConfigValue.ToBool())//如果需要验证码 + if (sysBase.ConfigValue.ToBoolean())//如果需要验证码 { //如果没填验证码,提示验证码不能为空 if (input.ValidCode.IsNullOrEmpty() || input.ValidCodeReqNo == 0) throw Oops.Bah("验证码不能为空").StatusCode(410); @@ -217,7 +217,7 @@ public class AuthService : IAuthService bool isSingle = false;//默认不开启单用户登录 var singleConfig = await _configService.GetByConfigKeyAsync(ConfigConst.SYS_CONFIGBASEDEFAULT, ConfigConst.CONFIG_SINGLE_OPEN);//获取系统单用户登录选项 - if (singleConfig != null) isSingle = singleConfig.ConfigValue.ToBool();//如果配置不为空则设置单用户登录选项为系统配置的值 + if (singleConfig != null) isSingle = singleConfig.ConfigValue.ToBoolean();//如果配置不为空则设置单用户登录选项为系统配置的值 if (isSingle)//判断是否单用户登录 { await _noticeService.LogoutAsync(loginEvent.SysUser.Id, verificatInfos.Where(it => it.Device == loginEvent.Device.ToString()).ToList(), "该账号已在别处登录!");//通知其他用户下线 diff --git a/framework/ThingsGateway.Admin.Blazor/Shared/Login.razor.cs b/framework/ThingsGateway.Admin.Blazor/Shared/Login.razor.cs index 13d42f459..bf1314a73 100644 --- a/framework/ThingsGateway.Admin.Blazor/Shared/Login.razor.cs +++ b/framework/ThingsGateway.Admin.Blazor/Shared/Login.razor.cs @@ -133,7 +133,7 @@ public partial class Login GetCaptchaInfo(); CONFIG_TITLE = (await App.GetService().GetByConfigKeyAsync(ConfigConst.SYS_CONFIGBASEDEFAULT, ConfigConst.CONFIG_TITLE))?.ConfigValue; CONFIG_REMARK = (await App.GetService().GetByConfigKeyAsync(ConfigConst.SYS_CONFIGBASEDEFAULT, ConfigConst.CONFIG_REMARK))?.ConfigValue; - _showCaptcha = (await App.GetService().GetByConfigKeyAsync(ConfigConst.SYS_CONFIGBASEDEFAULT, ConfigConst.CONFIG_CAPTCHA_OPEN))?.ConfigValue?.ToBool() == true; + _showCaptcha = (await App.GetService().GetByConfigKeyAsync(ConfigConst.SYS_CONFIGBASEDEFAULT, ConfigConst.CONFIG_CAPTCHA_OPEN))?.ConfigValue?.ToBoolean() == true; Welcome = "欢迎使用" + CONFIG_TITLE + "!"; await base.OnParametersSetAsync(); } diff --git a/framework/ThingsGateway.Admin.Core/Const/UserManager.cs b/framework/ThingsGateway.Admin.Core/Const/UserManager.cs index f8f39177d..dabacf9c5 100644 --- a/framework/ThingsGateway.Admin.Core/Const/UserManager.cs +++ b/framework/ThingsGateway.Admin.Core/Const/UserManager.cs @@ -22,7 +22,7 @@ public class UserManager /// /// 是否超级管理员 /// - public static bool IsSuperAdmin => (App.User?.FindFirst(ClaimConst.IsSuperAdmin)?.Value).ToBool(); + public static bool IsSuperAdmin => (App.User?.FindFirst(ClaimConst.IsSuperAdmin)?.Value).ToBoolean(); /// /// 当前用户账号 diff --git a/framework/ThingsGateway.Admin.Core/Extension/ObjectExtensions.cs b/framework/ThingsGateway.Admin.Core/Extension/ObjectExtensions.cs index fa51dc14e..deeeccabb 100644 --- a/framework/ThingsGateway.Admin.Core/Extension/ObjectExtensions.cs +++ b/framework/ThingsGateway.Admin.Core/Extension/ObjectExtensions.cs @@ -330,7 +330,7 @@ public static class ObjectExtensions /// 转换布尔值 /// /// - public static bool ToBool(this object value, bool defaultValue = false) => value?.ToString().ToUpper() switch + public static bool ToBoolean(this object value, bool defaultValue = false) => value?.ToString().ToUpper() switch { "1" or "TRUE" => true, _ => defaultValue, @@ -356,10 +356,22 @@ public static class ObjectExtensions { return Double.IsNaN(d) ? defaultValue : (Decimal)d; } - var str = value.ToString(); + var str = value?.ToString(); return str.IsNullOrEmpty() ? defaultValue : Decimal.TryParse(str, out var n) ? n : defaultValue; } - + /// + /// ToDecimal + /// + /// + public static double ToDouble(this object value, double defaultValue = 0) + { + if (value is Double d) + { + return Double.IsNaN(d) ? defaultValue : (Double)d; + } + var str = value?.ToString(); + return str.IsNullOrEmpty() ? defaultValue : double.TryParse(str, out var n) ? n : defaultValue; + } /// /// JsonElement 转 Object diff --git a/framework/ThingsGateway.Admin.Core/Extension/StringExtensions.cs b/framework/ThingsGateway.Admin.Core/Extension/StringExtensions.cs index c426b20f1..914e09f1e 100644 --- a/framework/ThingsGateway.Admin.Core/Extension/StringExtensions.cs +++ b/framework/ThingsGateway.Admin.Core/Extension/StringExtensions.cs @@ -97,7 +97,7 @@ public static class StringExtensions /// 转换布尔值 /// /// - public static bool ToBool(this string value, bool defaultValue = false) => value?.ToUpper() switch + public static bool ToBoolean(this string value, bool defaultValue = false) => value?.ToUpper() switch { "1" or "TRUE" => true, _ => defaultValue, diff --git a/framework/ThingsGateway.Admin.Core/ThingsGateway.Admin.Core.xml b/framework/ThingsGateway.Admin.Core/ThingsGateway.Admin.Core.xml index 79e7b3c16..d764c0710 100644 --- a/framework/ThingsGateway.Admin.Core/ThingsGateway.Admin.Core.xml +++ b/framework/ThingsGateway.Admin.Core/ThingsGateway.Admin.Core.xml @@ -1026,7 +1026,7 @@ - + 转换布尔值 @@ -1050,6 +1050,12 @@ + + + ToDecimal + + + JsonElement 转 Object @@ -1142,7 +1148,7 @@ - + 转换布尔值 diff --git a/framework/ThingsGateway.Application/Workers/Alarm/AlarmWorker.cs b/framework/ThingsGateway.Application/Workers/Alarm/AlarmWorker.cs index c3c02a125..e8123a799 100644 --- a/framework/ThingsGateway.Application/Workers/Alarm/AlarmWorker.cs +++ b/framework/ThingsGateway.Application/Workers/Alarm/AlarmWorker.cs @@ -74,7 +74,7 @@ public class AlarmWorker : BackgroundService public async Task> GetAlarmDbAsync() { var ConfigService = ServiceHelper.Services.GetService(); - var alarmEnable = (await ConfigService.GetByConfigKeyAsync(ThingsGatewayConfigConst.ThingGateway_AlarmConfig_Base, ThingsGatewayConfigConst.Config_Alarm_Enable))?.ConfigValue?.ToBool(); + var alarmEnable = (await ConfigService.GetByConfigKeyAsync(ThingsGatewayConfigConst.ThingGateway_AlarmConfig_Base, ThingsGatewayConfigConst.Config_Alarm_Enable))?.ConfigValue?.ToBoolean(); var alarmDbType = (await ConfigService.GetByConfigKeyAsync(ThingsGatewayConfigConst.ThingGateway_AlarmConfig_Base, ThingsGatewayConfigConst.Config_Alarm_DbType))?.ConfigValue; var alarmConnstr = (await ConfigService.GetByConfigKeyAsync(ThingsGatewayConfigConst.ThingGateway_AlarmConfig_Base, ThingsGatewayConfigConst.Config_Alarm_ConnStr))?.ConfigValue; @@ -132,14 +132,14 @@ public class AlarmWorker : BackgroundService limit = string.Empty; expressions = string.Empty; text = string.Empty; - if (tag.BoolCloseAlarmEnable && tag.Value.ToBool() == false) + if (tag.BoolCloseAlarmEnable && tag.Value.ToBoolean() == false) { limit = false.ToString(); expressions = tag.BoolCloseRestrainExpressions; text = tag.BoolCloseAlarmText; return AlarmEnum.Close; } - if (tag.BoolOpenAlarmEnable && tag.Value.ToBool() == true) + if (tag.BoolOpenAlarmEnable && tag.Value.ToBoolean() == true) { limit = true.ToString(); expressions = tag.BoolOpenRestrainExpressions; diff --git a/framework/ThingsGateway.Application/Workers/HistoryValue/HistoryValueWorker.cs b/framework/ThingsGateway.Application/Workers/HistoryValue/HistoryValueWorker.cs index 5f3ffb724..da9fff859 100644 --- a/framework/ThingsGateway.Application/Workers/HistoryValue/HistoryValueWorker.cs +++ b/framework/ThingsGateway.Application/Workers/HistoryValue/HistoryValueWorker.cs @@ -60,7 +60,7 @@ public class HistoryValueWorker : BackgroundService public async Task> GetHisDbAsync() { var ConfigService = ServiceHelper.Services.GetService(); - var hisEnable = (await ConfigService.GetByConfigKeyAsync(ThingsGatewayConfigConst.ThingGateway_HisConfig_Base, ThingsGatewayConfigConst.Config_His_Enable))?.ConfigValue?.ToBool(); + var hisEnable = (await ConfigService.GetByConfigKeyAsync(ThingsGatewayConfigConst.ThingGateway_HisConfig_Base, ThingsGatewayConfigConst.Config_His_Enable))?.ConfigValue?.ToBoolean(); var hisDbType = (await ConfigService.GetByConfigKeyAsync(ThingsGatewayConfigConst.ThingGateway_HisConfig_Base, ThingsGatewayConfigConst.Config_His_DbType))?.ConfigValue; var hisConnstr = (await ConfigService.GetByConfigKeyAsync(ThingsGatewayConfigConst.ThingGateway_HisConfig_Base, ThingsGatewayConfigConst.Config_His_ConnStr))?.ConfigValue; @@ -458,7 +458,7 @@ public class HistoryValueMapper : IRegister { if (src.Value?.ToString()?.IsBoolValue() == true) { - if (src.Value.ToBool()) + if (src.Value.ToBoolean()) { return 1; } diff --git a/framework/ThingsGateway.Foundation/DataHandleAdapter/ReadWriteDevicesTcpDataHandleAdapter.cs b/framework/ThingsGateway.Foundation/DataHandleAdapter/ReadWriteDevicesTcpDataHandleAdapter.cs index 7cd42176b..2f6e9ed75 100644 --- a/framework/ThingsGateway.Foundation/DataHandleAdapter/ReadWriteDevicesTcpDataHandleAdapter.cs +++ b/framework/ThingsGateway.Foundation/DataHandleAdapter/ReadWriteDevicesTcpDataHandleAdapter.cs @@ -108,11 +108,8 @@ public abstract class ReadWriteDevicesTcpDataHandleAdapter : CustomDat protected virtual FilterResult GetResponse(ByteBlock byteBlock, TRequest request, byte[] body, byte[] bytes) { var unpackbytes = UnpackResponse(request, request.SendBytes, body, bytes); - request.Message = unpackbytes.Message; - request.Content = unpackbytes.Content1; request.ReceivedBytes = bytes; - request.ResultCode = unpackbytes.ResultCode; - switch (unpackbytes.Content2) + switch (unpackbytes) { case FilterResult.Cache: return FilterResult.Cache; @@ -121,15 +118,10 @@ public abstract class ReadWriteDevicesTcpDataHandleAdapter : CustomDat case FilterResult.GoOn: byteBlock.Pos = byteBlock.Len; return FilterResult.GoOn; + default: + byteBlock.Pos = byteBlock.Len; + return FilterResult.GoOn; } - - //直接放弃 - byteBlock.Pos = byteBlock.Len; - request.ReceivedBytes = bytes; - Logger?.Warning(unpackbytes.Message); - request.ResultCode = ResultCode.Error; - request.Message = unpackbytes.Message; - return FilterResult.GoOn; } /// /// 发送方法,会重新建立 @@ -156,5 +148,5 @@ public abstract class ReadWriteDevicesTcpDataHandleAdapter : CustomDat /// /// 报文拆包 /// - protected abstract OperResult UnpackResponse(TRequest request, byte[] send, byte[] body, byte[] response); + protected abstract FilterResult UnpackResponse(TRequest request, byte[] send, byte[] body, byte[] response); } \ No newline at end of file diff --git a/framework/ThingsGateway.Foundation/Extensions/LoggerExtensions.cs b/framework/ThingsGateway.Foundation/Extensions/LoggerExtensions.cs index 79a8c5801..be81a9f46 100644 --- a/framework/ThingsGateway.Foundation/Extensions/LoggerExtensions.cs +++ b/framework/ThingsGateway.Foundation/Extensions/LoggerExtensions.cs @@ -38,6 +38,8 @@ public static class LoggerExtensions { logger.Log(TouchSocket.Core.LogLevel.Warning, null, msg, ex); } + + /// /// 输出警示日志 /// diff --git a/framework/ThingsGateway.Foundation/ThingsGateway.Foundation.csproj b/framework/ThingsGateway.Foundation/ThingsGateway.Foundation.csproj index e539eb09f..2489a12f6 100644 --- a/framework/ThingsGateway.Foundation/ThingsGateway.Foundation.csproj +++ b/framework/ThingsGateway.Foundation/ThingsGateway.Foundation.csproj @@ -3,6 +3,11 @@ net45;net6.0;net7.0 false + true + Apache-2.0 + https://diego2098.gitee.io/thingsgateway-docs/ + ThingsGateway;Diego;dotNET China;Blazor;设备采集;边缘网关 + ../nupkgs ..\..\snks\ThingsGateway.snk diff --git a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusRtu/ModbusRtuDataHandleAdapter.cs b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusRtu/ModbusRtuDataHandleAdapter.cs index d5e1ac40a..0519960a8 100644 --- a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusRtu/ModbusRtuDataHandleAdapter.cs +++ b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusRtu/ModbusRtuDataHandleAdapter.cs @@ -10,7 +10,6 @@ //------------------------------------------------------------------------------ #endregion -using ThingsGateway.Foundation.Extension; namespace ThingsGateway.Foundation.Adapter.Modbus; @@ -41,43 +40,52 @@ public class ModbusRtuDataHandleAdapter : ReadWriteDevicesTcpDataHandleAdapter - protected override OperResult UnpackResponse(ModbusRtuMessage request, byte[] send, byte[] body, byte[] response) + protected override FilterResult UnpackResponse(ModbusRtuMessage request, byte[] send, byte[] body, byte[] response) { //理想状态检测 var result = ModbusHelper.GetModbusRtuData(send, response, Crc16CheckEnable); if (result.IsSuccess) { - return OperResult.CreateSuccessResult(result.Content, FilterResult.Success); + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; + return FilterResult.Success; } else { - //如果返回错误,具体分析 - var op = result.Copy(); if (response.Length <= 1) { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; //如果长度不足,返回缓存 - op.Content2 = FilterResult.Cache; - return op; + return FilterResult.Cache; } if (!(response[1] <= 0x10)) { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; //功能码不对,返回放弃 - op.Content2 = FilterResult.Success; - return op; + return FilterResult.Success; } else { if ((response.Length > response[2] + 4)) { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; //如果长度已经超了,说明这段报文已经不能继续解析了,直接返回放弃 - op.Content2 = FilterResult.Success; - return op; + return FilterResult.Success; } else { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; //否则返回缓存 - op.Content2 = FilterResult.Cache; - return op; + return FilterResult.Cache; } } } diff --git a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusServer/ModbusServerDataHandleAdapter.cs b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusServer/ModbusServerDataHandleAdapter.cs index 48d6e7e4a..9af57dce3 100644 --- a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusServer/ModbusServerDataHandleAdapter.cs +++ b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusServer/ModbusServerDataHandleAdapter.cs @@ -10,7 +10,6 @@ //------------------------------------------------------------------------------ #endregion -using ThingsGateway.Foundation.Extension; using ThingsGateway.Foundation.Extension.Generic; namespace ThingsGateway.Foundation.Adapter.Modbus; @@ -69,7 +68,7 @@ public class ModbusServerDataHandleAdapter : ReadWriteDevicesTcpDataHandleAdapte } /// - protected override OperResult UnpackResponse(ModbusServerMessage request, byte[] send, byte[] body, byte[] response) + protected override FilterResult UnpackResponse(ModbusServerMessage request, byte[] send, byte[] body, byte[] response) { var result = GetModbusData(response.RemoveBegin(6)); if (result.IsSuccess) @@ -119,14 +118,15 @@ public class ModbusServerDataHandleAdapter : ReadWriteDevicesTcpDataHandleAdapte Length = ThingsGatewayBitConverter.ToByte(response, 11), }; } - - return OperResult.CreateSuccessResult(request.Content, FilterResult.Success); + request.ResultCode = result.ResultCode; + request.Message = result.Message; + return FilterResult.Success; } else { - var op = result.Copy(); - op.Content2 = FilterResult.Cache; - return op; + request.ResultCode = result.ResultCode; + request.Message = result.Message; + return FilterResult.Cache; } } } diff --git a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusTcp/ModbusTcpDataHandleAdapter.cs b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusTcp/ModbusTcpDataHandleAdapter.cs index 1707adb5e..b59cbe84d 100644 --- a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusTcp/ModbusTcpDataHandleAdapter.cs +++ b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Modbus/Modbus/ModbusTcp/ModbusTcpDataHandleAdapter.cs @@ -50,35 +50,54 @@ public class ModbusTcpDataHandleAdapter : ReadWriteDevicesTcpDataHandleAdapter - protected override OperResult UnpackResponse(ModbusTcpMessage request, byte[] send, byte[] body, byte[] response) + protected override FilterResult UnpackResponse(ModbusTcpMessage request, byte[] send, byte[] body, byte[] response) { //理想状态检测 var result = ModbusHelper.GetModbusData(send.RemoveBegin(6), response.RemoveBegin(6)); if (result.IsSuccess) { - return OperResult.CreateSuccessResult(result.Content, FilterResult.Success); + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; + return FilterResult.Success; } else { //如果返回错误,具体分析 var op = result.Copy(); + if (response.Length == 9) + { + if (response[7] >= 0x80)//错误码 + { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; + return FilterResult.Success; + } + } if (response.Length < 10) { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; + return FilterResult.Cache; //如果长度不足,返回缓存 - op.Content2 = FilterResult.Cache; - return op; } if ((response.Length > response[8] + 9)) { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; + return FilterResult.Success; //如果长度已经超了,说明这段报文已经不能继续解析了,直接返回放弃 - op.Content2 = FilterResult.Success; - return op; } else { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; + return FilterResult.Cache; //否则返回缓存 - op.Content2 = FilterResult.Cache; - return op; } } diff --git a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Siemens/Siemens/SiemensS7PLCDataHandleAdapter.cs b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Siemens/Siemens/SiemensS7PLCDataHandleAdapter.cs index 2225ca7c6..c57a65271 100644 --- a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Siemens/Siemens/SiemensS7PLCDataHandleAdapter.cs +++ b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.Siemens/Siemens/SiemensS7PLCDataHandleAdapter.cs @@ -10,7 +10,6 @@ //------------------------------------------------------------------------------ #endregion -using ThingsGateway.Foundation.Extension; namespace ThingsGateway.Foundation.Adapter.Siemens; @@ -35,7 +34,7 @@ public class SiemensS7PLCDataHandleAdapter : ReadWriteDevicesTcpDataHandleAdapte } /// - protected override OperResult UnpackResponse(SiemensMessage request, byte[] send, byte[] body, byte[] response) + protected override FilterResult UnpackResponse(SiemensMessage request, byte[] send, byte[] body, byte[] response) { var result = new OperResult(); if (response[2] * 256 + response[3] == 7) @@ -57,23 +56,29 @@ public class SiemensS7PLCDataHandleAdapter : ReadWriteDevicesTcpDataHandleAdapte } if (result.IsSuccess) { - return OperResult.CreateSuccessResult(result.Content, FilterResult.Success); + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; + return FilterResult.Success; } else { //如果返回错误,具体分析 - var op = result.Copy(); if (response.Length < 21) { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; //如果长度不足,返回缓存 - op.Content2 = FilterResult.Cache; - return op; + return FilterResult.Cache; } else { + request.ResultCode = result.ResultCode; + request.Message = result.Message; + request.Content = result.Content; //如果长度已经超了,说明这段报文已经不能继续解析了,直接返回放弃 - op.Content2 = FilterResult.Success; - return op; + return FilterResult.Success; } } } diff --git a/framework/ThingsGateway.Plugin/ThingsGateway.Modbus/ModbusServer/ModbusServer.cs b/framework/ThingsGateway.Plugin/ThingsGateway.Modbus/ModbusServer/ModbusServer.cs index d387b447e..3c91e047a 100644 --- a/framework/ThingsGateway.Plugin/ThingsGateway.Modbus/ModbusServer/ModbusServer.cs +++ b/framework/ThingsGateway.Plugin/ThingsGateway.Modbus/ModbusServer/ModbusServer.cs @@ -193,7 +193,7 @@ public class ModbusServer : UpLoadBase if (tag.Value == null) return OperResult.CreateSuccessResult(); var enable = - GetPropertyValue(tag.Value, nameof(variablePropertys.VariableRpcEnable)).ToBool() + GetPropertyValue(tag.Value, nameof(variablePropertys.VariableRpcEnable)).ToBoolean() && driverPropertys.DeviceRpcEnable; if (!enable) return new OperResult("不允许写入"); var type = GetPropertyValue(tag.Value, nameof(ModbusServerVariableProperty.ModbusType)); diff --git a/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/IotSharp/IotSharpClient.cs b/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/IotSharp/IotSharpClient.cs index 54c4badb2..72becb4bb 100644 --- a/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/IotSharp/IotSharpClient.cs +++ b/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/IotSharp/IotSharpClient.cs @@ -335,7 +335,7 @@ public class IotSharpClient : UpLoadBase if (tag != null) { var rpcEnable = -GetPropertyValue(tag, nameof(variablePropertys.VariableRpcEnable)).ToBool() +GetPropertyValue(tag, nameof(variablePropertys.VariableRpcEnable)).ToBoolean() && driverPropertys.DeviceRpcEnable; if (rpcEnable == true) { diff --git a/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/MqttClient.cs b/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/MqttClient.cs index 42b19d781..9af9086bb 100644 --- a/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/MqttClient.cs +++ b/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/MqttClient.cs @@ -415,7 +415,7 @@ public class MqttClient : UpLoadBase var tag = _uploadVariables.FirstOrDefault(a => a.Name == nv.Key); if (tag != null) { - var rpcEnable = GetPropertyValue(tag, nameof(variablePropertys.VariableRpcEnable)).ToBool(); + var rpcEnable = GetPropertyValue(tag, nameof(variablePropertys.VariableRpcEnable)).ToBoolean(); if (rpcEnable == true) { var result = await _rpcCore.InvokeDeviceMethodAsync(ToString() + "-" + arg.ClientId, nv); diff --git a/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/MqttServer.cs b/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/MqttServer.cs index f7f6d4d80..168c2acf0 100644 --- a/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/MqttServer.cs +++ b/framework/ThingsGateway.Plugin/ThingsGateway.Mqtt/MqttServer.cs @@ -270,7 +270,7 @@ public class MqttServer : UpLoadBase var tag = _uploadVariables.FirstOrDefault(a => a.Name == nv.Key); if (tag != null) { - var rpcEnable = GetPropertyValue(tag, nameof(variablePropertys.VariableRpcEnable)).ToBool(); + var rpcEnable = GetPropertyValue(tag, nameof(variablePropertys.VariableRpcEnable)).ToBoolean(); if (rpcEnable == true) { var result = await _rpcCore.InvokeDeviceMethodAsync(ToString() + "-" + IdWithName[arg.ClientId], nv); diff --git a/framework/ThingsGateway.Web.Core/Handlers/BlazorAuthorizeHandler.cs b/framework/ThingsGateway.Web.Core/Handlers/BlazorAuthorizeHandler.cs index 3f462dc78..25d233518 100644 --- a/framework/ThingsGateway.Web.Core/Handlers/BlazorAuthorizeHandler.cs +++ b/framework/ThingsGateway.Web.Core/Handlers/BlazorAuthorizeHandler.cs @@ -68,7 +68,7 @@ public class BlazorAuthorizeHandler : AppAuthorizeHandler //这里鉴别密码是否改变 var userId = context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.UserId).Value.ToLong(); - var isOpenApi = context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.IsOpenApi)?.Value?.ToBool() == true; + var isOpenApi = context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.IsOpenApi)?.Value?.ToBoolean() == true; if (isOpenApi) { var _openApiUserService = App.GetService(); @@ -91,7 +91,7 @@ public class BlazorAuthorizeHandler : AppAuthorizeHandler if (user == null) { return false; } //超级管理员都能访问 - if (context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.IsSuperAdmin)?.Value.ToBool() == true) return true; + if (context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.IsSuperAdmin)?.Value.ToBoolean() == true) return true; if (context.Resource is RouteData routeData) { // 获取超级管理员特性 @@ -144,7 +144,7 @@ public class BlazorAuthorizeHandler : AppAuthorizeHandler { var userId = context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.UserId).Value; var verificatId = context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.VerificatId)?.Value; - var isOpenApi = context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.IsOpenApi)?.Value?.ToBool(false) == true; + var isOpenApi = context.User.Claims.FirstOrDefault(it => it.Type == ClaimConst.IsOpenApi)?.Value?.ToBoolean(false) == true; var _verificatService = App.GetService(); if (isOpenApi) {