using DriverLib.Engine;
|
using System;
|
using System.Collections.ObjectModel;
|
using System.Xml;
|
using XImagingXhandler.XDAL;
|
|
namespace XCore
|
{
|
public class UltrasonicBll
|
{
|
string strCurrentCulture = "";
|
public UltrasonicBll()
|
{
|
strCurrentCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
|
}
|
|
/// <summary>
|
/// 从xml获取圆形皿的所有探测点位
|
/// </summary>
|
/// <param name="xmlNode"></param>
|
/// <returns></returns>
|
public static ObservableCollection<DropdownName> GenerateDishPointDataTable(XmlNode xmlNode)
|
{
|
XmlNode xmlNodePointList = xmlNode.SelectSingleNode("pointList");
|
ObservableCollection<DropdownName> listPoint = new ObservableCollection<DropdownName>();
|
|
if (xmlNodePointList.ChildNodes[0] != null)
|
{
|
for (int i = 0; i < xmlNodePointList.ChildNodes[0].ChildNodes.Count; i++)
|
{
|
DropdownName data = new DropdownName();
|
for (int j = 0; j < xmlNodePointList.ChildNodes.Count; j++)
|
{
|
if (j == 0)
|
{
|
data.dropdown_id = xmlNodePointList.ChildNodes[j].ChildNodes[i].InnerText;
|
}
|
else
|
{
|
data.dropdown_name = xmlNodePointList.ChildNodes[j].ChildNodes[i].InnerText;
|
}
|
}
|
|
data.index_id = i + 1;
|
listPoint.Add(data);
|
}
|
}
|
|
return listPoint;
|
}
|
|
/// <summary>
|
/// 从xml获取超声页面数据
|
/// </summary>
|
/// <param name="xmlNode"></param>
|
/// <returns></returns>
|
public MethodUltrasonic GenerateMethodUltrasonicDataByXmlNode(XmlNode xmlNode)
|
{
|
MethodUltrasonic methodUltrasonic = new MethodUltrasonic();
|
|
methodUltrasonic.isrun = xmlNode.SelectSingleNode("isrun").InnerText;
|
methodUltrasonic.status = xmlNode.SelectSingleNode("status").InnerText;
|
methodUltrasonic.name = xmlNode.SelectSingleNode("name").InnerText;
|
methodUltrasonic.label = xmlNode.SelectSingleNode("label").InnerText;
|
methodUltrasonic.strIndex = xmlNode.SelectSingleNode("strIndex").InnerText;
|
|
// 从xml获取超声子页面数据
|
methodUltrasonic.ultrasonicData = GenerateMethodUltrasonicChildDataByXmlNode(xmlNode);
|
return methodUltrasonic;
|
}
|
|
/// <summary>
|
/// 从xml获取超声子页面数据
|
/// </summary>
|
/// <param name="xmlNode"></param>
|
/// <returns></returns>
|
public static MethodUltrasonicChild GenerateMethodUltrasonicChildDataByXmlNode(XmlNode xmlNode)
|
{
|
MethodUltrasonicChild ultrasonicData = new MethodUltrasonicChild();
|
|
ultrasonicData.labwareText = xmlNode.SelectSingleNode("labware/text").InnerText;
|
ultrasonicData.labwareValue = xmlNode.SelectSingleNode("labware/value").InnerText;
|
ultrasonicData.positionText = xmlNode.SelectSingleNode("position/text").InnerText;
|
ultrasonicData.positionValue = xmlNode.SelectSingleNode("position/value").InnerText;
|
|
#region 圆形皿
|
ultrasonicData.xDishAxisVal = Convert.ToDouble(xmlNode.SelectSingleNode("xDishAxisVal").InnerText);
|
ultrasonicData.yDishAxisVal = Convert.ToDouble(xmlNode.SelectSingleNode("yDishAxisVal").InnerText);
|
ultrasonicData.pointList = GenerateDishPointDataTable(xmlNode);//xmlNode.SelectSingleNode("enableSensorBlock").InnerText.ToLower() == "true" ? true : false;
|
#endregion
|
|
#region 非圆形皿
|
ultrasonicData.rowNum = Convert.ToInt32(xmlNode.SelectSingleNode("rowNum").InnerText);
|
ultrasonicData.columnNum = Convert.ToInt32(xmlNode.SelectSingleNode("columnNum").InnerText);
|
ultrasonicData.closeTopVal = Convert.ToDouble(xmlNode.SelectSingleNode("closeTopVal").InnerText);
|
ultrasonicData.closeLeftVal = Convert.ToDouble(xmlNode.SelectSingleNode("closeLeftVal").InnerText);
|
ultrasonicData.xAxisVal = Convert.ToDouble(xmlNode.SelectSingleNode("xAxisVal").InnerText);
|
ultrasonicData.yAxisVal = Convert.ToDouble(xmlNode.SelectSingleNode("yAxisVal").InnerText);
|
#endregion
|
|
return ultrasonicData;
|
}
|
|
#region 执行超声探测
|
/// <summary>
|
/// 执行超声探测
|
/// </summary>
|
/// <param name="labwareNode">吸液的参数对象</param>
|
/// <param name="isSimulator"></param>
|
/// <returns>结果实体对象</returns>
|
public HxResult ExecuteUltrasonic(UltrasonicMParam ultrasonicMParam, bool isSimulator = false)
|
{
|
HxResult ret = new HxResult();
|
if (!isSimulator)
|
{
|
ret = MethodAction.Instance.DistanceMeasure(ultrasonicMParam);
|
}
|
else
|
{
|
ret.Result = ResultType.Success;
|
}
|
|
return ret;
|
}
|
#endregion
|
}
|
}
|