using HMI.Simple.Util;
|
using OpenTap;
|
using OpenTap.Addin.Util;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
|
namespace HMI.TapApi
|
{
|
public class ProductUtil
|
{
|
private static void WriteParameterData(object instance, ParameterData data)
|
{
|
TestPlanRun context = (TestPlanRun)instance;
|
string name = $"DUTSetting.{data.Name}";
|
if (data.IsArray)
|
{
|
Type type;
|
if (data.Type == "Bool")
|
{
|
type = typeof(bool);
|
}
|
else if (data.Type == "Int")
|
{
|
type = typeof(int);
|
}
|
else if (data.Type == "Double")
|
{
|
type = typeof(double);
|
}
|
else
|
{
|
type = typeof(string);
|
}
|
string[] arr = data.Value?.Split(',') ?? new string[0];
|
if (arr.Length > 0)
|
{
|
//RuntimeVariable rv;
|
//if (data.Type == "Int")
|
//{
|
// int[] values = arr.Select(a => int.Parse(a)).ToArray();
|
// rv = new RuntimeVariable(context, name, values);
|
//}
|
//if (data.Type == "Double")
|
//{
|
// double[] values = arr.Select(a => double.Parse(a)).ToArray();
|
// rv = new RuntimeVariable(context, name, values);
|
//}
|
//if (data.Type == "Bool")
|
//{
|
// bool[] values = arr.Select(a => bool.Parse(a)).ToArray();
|
// rv = new RuntimeVariable(context, name, values);
|
//}
|
//else
|
//{
|
// rv = new RuntimeVariable(context, name, arr);
|
//}
|
|
if (data.Type == "Int")
|
{
|
int[] values = arr.Select(a => int.Parse(a)).ToArray();
|
context.Update(null, $"{ConstNames.FileGlobalsName}.{name}", values);
|
}
|
if (data.Type == "Double")
|
{
|
double[] values = arr.Select(a => double.Parse(a)).ToArray();
|
context.Update(null, $"{ConstNames.FileGlobalsName}.{name}", values);
|
}
|
if (data.Type == "Bool")
|
{
|
bool[] values = arr.Select(a => bool.Parse(a)).ToArray();
|
context.Update(null, $"{ConstNames.FileGlobalsName}.{name}", values);
|
}
|
else
|
{
|
context.Update(null, $"{ConstNames.FileGlobalsName}.{name}", arr);
|
}
|
}
|
}
|
else
|
{
|
if (data.Type == "Bool")
|
{
|
context.Update(null, $"{ConstNames.FileGlobalsName}.{name}", bool.Parse(data.Value));
|
}
|
else if (data.Type == "Int")
|
{
|
context.Update(null, $"{ConstNames.FileGlobalsName}.{name}", int.Parse(data.Value));
|
}
|
else if (data.Type == "Double")
|
{
|
context.Update(null, $"{ConstNames.FileGlobalsName}.{name}", double.Parse(data.Value));
|
}
|
else
|
{
|
context.Update(null, $"{ConstNames.FileGlobalsName}.{name}", data.Value);
|
}
|
}
|
}
|
|
private static string GetDataFilePath()
|
{
|
string path = ParameterUtil.GetCommonParameterValue("ShareConfig", out _);
|
if (string.IsNullOrEmpty(path))
|
{
|
path = Path.Combine(HMI.Simple.Util.RegUtil.GetLocaltion(), "Config");
|
}
|
return path;
|
}
|
|
/// <summary>
|
/// 根据产品型号写配置
|
/// </summary>
|
/// <param name="model">产品型号</param>
|
/// <param name="instance">TestStand上下文</param>
|
/// <param name="errMsg">异常信息</param>
|
/// <returns>是否成功</returns>
|
public static bool WriteConfigToContextByModel(string model, object instance, out string errMsg)
|
{
|
errMsg = string.Empty;
|
try
|
{
|
string path = Path.Combine(GetDataFilePath(), "Product", "Parameter", $"Parameter_{model}.data");
|
return WriteConfigToContextByPath(path, instance, out errMsg);
|
}
|
catch (Exception ex)
|
{
|
errMsg = ex.Message;
|
return false;
|
}
|
}
|
|
/// <summary>
|
/// 根据路径写配置
|
/// </summary>
|
/// <param name="path">绝对路径</param>
|
/// <param name="instance">TestStand上下文</param>
|
/// <param name="errMsg">异常信息</param>
|
/// <returns>是否成功</returns>
|
public static bool WriteConfigToContextByPath(string path, object instance, out string errMsg)
|
{
|
errMsg = string.Empty;
|
try
|
{
|
if (!File.Exists(path))
|
{
|
throw new Exception($"未找到该配置[{path}],请检查");
|
}
|
List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(path);
|
foreach (var data in datas)
|
{
|
WriteParameterData(instance, data);
|
}
|
return true;
|
}
|
catch (Exception ex)
|
{
|
errMsg = ex.Message;
|
return false;
|
}
|
}
|
}
|
}
|