using NationalInstruments.TestStand.Interop.API;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
|
namespace HMI.Simple.Util
|
{
|
public class ParameterUtil
|
{
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="path"></param>
|
/// <param name="name"></param>
|
/// <returns></returns>
|
public static string GetCommonParameterValue(string path, string name)
|
{
|
if (!File.Exists(path)) return null;
|
List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(path);
|
ParameterData data = datas.FirstOrDefault(d => d.Name == name);
|
if (data == null) return null;
|
return data.Value;
|
}
|
|
/// <summary>
|
/// 获取HMI里配置的参数
|
/// </summary>
|
/// <param name="name"></param>
|
/// <returns></returns>
|
public static string GetCommonParameterValue(string name, out string errMsg)
|
{
|
errMsg = string.Empty;
|
try
|
{
|
string value = RegUtil.GetLocaltion();
|
string path = Path.Combine(value, "Config", "Parameter", "CommonParameter.data");
|
if (!File.Exists(path))
|
{
|
errMsg = "未找到配置文件";
|
return null;
|
}
|
List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(path);
|
ParameterData data = datas.FirstOrDefault(d => d.Name == name);
|
if (data == null)
|
{
|
errMsg = "未找到参数,请检查配置";
|
return null;
|
}
|
return data.Value;
|
}
|
catch (Exception ex)
|
{
|
errMsg = ex.Message;
|
return null;
|
}
|
}
|
|
private static void WriteParameterData(SequenceContext context, ParameterData data)
|
{
|
string prefix = "SystemSetting";
|
if (data.Type == "Bool")
|
{
|
context.StationGlobals.SetValBoolean($"{prefix}.{data.Name}", 1, bool.Parse(data.Value));
|
}
|
else if (data.Type == "Int")
|
{
|
context.StationGlobals.SetValNumber($"{prefix}.{data.Name}", 1, int.Parse(data.Value));
|
}
|
else if (data.Type == "Double")
|
{
|
context.StationGlobals.SetValNumber($"{prefix}.{data.Name}", 1, double.Parse(data.Value));
|
}
|
else
|
{
|
context.StationGlobals.SetValString($"{prefix}.{data.Name}", 1, data.Value);
|
}
|
}
|
|
/// <summary>
|
/// 将参数写进Engine的StationGlobals.StationState
|
/// </summary>
|
/// <param name="name"></param>
|
/// <returns></returns>
|
public static bool WriteConfigToContext(object instance, out string errMsg)
|
{
|
errMsg = string.Empty;
|
try
|
{
|
string value = RegUtil.GetLocaltion();
|
string path = Path.Combine(value, "Config", "Parameter", "CommonParameter.data");
|
return WriteConfigToContext(path, instance, out errMsg);
|
}
|
catch (Exception ex)
|
{
|
errMsg = ex.Message;
|
return false;
|
}
|
}
|
|
/// <summary>
|
/// 将参数写进Engine的StationGlobals.StationState
|
/// </summary>
|
/// <param name="name"></param>
|
/// <returns></returns>
|
public static bool WriteConfigToContext(string xmlPath, object instance, out string errMsg)
|
{
|
errMsg = string.Empty;
|
try
|
{
|
SequenceContext context = (SequenceContext)instance;
|
if (string.IsNullOrEmpty(xmlPath))
|
{
|
throw new Exception("配置文件路径不能为空");
|
}
|
if (!File.Exists(xmlPath))
|
{
|
throw new Exception("未找到配置文件");
|
}
|
List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(xmlPath);
|
foreach (var data in datas)
|
{
|
WriteParameterData(context, data);
|
}
|
return true;
|
}
|
catch (Exception ex)
|
{
|
errMsg = ex.Message;
|
return false;
|
}
|
}
|
|
/// <summary>
|
/// 将参数写进Engine的StationGlobals.StationState
|
/// </summary>
|
/// <param name="name"></param>
|
/// <returns></returns>
|
public static bool WriteConfigToEngineByName(string xmlPath, object instance, string name, out string errMsg)
|
{
|
errMsg = string.Empty;
|
try
|
{
|
SequenceContext context = (SequenceContext)instance;
|
if (string.IsNullOrEmpty(xmlPath))
|
{
|
throw new Exception("配置文件路径不能为空");
|
}
|
if (!File.Exists(xmlPath))
|
{
|
throw new Exception("未找到配置文件");
|
}
|
List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(xmlPath);
|
ParameterData data = datas.FirstOrDefault(d => d.Name == name);
|
if (data == null)
|
{
|
throw new Exception("未找到参数,请检查配置");
|
}
|
WriteParameterData(context, data);
|
return true;
|
}
|
catch (Exception ex)
|
{
|
errMsg = ex.Message;
|
return false;
|
}
|
}
|
|
/// <summary>
|
/// 将参数写进Engine的StationGlobals.StationState
|
/// </summary>
|
/// <param name="name"></param>
|
/// <returns></returns>
|
public static bool WriteConfigToEngineByName(object instance, string name, out string errMsg)
|
{
|
errMsg = string.Empty;
|
try
|
{
|
SequenceContext engine = (SequenceContext)instance;
|
string value = RegUtil.GetLocaltion();
|
string path = Path.Combine(value, "Config", "Parameter", "CommonParameter.data");
|
return WriteConfigToEngineByName(path, instance, name, out errMsg);
|
}
|
catch (Exception ex)
|
{
|
errMsg = ex.Message;
|
return false;
|
}
|
}
|
}
|
}
|