using DataRWDAL.Base; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using XImagingXhandler.XDAL; using DataRWDAL; namespace XCore { /// /// 液体精度校准逻辑处理类 /// public class LiquidAccuracyBll { #region 从数据库获取液体参数校准的数据 /// /// 从数据库获取液体参数校准的数据 /// /// 液体范围Id /// 臂Id /// 液体校准数据实体集合 public ObservableCollection GetLiquidAccuracyFromdb(int liquidRangeId,int deviceArmId,string liquidTypeId) { return LiquidAccuracyDB.GetLiquidAccuracyFromdb(liquidRangeId,deviceArmId, liquidTypeId); } #endregion #region 从数据库获取液体参数校准的数据根据当前请求的体积 /// /// 从数据库获取液体参数校准的数据根据当前请求的体积 /// /// 液体范围Id /// 臂Id /// 目标体积 /// 符合条件的液体校准参数数据,最多只有两条 public LiquidAccuracy GetLiquidAccuracyFromdb(int liquidRangeId,int deviceArmId, double targetVolume,string liquidTypeid) { List result = null; LiquidAccuracy liquidAccuracy = new LiquidAccuracy(); result= LiquidAccuracyDB.GetLiquidAccuracyFromdb(liquidRangeId,deviceArmId, targetVolume, liquidTypeid); //取出两个当前目标体积的区间数据 //计算K,b值 double b = 0.0d; double k = 1.0d; if (result.Count ==2) { k = (result[0].liquid_Real_volume - result[1].liquid_Real_volume) / (result[0].liquid_target_volume - result[1].liquid_target_volume); b = result[0].liquid_Real_volume - k * result[0].liquid_target_volume; } liquidAccuracy.liquid_target_volume = targetVolume; liquidAccuracy.liquid_accuracy_k = k; liquidAccuracy.liquid_accuracy_b= b; return liquidAccuracy; } #endregion #region 计算枪头的吸液体积 public double CalculateAspirateParamVolume(double targetVolume,LiquidAccuracy liquidAccuracy) { double dResult = 0.0d; dResult = (targetVolume - liquidAccuracy.liquid_accuracy_b) / liquidAccuracy.liquid_accuracy_k; return dResult; } #endregion #region 添加一条新的液体校准参数数据——通过液体校准参数数据 /// /// 添加一条新的液体校准参数数据——通过液体校准参数数据 /// /// 液体校准参数实体 /// 1:添加成功;其他:不成功 public int AddLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy,out string id) { return LiquidAccuracyDB.AddLiquidAccuracyIntodb(liquidAccuracy,out id); } #endregion #region 修改一条新的液体校准参数数据——通过液体校准参数数据 /// /// 修改一条新的液体校准参数数据——通过液体校准参数数据 /// /// 液体校准参数实体 /// 1:添加成功;其他:不成功 public int UpdateLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy) { return LiquidAccuracyDB.UpdateLiquidAccuracyIntodb(liquidAccuracy); } #endregion #region 删除一条新的液体校准参数数据——通过液体校准参数数据 /// /// 删除一条新的液体校准参数数据——通过液体校准参数数据 /// /// 液体校准参数实体对象 /// public int DeleteLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy) { return LiquidAccuracyDB.DeleteLiquidAccuracyIntodb(liquidAccuracy); } #endregion } }