添加心跳专用写入方法,防御性更改不做debug,有问题回退此修改
This commit is contained in:
@ -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)));
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user