写入使用类属性传值;

写入修改为单例服务
This commit is contained in:
dell
2023-12-04 10:37:06 +08:00
parent 157d56a3fc
commit 2a4d416bc7
12 changed files with 82 additions and 48 deletions

View File

@ -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)
//{
//}
}

View File

@ -485,15 +485,15 @@ namespace HTCoreServiceApp.Communicate.AllenBradleyEIP
/// </summary>
/// <param name="writePara"></param>
/// <returns></returns>
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)

View File

@ -460,15 +460,15 @@ namespace HTCoreServiceApp.Communicate.AllenBradleyEIPTag
/// </summary>
/// <param name="writePara"></param>
/// <returns></returns>
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)

View File

@ -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
/// </summary>
/// <param name="writePara"></param>
/// <returns></returns>
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

View File

@ -492,7 +492,7 @@ namespace HTCoreServiceApp.Communicate.Modbus
}
public int Write(string writePara)
public int Write(WritePara writePara)
{
throw new NotImplementedException();
}

View File

@ -501,7 +501,7 @@ namespace HTCoreServiceApp.Communicate.ModbusTcp
}
public int Write(string writePara)
public int Write(WritePara writePara)
{
throw new NotImplementedException();
}

View File

@ -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中写入
/// </summary>
/// <returns></returns>
public int Write(string writePara);
public int Write(WritePara writePara);
/// <summary>
/// 无用暂留

View File

@ -161,7 +161,7 @@ namespace HTCoreServiceApp
}
public int DriverWrite(string para)
public int DriverWrite(WritePara para)
{
return DriverEntity.Write(para);
}

View File

@ -40,8 +40,8 @@ namespace HTCoreServiceApp
//builder.Services.AddEndpointsApiExplorer();
builder.Services.AddScoped<DataLiveCache>();
builder.Services.AddScoped<DeviceControl>();
builder.Services.AddSingleton<DataLiveCache>();
builder.Services.AddSingleton<DeviceControl>();
var app = builder.Build();
@ -105,4 +105,5 @@ namespace HTCoreServiceApp
{
}
}

View File

@ -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<string> SetDeviceData(string groupName,string tagName,string value)
{
//var t1 = DateTime.Now;
//var ip = HttpContext.GetClientUserIp();
//var cache = StaticLibrary.MemoryCacheHelper.Get<List<LiveGroupDictionary>>(driverName).Where(x=>x.GroupName == groupName).First();
//var val = new List<LiveGroupDictionary>();
//StaticLibrary.MemoryCacheHelper.TryGetValue(driverName,out val);
//return LiveJsonIntegrate.MetaValues2Json(val.FirstOrDefault());
//var ip = HttpContext.GetClientUserIp();
//var cache = StaticLibrary.MemoryCacheHelper.Get<List<LiveGroupDictionary>>(driverName).Where(x=>x.GroupName == groupName).First();
//var val = new List<LiveGroupDictionary>();
//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();
}
}

View File

@ -22,4 +22,8 @@ namespace HTCoreServiceApp.WebApi
return ip;
}
}
//public record WritePara(string TagName, string GroupName, string WriteAddress, byte DataType, string Value)
//{
//}
}

View File

@ -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": {