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 } }