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<DropdownName> list = new List<DropdownName>();
|
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 检查所有属性设置是否满足要求
|
/// <summary>
|
/// 检查所有属性设置是否满足要求
|
/// </summary>
|
/// <param name="methodAspirate">混合属性对象</param>
|
/// <returns>检查所有属性设置是否满足要求</returns>
|
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 执行吸液,返回结果字符串
|
/// <summary>
|
/// 执行吸液,返回结果字符串
|
/// </summary>
|
/// <param name="labwareNode">吸液的参数对象</param>
|
/// <param name="isSimulator"></param>
|
/// <returns>结果实体对象</returns>
|
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
|
}
|
}
|