添加心跳专用写入方法,防御性更改不做debug,有问题回退此修改
This commit is contained in:
@ -151,6 +151,10 @@ namespace HTCoreServiceApp
|
|||||||
async (string deviceCode, string plcTag, string value, HttpContext context, DeviceControl dc)
|
async (string deviceCode, string plcTag, string value, HttpContext context, DeviceControl dc)
|
||||||
=> Results.Content(await dc.SetDevicePlcTagData(deviceCode, plcTag, value, context)));
|
=> 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}",
|
deviceControl.MapGet("/SetDeviceBlockData/driverName={driverName}&address={address}&value={value}",
|
||||||
async (string driverName, string address, string value, DeviceControl dc)
|
async (string driverName, string address, string value, DeviceControl dc)
|
||||||
=> Results.Content(await dc.SetDeviceBlockData(driverName, address, value)));
|
=> Results.Content(await dc.SetDeviceBlockData(driverName, address, value)));
|
||||||
|
@ -355,6 +355,119 @@ namespace HTCoreServiceApp.WebApi
|
|||||||
Console.WriteLine($"写入耗时:{timediff}");
|
Console.WriteLine($"写入耗时:{timediff}");
|
||||||
return reCode.ToString();
|
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)
|
public async Task<string> SetDevicePlcTagDataPost(string deviceCode, string plcTag, string value, HttpContext context)
|
||||||
{
|
{
|
||||||
var time1 = DateTime.Now;
|
var time1 = DateTime.Now;
|
||||||
|
Reference in New Issue
Block a user