添加心跳专用写入方法,防御性更改不做debug,有问题回退此修改

This commit is contained in:
dell
2025-08-29 17:17:06 +08:00
parent 29d07ad1ef
commit d9700aea01
2 changed files with 117 additions and 0 deletions

View File

@ -151,6 +151,10 @@ namespace HTCoreServiceApp
async (string deviceCode, string plcTag, string value, HttpContext context, DeviceControl dc)
=> Results.Content(await dc.SetDevicePlcTagData(deviceCode, plcTag, value, context)));
deviceControl.MapGet("/SetDevicePlcTagData/deviceCode={deviceCode}&plcTag={plcTag}&value={value}",
async (string deviceCode, string plcTag, string value, HttpContext context, DeviceControl dc)
=> Results.Content(await dc.SetDevicePlcTagDataHeartbeat(deviceCode, plcTag, value, context)));
deviceControl.MapGet("/SetDeviceBlockData/driverName={driverName}&address={address}&value={value}",
async (string driverName, string address, string value, DeviceControl dc)
=> Results.Content(await dc.SetDeviceBlockData(driverName, address, value)));

View File

@ -355,6 +355,119 @@ namespace HTCoreServiceApp.WebApi
Console.WriteLine($"写入耗时:{timediff}");
return reCode.ToString();
}
public async Task<string> SetDevicePlcTagDataHeartbeat(string deviceCode, string plcTag, string value, HttpContext context)
{
var time1 = DateTime.Now;
//var htsetlog = new HTLogSetDriver();
//htsetlog.EventTime = DateTime.Now;
//var t1 = DateTime.Now;
//htsetlog.RequestIp = context.Connection.RemoteIpAddress.ToString();// "192.168.110.247";
//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.
int reCode = 0;
//直接返回,取消后续写入步骤
//return reCode;
try
{
var tagName = metaTags.Where(x => x.PLCAddress == $"{deviceCode}_{plcTag}").FirstOrDefault().TagName;
if (!string.IsNullOrEmpty(tagName) && !string.IsNullOrEmpty(value))
{
//var context = StaticLibrary.DBContext;
//return StaticLibrary.MemoryCacheHelper.GetString(groupName);
//var dataType = metaTags.Where(x => x.TagName == tagName && x.GroupId == groupID).First().DataType;
//var writeAddress = metaTags.Where(x => x.TagName == tagName && x.GroupId == groupID).First().PLCAddress;//231113 ,CDL QWZ 写入地址字段由WriteAddress修改为PLCAddress
var tag = metaTags.Where(x => x.TagName == tagName).First();
var dataType = tag.DataType;
var groupID = tag.GroupId;
var driverID = metaGroups.Where(x => x.GroupId == groupID).FirstOrDefault().DriverId;
var driverName = metaDrivers.Where(x => x.DriverId == driverID).FirstOrDefault().DriverName;
var writeAddress = tag.WriteAddress;//231113 ,CDL QWZ 写入地址字段由WriteAddress修改为PLCAddress
//htsetlog.WriteDriverName = driverName;
//htsetlog.WriteTagName = tag.TagName;
//htsetlog.WriteAddress = writeAddress;
//htsetlog.WriteValue = value;
if (writeAddress == "" || writeAddress == null)
{
reCode = 3;
//htsetlog.WriteResult = reCode.ToString();
//LogHelper.SetDriverLogTask(htsetlog);
return reCode.ToString();
}
//var windex = writeAddress.IndexOf(".");
//writeAddress = writeAddress.Remove(windex, 1).Insert(windex, ",");
//var valueHandle = 0;
if (dataType == (short)DataType.BOOL)
{
if (value.Equals("True") || value.Equals("true") || value.Equals("TRUE") || value.Equals("1"))
{
value = "1";
}
else if (value.Equals("False") || value.Equals("false") || value.Equals("FALSE") || value.Equals("0"))
{
value = "0";
}
}
if (dataType == (short)DataType.IFLOAT)
{
var iFloatPlaces = (int)tag.IFloatPlaces;
value = ((int)(float.Parse(value) * (int)Math.Pow(10.0f, iFloatPlaces))).ToString();
}
var writePara = new WritePara
{
TagName = tagName,
//GroupName = groupName,
WriteAddress = writeAddress,
DataType = dataType,
Value = value
};
//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)
{
if (driverThread.driverName == driverName)
{
reCode = driverThread.DriverWrite(writePara);
//htsetlog.WriteResult = reCode.ToString();
}
}
}
else
{
reCode = 2;
//htsetlog.WriteResult = reCode.ToString();
}
}
catch (Exception ex)
{
reCode = 1;
//htsetlog.WriteResult = reCode.ToString();
//htsetlog.WriteErrInformation = ex.ToString();
//LogHelper.SetDriverLogTask(htsetlog);
GC.Collect();
LogHelper.LogWrite("S7写入数据出错PLCAddresss" + deviceCode.ToString() + "_" + plcTag.ToString() + ",ERROR" + ex.ToString());
return reCode.ToString() + "/t" + ex.ToString();
}
//LogHelper.SetDriverLogTask(htsetlog);
GC.Collect();
var time2 = DateTime.Now;
var timediff = time2 - time1;
Console.WriteLine($"写入耗时:{timediff}");
return reCode.ToString();
}
public async Task<string> SetDevicePlcTagDataPost(string deviceCode, string plcTag, string value, HttpContext context)
{
var time1 = DateTime.Now;