using DriverLib.Engine; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; using XCommon; using XCoreBLL.Resource; using XImagingXhandler.XDAL; namespace XCore { public class MixingBll { string strCurrentCulture = ""; public MixingBll() { strCurrentCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name; } public MethodMixing GenerateMethodMixingDataByXmlNode(XmlNode xmlNode) { MethodMixing methodMixing = new MethodMixing(); methodMixing.isrun = xmlNode.SelectSingleNode("isrun").InnerText; methodMixing.status = xmlNode.SelectSingleNode("status").InnerText; methodMixing.name = xmlNode.SelectSingleNode("name").InnerText; methodMixing.label = xmlNode.SelectSingleNode("label").InnerText; methodMixing.strIndex = xmlNode.SelectSingleNode("strIndex").InnerText; methodMixing.labwareText = xmlNode.SelectSingleNode("labware/text").InnerText; methodMixing.labwareValue = xmlNode.SelectSingleNode("labware/value").InnerText; methodMixing.positionText = xmlNode.SelectSingleNode("position/text").InnerText; methodMixing.positionValue = xmlNode.SelectSingleNode("position/value").InnerText; methodMixing.armText = xmlNode.SelectSingleNode("arm/text").InnerText; methodMixing.armValue = xmlNode.SelectSingleNode("arm/value").InnerText; methodMixing.headType = xmlNode.SelectSingleNode("headType").InnerText; string strchs = xmlNode.SelectSingleNode("channels").InnerText; methodMixing.channels = ComUtility.GetChannelsFromXml(strchs); methodMixing.wellarray = xmlNode.SelectSingleNode("wellarray").InnerText; methodMixing.enableSingleWellvolume = xmlNode.SelectSingleNode("enableSingleWellvolume").InnerText.ToLower() == "true" ? true : false; XmlNodeList xnList = xmlNode.SelectNodes("SingleWellvolume"); List list = new List(); foreach (XmlNode xn in xnList) { DropdownName dropdownName = new DropdownName(); dropdownName.dropdown_id = xn.SelectSingleNode("channel").InnerText; dropdownName.dropdown_name = xn.SelectSingleNode("value").InnerText; list.Add(dropdownName); } methodMixing.singlewellvolume = list; //methodMixing.wellvolume = Convert.ToDouble(xmlNode.SelectSingleNode("wellvolume").InnerText); //methodDispense.isNull = xmlNode.SelectSingleNode("isNull").InnerText.ToLower() == "true" ? true : false; methodMixing.liquididText = xmlNode.SelectSingleNode("liquidid/text").InnerText; methodMixing.liquididValue = xmlNode.SelectSingleNode("liquidid/value").InnerText; methodMixing.liquidrangeidText = xmlNode.SelectSingleNode("liquidrangeid/text").InnerText; methodMixing.liquidrangeidValue = xmlNode.SelectSingleNode("liquidrangeid/value").InnerText; methodMixing.liquidpidText = xmlNode.SelectSingleNode("liquidpid/text").InnerText; methodMixing.liquidpidValue = xmlNode.SelectSingleNode("liquidpid/value").InnerText; //methodDispense.bMix = xmlNode.SelectSingleNode("enableMix").InnerText.ToLower() == "true" ? true : false; methodMixing.mixvolume = Convert.ToDouble(xmlNode.SelectSingleNode("mixvolume").InnerText); methodMixing.mixcount = Convert.ToInt32(xmlNode.SelectSingleNode("mixcount").InnerText); methodMixing.mixAspiratePositionText = xmlNode.SelectSingleNode("mixAspiratePosition/text").InnerText; methodMixing.mixAspiratePositionValue = Convert.ToInt32(xmlNode.SelectSingleNode("mixAspiratePosition/value").InnerText); methodMixing.mixAspirateDistance = Convert.ToDouble(xmlNode.SelectSingleNode("mixAspirateDistance").InnerText); methodMixing.mixAspirateSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("mixAspirateSpeed").InnerText); methodMixing.mixDispensePositionText = xmlNode.SelectSingleNode("mixDispensePosition/text").InnerText; methodMixing.mixDispensePositionValue = Convert.ToInt32(xmlNode.SelectSingleNode("mixDispensePosition/value").InnerText); methodMixing.mixDispenseDistance = Convert.ToDouble(xmlNode.SelectSingleNode("mixDispenseDistance").InnerText); methodMixing.mixDispenseSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("mixDispenseSpeed").InnerText); methodMixing.enableLiquidSensor = xmlNode.SelectSingleNode("enableLiquidSensor").InnerText.ToLower() == "true" ? true : false; methodMixing.liquidSensorCount = Convert.ToInt32(xmlNode.SelectSingleNode("liquidSensorCount").InnerText); methodMixing.liquidSensorDistance = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorDistance").InnerText); methodMixing.liquidSensorEndDistance = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorEndDistance").InnerText); methodMixing.liquidSensorSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorSpeed").InnerText); methodMixing.liquidSensorRadio = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorRadio").InnerText); methodMixing.liquidSensorDisIdText = xmlNode.SelectSingleNode("liquidSensorDisId/text").InnerText; methodMixing.liquidSensorDisIdValue = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorDisId/value").InnerText); methodMixing.enableLiquidFollow = xmlNode.SelectSingleNode("enableLiquidFollow").InnerText.ToLower() == "true" ? true : false; methodMixing.liquidFollowType = Convert.ToInt32(xmlNode.SelectSingleNode("liquidFollowType/value").InnerText); methodMixing.liquidFollowTypeName = xmlNode.SelectSingleNode("liquidFollowType/text").InnerText; methodMixing.liquidFollowSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("liquidFollowSpeed").InnerText); methodMixing.liquidFollowDistance = Convert.ToDouble(xmlNode.SelectSingleNode("liquidFollowDistance").InnerText); methodMixing.liquidFollowArea = Convert.ToDouble(xmlNode.SelectSingleNode("liquidFollowArea").InnerText); methodMixing.enableSensorBlock = xmlNode.SelectSingleNode("enableSensorBlock").InnerText.ToLower() == "true" ? true : false; methodMixing.liquidSensorBlockDistance = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorBlockDistance").InnerText); methodMixing.liquidSensorBlockDisIdText = xmlNode.SelectSingleNode("liquidSensorBlockDisId/text").InnerText; methodMixing.liquidSensorBlockDisIdValue = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorDisId/value").InnerText); return methodMixing; } #region 检查所有属性设置是否满足要求 /// /// 检查所有属性设置是否满足要求 /// /// 混合属性对象 /// 检查所有属性设置是否满足要求 public MethodPropertyInfo CheckProperty(MethodMixing methodMixing) { MethodPropertyInfo methodPropertyInfo = new MethodPropertyInfo(); if (strCurrentCulture == "zh-CN") { methodPropertyInfo.property_tips_info = MixingResourceCHS.tipsInfo.ToString(); if (methodMixing.labwareValue == null || methodMixing.labwaretipValue == "") { methodPropertyInfo.property_name_info = MixingResourceCHS.labwareText.ToString(); } if (methodMixing.positionValue == null || methodMixing.positionValue == "") { methodPropertyInfo.property_name_info = MixingResourceCHS.positionText.ToString(); } if (methodMixing.armValue == null || methodMixing.armValue == "") { methodPropertyInfo.property_name_info = MixingResourceCHS.armText.ToString(); } if (methodMixing.wellarray == null || methodMixing.wellarray == "") { methodPropertyInfo.property_name_info = MixingResourceCHS.labwareText.ToString(); } if (methodMixing.mixcount != 0 || methodMixing.mixcount != 0) { if (methodMixing.mixvolume == 0 || methodMixing.mixvolume == 0) { methodPropertyInfo.property_name_info = MixingResourceCHS.mixvolume.ToString(); } } if (methodMixing.liquididValue == null || methodMixing.liquididValue == "") { methodPropertyInfo.property_name_info = MixingResourceCHS.liquididText.ToString(); } } else if (strCurrentCulture == "en-US") { methodPropertyInfo.property_tips_info = MixingResourceENU.tipsInfo.ToString(); if (methodMixing.labwareValue == null || methodMixing.labwaretipValue == "") { methodPropertyInfo.property_name_info = MixingResourceENU.labwareText.ToString(); } if (methodMixing.positionValue == null || methodMixing.positionValue == "") { methodPropertyInfo.property_name_info = MixingResourceENU.positionText.ToString(); } if (methodMixing.armValue == null || methodMixing.armValue == "") { methodPropertyInfo.property_name_info = MixingResourceENU.armText.ToString(); } if (methodMixing.wellarray == null || methodMixing.wellarray == "") { methodPropertyInfo.property_name_info = MixingResourceENU.labwareText.ToString(); } if (methodMixing.mixcount != 0 || methodMixing.mixcount != 0) { if (methodMixing.mixvolume == 0 || methodMixing.mixvolume == 0) { methodPropertyInfo.property_name_info = MixingResourceENU.mixvolume.ToString(); } } if (methodMixing.liquididValue == null || methodMixing.liquididValue == "") { methodPropertyInfo.property_name_info = MixingResourceENU.liquididText.ToString(); } } return methodPropertyInfo; } #endregion #region 执行吸液,返回结果字符串 /// /// 执行吸液,返回结果字符串 /// /// 吸液的参数对象 /// /// 结果实体对象 public HxResult ExecuteMix(MixMParam mixMParam, bool isSimulator = false) { HxResult ret = new HxResult(); if (!isSimulator) { ret = MethodAction.Instance.Mix(mixMParam); } else { CommonBll.DoSimulateDelay(); ret.Result = ResultType.Success; } return ret; } public HxResult ExecuteMix(MixMParamSH mixMParam, bool isSimulator = false) { HxResult ret = new HxResult(); if (!isSimulator) { ret = MethodAction.Instance.Mix(mixMParam); } else { CommonBll.DoSimulateDelay(); ret.Result = ResultType.Success; } return ret; } #endregion } }