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;
}
///
/// 从xml获取圆形皿的所有探测点位
///
///
///
public static ObservableCollection GenerateDishPointDataTable(XmlNode xmlNode)
{
XmlNode xmlNodePointList = xmlNode.SelectSingleNode("pointList");
ObservableCollection listPoint = new ObservableCollection();
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;
}
///
/// 从xml获取超声页面数据
///
///
///
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;
}
///
/// 从xml获取超声子页面数据
///
///
///
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 执行超声探测
///
/// 执行超声探测
///
/// 吸液的参数对象
///
/// 结果实体对象
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
}
}