diff --git a/HTCoreServiceApp/Common/WritePara.cs b/HTCoreServiceApp/Common/WritePara.cs new file mode 100644 index 0000000..99e490a --- /dev/null +++ b/HTCoreServiceApp/Common/WritePara.cs @@ -0,0 +1,15 @@ +namespace HTCoreServiceApp.Common +{ + public class WritePara + { + public string TagName { get; set; } + public string GroupName { get; set; } + public string WriteAddress { get; set; } + public byte DataType { get; set; } + public string Value { get; set; } + + } + //public record WritePara(string TagName, string GroupName, string WriteAddress, byte DataType, string Value) + //{ + //} +} diff --git a/HTCoreServiceApp/Communicate/AllenBradleyEIP/ABClientExample.cs b/HTCoreServiceApp/Communicate/AllenBradleyEIP/ABClientExample.cs index 6e7cedf..33929df 100644 --- a/HTCoreServiceApp/Communicate/AllenBradleyEIP/ABClientExample.cs +++ b/HTCoreServiceApp/Communicate/AllenBradleyEIP/ABClientExample.cs @@ -485,15 +485,15 @@ namespace HTCoreServiceApp.Communicate.AllenBradleyEIP /// /// /// - public int Write(string writePara) + public int Write(WritePara writePara) { Result reCode = new Result() { ErrCode = 0} ; - JObject valueJson = JObject.Parse(writePara); - var srcValue = valueJson[propertyName: "Value"].ToString(); - var writeAddress = valueJson[propertyName: "WriteAddress"].ToString(); - var dataType =short.Parse(valueJson[propertyName: "DataType"].ToString()); - var groupName = valueJson[propertyName: "GroupName"].ToString(); - var tagName = valueJson[propertyName: "TagName"].ToString(); + //JObject valueJson = JObject.Parse(writePara); + var srcValue = writePara.Value; //valueJson[propertyName: "Value"].ToString(); + var writeAddress = writePara.WriteAddress;//valueJson[propertyName: "WriteAddress"].ToString(); + var dataType = writePara.DataType;//short.Parse(valueJson[propertyName: "DataType"].ToString()); + var groupName = writePara.GroupName; //valueJson[propertyName: "GroupName"].ToString(); + var tagName = writePara.TagName; //valueJson[propertyName: "TagName"].ToString(); decimal value = decimal.Parse(srcValue); lock (_lock) diff --git a/HTCoreServiceApp/Communicate/AllenBradleyEIPTag/ABTagClientExample.cs b/HTCoreServiceApp/Communicate/AllenBradleyEIPTag/ABTagClientExample.cs index dea071f..35e1149 100644 --- a/HTCoreServiceApp/Communicate/AllenBradleyEIPTag/ABTagClientExample.cs +++ b/HTCoreServiceApp/Communicate/AllenBradleyEIPTag/ABTagClientExample.cs @@ -460,15 +460,15 @@ namespace HTCoreServiceApp.Communicate.AllenBradleyEIPTag /// /// /// - public int Write(string writePara) + public int Write(WritePara writePara) { Result reCode = new Result() { ErrCode = 0} ; - JObject valueJson = JObject.Parse(writePara); - var srcValue = valueJson[propertyName: "Value"].ToString(); - var writeAddress = valueJson[propertyName: "WriteAddress"].ToString(); - var dataType =short.Parse(valueJson[propertyName: "DataType"].ToString()); - var groupName = valueJson[propertyName: "GroupName"].ToString(); - var tagName = valueJson[propertyName: "TagName"].ToString(); + //JObject valueJson = JObject.Parse(writePara); + var srcValue = writePara.Value; //valueJson[propertyName: "Value"].ToString(); + var writeAddress = writePara.WriteAddress;//valueJson[propertyName: "WriteAddress"].ToString(); + var dataType = writePara.DataType;//short.Parse(valueJson[propertyName: "DataType"].ToString()); + var groupName = writePara.GroupName; //valueJson[propertyName: "GroupName"].ToString(); + var tagName = writePara.TagName; //valueJson[propertyName: "TagName"].ToString(); decimal value = decimal.Parse(srcValue); lock (_lock) diff --git a/HTCoreServiceApp/Communicate/DriverSiemensS7/S7ClientExample.cs b/HTCoreServiceApp/Communicate/DriverSiemensS7/S7ClientExample.cs index 6fe6f83..c971062 100644 --- a/HTCoreServiceApp/Communicate/DriverSiemensS7/S7ClientExample.cs +++ b/HTCoreServiceApp/Communicate/DriverSiemensS7/S7ClientExample.cs @@ -104,6 +104,7 @@ namespace HTCoreServiceApp.Communicate.DriverSiemensS7 scanTagsPara.UpdateRate = MetaGroups.Where(x => x.GroupId == metaGroup.Key.GroupId).ToList().First().UpdateRate; scanTagsPara.IsConsecutive = (bool)MetaGroups.Where(x => x.GroupId == metaGroup.Key.GroupId).ToList().First().IsActive; scanTagsPara.IsActive = MetaGroups.Where(x => x.GroupId == metaGroup.Key.GroupId).ToList().First().IsActive; + //scanTagsPara.IsActive = false; scanTagsPara.ScanTags = MetaTags.Where(x => x.GroupId == metaGroup.Key.GroupId).ToList(); short driverID = (short)MetaGroups.Where(x => x.GroupId == metaGroup.Key.GroupId).ToList().First().DriverId; scanTagsPara.DriverName = DriverName; @@ -703,15 +704,17 @@ namespace HTCoreServiceApp.Communicate.DriverSiemensS7 /// /// /// - public int Write(string writePara) + public int Write(WritePara writePara) { + //var t1 = DateTime.Now; int reCode = 0; - JObject valueJson = JObject.Parse(writePara); - var srcValue = valueJson[propertyName: "Value"].ToString(); - var writeAddress = valueJson[propertyName: "WriteAddress"].ToString(); - var dataType =short.Parse(valueJson[propertyName: "DataType"].ToString()); - var groupName = valueJson[propertyName: "GroupName"].ToString(); - + //JObject valueJson = JObject.Parse(writePara); + var srcValue = writePara.Value; //valueJson[propertyName: "Value"].ToString(); + var writeAddress = writePara.WriteAddress;//valueJson[propertyName: "WriteAddress"].ToString(); + var dataType = writePara.DataType;//short.Parse(valueJson[propertyName: "DataType"].ToString()); + var groupName = writePara.GroupName; //valueJson[propertyName: "GroupName"].ToString(); + var windex = writeAddress.IndexOf("."); + writeAddress = writeAddress.Remove(windex, 1).Insert(windex, ","); var array = writeAddress.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); var DBNum_string = array[0].ToString(); var DBNum = int.Parse(Regex.Replace(DBNum_string, "[a-z]", "", RegexOptions.IgnoreCase)); @@ -805,6 +808,9 @@ namespace HTCoreServiceApp.Communicate.DriverSiemensS7 } } Console.WriteLine(writePara); + //var t2 = DateTime.Now; + //var timediff = t2 - t1; + //Console.WriteLine($"S7写入耗时:{timediff}"); return reCode; } @@ -844,7 +850,7 @@ namespace HTCoreServiceApp.Communicate.DriverSiemensS7 value = "0"; } } - var writePara = new + var writePara = new WritePara { TagName = tagName, GroupName = groupName, @@ -852,9 +858,9 @@ namespace HTCoreServiceApp.Communicate.DriverSiemensS7 DataType = dataType, Value = value }; - string serJson = JsonConvert.SerializeObject(writePara); + //string serJson = JsonConvert.SerializeObject(writePara); - Write(serJson); + Write(writePara); } else diff --git a/HTCoreServiceApp/Communicate/Modbus/ModbusClientExample.cs b/HTCoreServiceApp/Communicate/Modbus/ModbusClientExample.cs index 02a930f..fdd0b1e 100644 --- a/HTCoreServiceApp/Communicate/Modbus/ModbusClientExample.cs +++ b/HTCoreServiceApp/Communicate/Modbus/ModbusClientExample.cs @@ -492,7 +492,7 @@ namespace HTCoreServiceApp.Communicate.Modbus } - public int Write(string writePara) + public int Write(WritePara writePara) { throw new NotImplementedException(); } diff --git a/HTCoreServiceApp/Communicate/ModbusTcp/ModbusTcpClientExample.cs b/HTCoreServiceApp/Communicate/ModbusTcp/ModbusTcpClientExample.cs index ad7577f..1872d73 100644 --- a/HTCoreServiceApp/Communicate/ModbusTcp/ModbusTcpClientExample.cs +++ b/HTCoreServiceApp/Communicate/ModbusTcp/ModbusTcpClientExample.cs @@ -501,7 +501,7 @@ namespace HTCoreServiceApp.Communicate.ModbusTcp } - public int Write(string writePara) + public int Write(WritePara writePara) { throw new NotImplementedException(); } diff --git a/HTCoreServiceApp/DriverInterface/IDriverEntity.cs b/HTCoreServiceApp/DriverInterface/IDriverEntity.cs index 2395243..79b9da9 100644 --- a/HTCoreServiceApp/DriverInterface/IDriverEntity.cs +++ b/HTCoreServiceApp/DriverInterface/IDriverEntity.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Logging; +using HTCoreServiceApp.Common; +using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; @@ -29,7 +30,7 @@ namespace HTCoreServiceApp.DriverInterface /// 往cpu中写入 /// /// - public int Write(string writePara); + public int Write(WritePara writePara); /// /// 无用暂留 diff --git a/HTCoreServiceApp/DriverThread.cs b/HTCoreServiceApp/DriverThread.cs index 6b1e4ff..b235b8f 100644 --- a/HTCoreServiceApp/DriverThread.cs +++ b/HTCoreServiceApp/DriverThread.cs @@ -161,7 +161,7 @@ namespace HTCoreServiceApp } - public int DriverWrite(string para) + public int DriverWrite(WritePara para) { return DriverEntity.Write(para); } diff --git a/HTCoreServiceApp/Program.cs b/HTCoreServiceApp/Program.cs index bef5425..f4f44c6 100644 --- a/HTCoreServiceApp/Program.cs +++ b/HTCoreServiceApp/Program.cs @@ -40,8 +40,8 @@ namespace HTCoreServiceApp //builder.Services.AddEndpointsApiExplorer(); - builder.Services.AddScoped(); - builder.Services.AddScoped(); + builder.Services.AddSingleton(); + builder.Services.AddSingleton(); var app = builder.Build(); @@ -105,4 +105,5 @@ namespace HTCoreServiceApp { } + } diff --git a/HTCoreServiceApp/WebApis/DeviceController.cs b/HTCoreServiceApp/WebApis/DeviceController.cs index 47befe8..19da2c0 100644 --- a/HTCoreServiceApp/WebApis/DeviceController.cs +++ b/HTCoreServiceApp/WebApis/DeviceController.cs @@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Caching.Memory; -using Newtonsoft.Json; +//using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; @@ -14,6 +14,8 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Linq.Expressions; using System.Security.Cryptography.X509Certificates; +using System.Text.Json; +using System.Text.Json.Serialization; using System.Text.RegularExpressions; namespace HTCoreServiceApp.WebApi @@ -49,16 +51,16 @@ namespace HTCoreServiceApp.WebApi //[HttpGet] public async Task SetDeviceData(string groupName,string tagName,string value) { + //var t1 = DateTime.Now; + //var ip = HttpContext.GetClientUserIp(); + //var cache = StaticLibrary.MemoryCacheHelper.Get>(driverName).Where(x=>x.GroupName == groupName).First(); + //var val = new List(); + //StaticLibrary.MemoryCacheHelper.TryGetValue(driverName,out val); + //return LiveJsonIntegrate.MetaValues2Json(val.FirstOrDefault()); - //var ip = HttpContext.GetClientUserIp(); - //var cache = StaticLibrary.MemoryCacheHelper.Get>(driverName).Where(x=>x.GroupName == groupName).First(); - //var val = new List(); - //StaticLibrary.MemoryCacheHelper.TryGetValue(driverName,out val); - //return LiveJsonIntegrate.MetaValues2Json(val.FirstOrDefault()); + //var userAgent = HttpContext. - //var userAgent = HttpContext. - - int reCode = 0; + int reCode = 0; //直接返回,取消后续写入步骤 //return reCode; @@ -78,8 +80,8 @@ namespace HTCoreServiceApp.WebApi reCode = 1; return reCode.ToString(); } - var windex = writeAddress.IndexOf("."); - writeAddress = writeAddress.Remove(windex, 1).Insert(windex, ","); + //var windex = writeAddress.IndexOf("."); + //writeAddress = writeAddress.Remove(windex, 1).Insert(windex, ","); //var valueHandle = 0; if (dataType == (short)DataType.BOOL) { @@ -97,22 +99,25 @@ namespace HTCoreServiceApp.WebApi var iFloatPlaces = (int)metaTags.Where(x => x.TagName == tagName && x.GroupId == groupID).First().IFloatPlaces; value = ((int)(float.Parse(value) * (int)Math.Pow(10.0f, iFloatPlaces))).ToString(); } - var writePara = new - { + var writePara = new WritePara + { TagName = tagName, GroupName = groupName, WriteAddress = writeAddress, DataType = dataType, Value = value }; - string serJson = JsonConvert.SerializeObject(writePara); + //string serJson = JsonSerializer.Serialize(writePara); //JsonConvert.SerializeObject(writePara); + //var t2 = DateTime.Now; + //var timediff = t2 - t1; + //Console.WriteLine($"写入参数初始化耗时:{timediff}"); - foreach (var driverThread in _driverService.DriverThreads) + foreach (var driverThread in _driverService.DriverThreads) { if (driverThread.driverName == driverName) { - reCode = driverThread.DriverWrite(serJson); + reCode = driverThread.DriverWrite(writePara); } } } @@ -124,7 +129,9 @@ namespace HTCoreServiceApp.WebApi catch (Exception ex) { reCode = 1; + GC.Collect(); } + GC.Collect(); return reCode.ToString(); } } diff --git a/HTCoreServiceApp/WebApis/Extension.cs b/HTCoreServiceApp/WebApis/Extension.cs index d9b9137..a9b32e3 100644 --- a/HTCoreServiceApp/WebApis/Extension.cs +++ b/HTCoreServiceApp/WebApis/Extension.cs @@ -22,4 +22,8 @@ namespace HTCoreServiceApp.WebApi return ip; } } + + //public record WritePara(string TagName, string GroupName, string WriteAddress, byte DataType, string Value) + //{ + //} } diff --git a/HTCoreServiceApp/appsettings.json b/HTCoreServiceApp/appsettings.json index 6ad0882..307c4cf 100644 --- a/HTCoreServiceApp/appsettings.json +++ b/HTCoreServiceApp/appsettings.json @@ -1,7 +1,7 @@ { "ConnectionStrings": { "Type": "SqlServer", - "SqlServer": "Zk48ARnbLq1Lk+lzxvCij/8Pt/tnmDwn+rE3IgYGjblF9G4nGtc0SdFjHwyesdp8uVH2ffnIhBBhZ4UAb8vy3t7LPWJUEb12fVMorU1o2h9vdd+2yPnv3Y7J4FI0mIFUtw6Pb2l37+KmJdGCN2JX/lQvZvJ3YxGt5OCJPbEH/R2XrtZoLtZ5dj/EEVhGxtrt/v65G8u14+Hsa6LpnchUmw==" + "SqlServer": "Zk48ARnbLq1Lk+lzxvCij/8Pt/tnmDwn+rE3IgYGjbm+C8BGXKBFaf7hraUiRoNfatF6eAiz2tK7uKmJVdp0NSLHsd5WiUB9dZ05VUn7ddOJqlxnIdmCERpNOuWW6zTH5gzFjvz0gHp2YRMwvwfeavVIuwxq1D1UYL9poZrBy9k9LIERYOVAfeYdaZb6AzQKFNz+6yOszCxvEhQOuQcBMw==" }, "Logging": { "LogLevel": {