using SHJX.Service.Control.Common.Assets; namespace SHJX.Service.Control.LiquidHandler.Handler.WashLiquidHandler { public class Titration2PotassiumPermanganateWashLiquidHandler : IWashLiquid { public bool Execute() { LiquidVolume liquidVolume = DataManagerInstance.GetLiquidVolume(EquipmentNames.Titration2PotassiumPermanganate); if (liquidVolume is null) { throw new ArgumentException($"{EquipmentNames.Titration2PotassiumPermanganate}查询Volume为空"); } if (!liquidVolume.Enable) { return true; } LiquidAmount liquidAmount = DataManagerInstance.GetLiquidAmount(EquipmentNames.Titration2PotassiumPermanganate); if (liquidAmount is null) { throw new ArgumentException($"{EquipmentNames.Titration2PotassiumPermanganate}查询Amount为空"); } bool writeResponse = true; double count = Math.Floor(liquidVolume.ClearVolume / liquidAmount.Capacity); double residue = liquidVolume.ClearVolume % liquidAmount.Capacity; int distance; for (int i = 0; i < count; i++) { distance = Convert.ToInt32(Math.Round(liquidAmount.Capacity / liquidAmount.Amount * liquidAmount.ConvertRatio)); writeResponse = writeResponse && LiquidPipeSwitch.StartNew.SetLiquidName(EquipmentNames.Titration2PotassiumPermanganate).CheckWhetherArriveEndPoint(LiquidSwitchPattern.Out).Execute(distance); } if (residue > 0) { distance = Convert.ToInt32(Math.Round(residue / liquidAmount.Amount * liquidAmount.ConvertRatio)); writeResponse = writeResponse && LiquidPipeSwitch.StartNew.SetLiquidName(EquipmentNames.Titration2PotassiumPermanganate).CheckWhetherArriveEndPoint(LiquidSwitchPattern.Out).Execute(distance); } return writeResponse; } } }