using DataEntity.Share;
using DataRWDAL;
using DataRWDalDrive.DB;
using HandyControl.Data;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using XCommon.Log;
using XCommon.Tip;
using XCore;
using XHandler.Class;
using XHandler.Class.DataEx;
using XHandler.Controls;
using XImagingXhandler.XDAL;
using XHandler.View.Liquids;
using DataEntity;
namespace XHandler.View.MethodProperty
{
///
/// DispenseProperty.xaml 的交互逻辑
///
public partial class DispenseProperty : System.Windows.Controls.UserControl, IMethodProperty,ILiquidObserver,ILatticeObserver,IDeviceArmObserver
{
public MethodDispense methodDispense { get; set; }
public MethodDispense currmethodDispense = null;
public MethodEx method = null;
#region 全局属性变量
string isrun = "";
string status = "";
string name = "";
string label = "";
string labwareText = "";
string labwareValue = "";
string positionText = "";
string positionValue = "";
string armText = "";
string armValue = "";
public double wellVolume = 0.0d;
private int[] channels = Shared.ChannelsId;
string wellarray = "";
bool isNull = false;
bool enableSingleWellvolume = false;
List singlewellvolume = null;
string liquididText = "";
string liquididValue = "";
string liquidrangeidText = "";
string liquidrangeidValue = "";
string liquidpidText = "";
string liquidpidValue = "";
bool bMix = false;
bool bMultiMix = false;
double mixvolume = 0.0d;
int mixcount = 0;
string mixAspiratePositionText = "";
int mixAspiratePositionValue = 0;
double mixAspirateDistance = 0.0d;
double mixAspirateSpeed = 0.0d;
string mixDispensePositionText = "";
int mixDispensePositionValue = 0;
double mixDispenseDistance = 0.0d;
double mixDispenseSpeed = 0.0d;
bool enableLiquidSensor = false;
int liquidSensorCount = 0;
double liquidSensorDistance = 0.0d;
double liquidSensorEndDistance = 0.0d;
double liquidSensorSpeed = 10d;
double liquidSensorRadio = 10d;
string liquidSensorDisIdText = "";
double liquidSensorDisIdValue = 0.0d;
bool enableLiquidFollow = false;
int liquidFollowType = 0;
string liquidFollowTypeName = "";
double liquidFollowSpeed = 0.0d;
double liquidFollowDistance = 0.0d;
double liquidFollowArea = 0.0d;
bool enableMixFollow = false;
bool enableSensorBlock = false;
//double liquidSensorBlockDistance = 0.0d;
//string liquidSensorBlockDisIdText = "";
//double liquidSensorBlockDisIdValue = 0.0d;
string dispenseBlockDisIdText = "";
int dispenseBlockDisIdValue = 0;
int mark = 0;
#endregion
AspirateBll aspirateBll = new AspirateBll();
private Labware selectedLabware = null;
int curArmSelectedIndex = -1;
int curLiquidTypeSelectedIndex = -1;
int curLiquidRangeSelectedIndex = -1;
int curLiquidSelectedIndex = -1;
int curMixAspirateSelectIndex = -1;
int curMixDispenseSelectIndex = -1;
public DispenseProperty()
{
InitializeComponent();
}
bool isLiquidUpdate = false;
///
/// 液体参数变更后,更新节点
///
/// 液体参数管理对象
public void ReceiveAndUpdate(LiquidManagement liquidManagement)
{
isLiquidUpdate = true;
ObservableCollection liquidTypeList = DataModule.getInstance().GetLiquidTypes();
cbLiquidType.ItemsSource = liquidTypeList;
cbLiquidType.SelectedIndex = -1;
cbLiquidType.SelectedValue = methodDispense.liquididValue;
ObservableCollection liquidRangeList = DataModule.getInstance().GetLiquidRanges();
cbLiquidRange.ItemsSource = liquidRangeList.OrderBy(m => Convert.ToInt32(m.liquid_range_id));
cbLiquidRange.SelectedIndex = -1;
cbLiquidRange.SelectedValue = methodDispense.liquidrangeidValue;
if (methodDispense.liquidpidValue == "")
{
cbLiquid.SelectedIndex = 0;
}
else
{
cbLiquid.SelectedValue = methodDispense.liquidpidValue;
}
}
///
/// 实验设计台面耗材位置变更后,更新节点
///
///
public void ReceiveAndUpdate(TestDesign testDesign)
{
if (testDesign.srcCanvas != null && testDesign.targetCanvas != null)
{
//判断当前的台面选择是不是来源位置上的,如果是就更新,不是就不更新
if (comboboxTablePos.SelectedItem.ToString() == testDesign.srcCanvas.Name)
{
SetTableName(testDesign.targetCanvas.Name, (Labware)(((ControlLabware)testDesign.targetCanvas.Children[testDesign.targetCanvas.Children.Count - 1]).DataContext));
}
else
{
}
}
}
///
/// 通道设置变更后,更新节点
///
///
public void ReceiveAndUpdate()
{
// 获取当前设备臂信息
List deviceArmList = DeviceArmDB.GetDeviceArmFromdb(Shared.SoftwareInformation.software_information_id);
Shared.DeviceArmList = deviceArmList;
DeviceArm deviceArm = Shared.DeviceArmList.SingleOrDefault(x => x.software_information_id.Equals(Shared.SoftwareInformation.software_information_id) && x.device_arm_id.Equals((cbArm.SelectedItem as DeviceArm).device_arm_id) && x.arm_type.Equals(1));
tipsChannel.TotalChannels = deviceArm.channels;
tipsChannel.SetTotalChannelCount(deviceArm.channels);
if (deviceArm.device_arm_property == "")
{
tipsChannel.SelectedChannels = new List { };
tipsChannel.SetSelectedChannels();
//Shared.ChannelsId = new int[];
return;
}
string[] strChannels = deviceArm.device_arm_property.Trim().Split(',');
int[] iChannels = new int[strChannels.Length];
for (int j = 0; j < strChannels.Length; j++)
{
iChannels[j] = Convert.ToInt32(strChannels[j]);
}
if (iChannels.Length > 0)
{
tipsChannel.SelectedChannels = iChannels.ToList();
tipsChannel.SetSelectedChannels();
}
if (methodDispense != null)
{
methodDispense.channels = iChannels;
}
}
public DispenseProperty(MethodEx method)
{
mark = 0;
InitializeComponent();
curArmSelectedIndex = 0;
curLiquidTypeSelectedIndex = 0;
curLiquidRangeSelectedIndex = 0;
curLiquidSelectedIndex = 0;
curMixAspirateSelectIndex = 0;
curMixDispenseSelectIndex = 0;
List armList = DataModule.getInstance().GetDeviceArm();
cbArm.ItemsSource = armList;
if (armList.Count == 2) //只有一个臂的情况下默认选中该臂
curArmSelectedIndex = 1;
else
curArmSelectedIndex = 0;
ObservableCollection liquidTypeList = DataModule.getInstance().GetLiquidTypes();
cbLiquidType.ItemsSource = liquidTypeList;
ObservableCollection liquidRangeList = DataModule.getInstance().GetLiquidRanges();
cbLiquidRange.ItemsSource = liquidRangeList.OrderBy(m => Convert.ToInt32(m.liquid_range_id));
ObservableCollection liquidList = new ObservableCollection();
Liquid liquid = new Liquid();
liquid.liquid_name = Properties.Resources.strPleaseSelect;
liquidList.Add(liquid);
cbLiquid.ItemsSource = liquidList;
if (Shared.ChannelCount > 1)
{
tipsChannel.CanEdit = true;
if (Shared.ChannelCount.Equals(96))
{
tipsChannel.Visibility = Visibility.Collapsed;
}
}
if (Shared.ChannelCount.Equals(96))
{
tbxWellPositionTips.IsEnabled = false;
wellPlate.IsEnabled = false;
}
List list = new List();
List lattices = DataModule.getInstance().GetLattices();
TabletopTemplate tabletopTemplate = TabletopTemplateDB.GetCurrentAppTabletopTemplateCollectionFromdb(); //增加台面模板判断
if (tabletopTemplate == null)
{
for (int i = 0; i < Shared.SoftwareInformation.columns; i++)
{
for (int j = 0; j < Shared.SoftwareInformation.rows; j++)
{
int tmp = i * Shared.SoftwareInformation.rows + j;
Lattice latt = lattices[tmp];
if (latt.is_trash == 1)
continue;
list.Add(latt.lattice_num);
}
}
}
else
{
foreach (Lattice lattice in lattices)
{
if (lattice.is_trash == 1)
continue;
list.Add(lattice.lattice_num);
}
}
//list.Insert(0, Properties.Resources.strPleaseSelect);
comboboxTablePos.ItemsSource = list;
comboboxTablePos.SelectedIndex = 0;
gdLiquidFollow.RowDefinitions[1].Height = new GridLength(0);
gdLiquidFollow.RowDefinitions[2].Height = new GridLength(0);
gdLiquidFollow.RowDefinitions[3].Height = new GridLength(0);
gdLiquidFollow.RowDefinitions[4].Height = new GridLength(0);
List mixPositionList = new List();
mixPositionList.Add(MixPositionEnum.Liquid.ToString());
mixPositionList.Add(MixPositionEnum.Top.ToString());
mixPositionList.Add(MixPositionEnum.Bottom.ToString());
cbMixAspiratePosition.ItemsSource = mixPositionList;
cbMixDispensePosition.ItemsSource = mixPositionList;
//DeviceArm arm = cbArm.SelectedItem as DeviceArm;
//tbxHeadType.Text = arm.head_type.ToString();
ObservableCollection listProcess = DataModule.getInstance().GetUndetectProcessList();
cbxLiquidSensorDisId.ItemsSource = listProcess;
ObservableCollection listDispenseBlockProcess = DataModule.getInstance().GetDispenseBlockDealTypeList();
cbxDispenseBlockDealType.ItemsSource = listDispenseBlockProcess;
ObservableCollection listLiquidFollowType = DataModule.getInstance().GetLiquidFollowTypeList();
cbxLiquidFollowType.ItemsSource = listLiquidFollowType;
methodDispense = new MethodDispense();
methodDispense.name = method.method_name;
methodDispense.label = method.method_name;
tbxCommandName.Text = method.method_name;
methodDispense.status = (method.isEnabled == true ? "enable" : "disable");
methodDispense.wellarray = "";
methodDispense.strIndex = method.strIndex;
this.method = method;
if (method.tag != null)
{
methodDispense = (MethodDispense)method.tag;
currmethodDispense = methodDispense;
isrun = methodDispense.isrun;
status = methodDispense.status;
name = methodDispense.name;
label = methodDispense.label;
labwareText = methodDispense.labwareText;
labwareValue = methodDispense.labwareValue;
positionText = methodDispense.positionText;
positionValue = methodDispense.positionValue;
armText = methodDispense.armText;
armValue = methodDispense.armValue;
channels = methodDispense.channels;
wellarray = methodDispense.wellarray;
wellVolume = methodDispense.wellvolume;
enableSingleWellvolume = methodDispense.enableSingleWellvolume;
singlewellvolume = methodDispense.singlewellvolume;
isNull = methodDispense.isNull;
liquididText = methodDispense.liquididText;
liquididValue = methodDispense.liquididValue;
liquidrangeidText = methodDispense.liquidrangeidText;
liquidrangeidValue = methodDispense.liquidrangeidValue;
liquidpidText = methodDispense.liquidpidText;
liquidpidValue = methodDispense.liquidpidValue;
bMix = methodDispense.bMix;
bMultiMix=methodDispense.bMultiMix;
mixvolume = methodDispense.mixvolume;
mixcount = methodDispense.mixcount;
mixAspiratePositionText = methodDispense.mixAspiratePositionText;
mixAspiratePositionValue = methodDispense.mixAspiratePositionValue;
mixAspirateDistance = methodDispense.mixAspirateDistance;
mixAspirateSpeed = methodDispense.mixAspirateSpeed;
mixDispensePositionText = methodDispense.mixDispensePositionText;
mixDispensePositionValue = methodDispense.mixDispensePositionValue;
mixDispenseDistance = methodDispense.mixDispenseDistance;
mixDispenseSpeed = methodDispense.mixDispenseSpeed;
enableLiquidSensor = methodDispense.enableLiquidSensor;
liquidSensorCount = methodDispense.liquidSensorCount;
liquidSensorDistance = methodDispense.liquidSensorDistance;
liquidSensorEndDistance = methodDispense.liquidSensorEndDistance;
liquidSensorSpeed = methodDispense.liquidSensorSpeed;
liquidSensorRadio = methodDispense.liquidSensorRadio;
liquidSensorDisIdText = methodDispense.liquidSensorDisIdText;
liquidSensorDisIdValue = methodDispense.liquidSensorDisIdValue;
enableLiquidFollow = methodDispense.enableLiquidFollow;
liquidFollowType = methodDispense.liquidFollowType;
liquidFollowTypeName = methodDispense.liquidFollowTypeName;
liquidFollowSpeed = methodDispense.liquidFollowSpeed;
liquidFollowDistance = methodDispense.liquidFollowDistance;
liquidFollowArea = methodDispense.liquidFollowArea;
enableMixFollow = methodDispense.enableMixFollow;
enableSensorBlock = methodDispense.enableSensorBlock;
//liquidSensorBlockDistance = methodDispense.liquidSensorBlockDistance;
dispenseBlockDisIdText = methodDispense.dispenseBlockDisIdText;
dispenseBlockDisIdValue = methodDispense.dispenseBlockDisIdValue;
}
this.DataContext = methodDispense;
LiquidManagement.loadLiquidsEvent += BindLiquids;
//if (Shared.ChannelCount > 1)
//{
// tipsChannel.CanEdit = true;
//}
}
private void welPlate_SelectedEvent(object sender, CustomRoutedEventArgs e)
{
if (methodDispense != null)
{
string str = (string)e.param;
methodDispense.wellarray = str;
}
}
private void btnSingleVolumnSetting_Click(object sender, RoutedEventArgs e)
{
if (EventResponseController.Instance.CanExecute() == false)
return;
Window wnd = System.Windows.Application.Current.MainWindow;
Grid grid = Utilities.FindVisualChild(wnd);
VolumnSettingPerWell vspw = new VolumnSettingPerWell();
vspw.closeEvent += Vspw_closeEvent;
vspw.currentChannels = tipsChannel.SelectedChannels;
vspw.dispenseProperty = this;
grid.Children.Add(vspw);
}
private void Vspw_closeEvent(object sender, EventArgs e)
{
Window wnd = System.Windows.Application.Current.MainWindow;
Grid grid = Utilities.FindVisualChild(wnd);
UIElement element = sender as UIElement;
grid.Children.Remove(element);
}
public void SetTableName(string tableName, Labware lb)
{
if (lb == null)
return;
if (string.IsNullOrEmpty(lb.labware_id))
return;
if (string.IsNullOrEmpty(methodDispense.armValue))
{
System.Windows.MessageBox.Show(Properties.Resources.msgPlsSelectArm, "Tips");
return;
}
selectedLabware = lb;
wellPlate.Rows = lb.number_row;
wellPlate.Columns = lb.number_column;
wellPlate.labwareWellInfoList = lb.labwareWellInfoList;
wellPlate.LabwareRealWidth = lb.labware_length;
wellPlate.LabwareRealLength = lb.labware_width;
wellPlate.DataContext = lb;
List latticeList = DataRWDAL.LatticeDB.GetLatticeDataFromdb(Shared.SoftwareInformation.software_device_number, Convert.ToInt32(methodDispense.armValue));
Lattice lattice = latticeList.Find(s => s.lattice_num == tableName);
if (lattice == null)
{
LoggerHelper.InfoLog("Error: Can't find lattice with lattice_num=" + tableName);
return;
}
comboboxTablePos.SelectedItem = tableName;
if (Shared.ChannelCount.Equals(96))
{
if (!lb.labware_type_id.Equals("3"))
{
if (!lb.number_row.Equals(8) || !lb.number_column.Equals(12))
{
ShowTip.ShowNotice("请选择96孔板的台面", InfoType.Warning);
tbxWellPositionTips.Text = "";
wellPlate.Selection = "";
return;
}
}
else
{
if (!lb.number_row.Equals(1) || !lb.number_column.Equals(1))
{
ShowTip.ShowNotice("请选择单试剂槽的台面", InfoType.Warning);
tbxWellPositionTips.Text = "";
wellPlate.Selection = "";
return;
}
}
}
if (lb.labware_tubeshelf_type.Equals(1))//异形管架耗材
{
tbxWellPositionTips.Text = "";
wellPlate.Selection = "";
}
if (methodDispense != null)
{
methodDispense.positionText = tableName;
methodDispense.positionValue = lattice.lattice_id;
methodDispense.labwareText = lb.labware_name;
methodDispense.labwareValue = lb.labware_id;
if (Shared.ChannelCount.Equals(96))
{
if (!lb.labware_type_id.Equals("3"))
{
wellarray = "A1,B1,C1,D1,E1,F1,G1,H1,A2,B2,C2,D2,E2,F2,G2,H2,A3,B3,C3,D3,E3,F3,G3,H3,A4,B4,C4,D4,E4,F4,G4,H4,A5,B5,C5,D5,E5,F5,G5,H5,A6,B6,C6,D6,E6,F6,G6,H6,A7,B7,C7,D7,E7,F7,G7,H7,A8,B8,C8,D8,E8,F8,G8,H8,A9,B9,C9,D9,E9,F9,G9,H9,A10,B10,C10,D10,E10,F10,G10,H10,A11,B11,C11,D11,E11,F11,G11,H11,A12,B12,C12,D12,E12,F12,G12,H12";
}
else
{
wellarray = "A1";
}
tbxWellPositionTips.Text = wellarray;
wellPlate.Selection = wellarray;
}
}
}
public void UserControl_Loaded(object sender, RoutedEventArgs e)
{
mark += 1;
try
{
if (mark > 1)
{
return;
}
if (currmethodDispense != null)
{
if (!string.IsNullOrEmpty(armText))
{
tbxCommandName.Text = name;
cbArm.SelectedValue = armValue;
DeviceArm arm = cbArm.SelectedItem as DeviceArm;
tbxHeadType.Text = arm.head_type.ToString();
//根据板位上的耗材类型,显示耗材孔位示意图
Labware labwareA = DataRWDAL.LabwareDB.GetLabware(methodDispense.labwareValue);
wellPlate.Rows = labwareA.number_row;
wellPlate.Columns = labwareA.number_column;
if (labwareA.labware_type_id.Equals("4"))
{
labwareA.labwareWellInfoList = DataRWDAL.LabwareDB.GetSpecialLabwareWellInfo(labwareA.labware_id);
wellPlate.labwareWellInfoList = labwareA.labwareWellInfoList;
wellPlate.LabwareRealWidth = labwareA.labware_length;
wellPlate.LabwareRealLength = labwareA.labware_width;
}
if (Shared.ChannelCount.Equals(96))
{
}
else
{
tipsChannel.SelectedChannels = channels.ToList();
tipsChannel.SetSelectedChannels();
tipsChannel_SelectedChangedEvent(null, null);
}
comboboxTablePos.SelectedItem = positionText;
tbxWellPositionTips.Text = wellarray;
wellPlate.Selection = wellarray;
//wellPlate.SetSelection(wellarray);
//tbxWellvolume.Text = wellvolume.ToString();
tbVolume.Text = wellVolume.ToString();
if (isNull)
{
cbxRunout.IsChecked = true;
}
else
{
cbxRunout.IsChecked = false;
}
if (enableSingleWellvolume)
{
cbSingleVolumn.IsChecked = true;
}
else
{
cbSingleVolumn.IsChecked = false;
}
cbLiquidType.SelectedValue = liquididValue;
cbLiquidRange.SelectedValue = liquidrangeidValue;
cbLiquid.SelectedValue = liquidpidValue;
if (bMix)
{
checkboxMix.IsChecked = true;
tbxMixVolume.Text = mixvolume.ToString();
tbxMixCount.Text = mixcount.ToString();
cbMixAspiratePosition.SelectedIndex = mixAspiratePositionValue;
tbxMixAspirateDistance.Text = mixAspirateDistance.ToString();
tbxMixAspirateSpeed.Text = mixAspirateSpeed.ToString();
cbMixDispensePosition.SelectedIndex = mixDispensePositionValue;
tbxMixDispenseDistance.Text = mixDispenseDistance.ToString();
tbxMixDispenseSpeed.Text = mixDispenseSpeed.ToString();
}
else
{
checkboxMix.IsChecked = false;
}
if (enableLiquidSensor)
{
checkboxLiquidDetect.IsChecked = true;
txtNameLiquidSensorCount.Text = liquidSensorCount.ToString();
txtLiquidSensorDistance.Text = liquidSensorDistance.ToString();
txtLiquidSensorEndDistance.Text = liquidSensorEndDistance.ToString();
txtLiquidSensorSpeed.Text = liquidSensorSpeed.ToString();
txtLiquidSensorRadio.Text = liquidSensorRadio.ToString();
cbxLiquidSensorDisId.SelectedIndex = Convert.ToInt32(liquidSensorDisIdValue);
gdLiquidSensor.IsEnabled = true;
if (enableLiquidFollow)
{
checkboxLiquidFollow.IsChecked = true;
cbxLiquidFollowType.SelectedIndex = liquidFollowType;
txtLiquidFollowSpeed.Text = liquidFollowSpeed.ToString();
txtLiquidFollowDistance.Text = liquidFollowDistance.ToString();
if (liquidFollowType == 1)
{
bdrFollowOneType.Visibility = Visibility.Visible;
tbkFollowTwoTypeLabel.Visibility = Visibility.Collapsed;
txtLiquidFollowArea.Visibility = Visibility.Collapsed;
tbkFollowTwoTypeUnit.Visibility = Visibility.Collapsed;
if (methodDispense != null)
{
methodDispense.liquidFollowType = cbxLiquidFollowType.SelectedIndex;
methodDispense.liquidFollowTypeName = cbxLiquidFollowType.Text;
}
}
else if (liquidFollowType == 2)
{
bdrFollowOneType.Visibility = Visibility.Collapsed;
tbkFollowTwoTypeLabel.Visibility = Visibility.Visible;
txtLiquidFollowArea.Visibility = Visibility.Visible;
tbkFollowTwoTypeUnit.Visibility = Visibility.Visible;
if (methodDispense != null)
{
methodDispense.liquidFollowType = cbxLiquidFollowType.SelectedIndex;
methodDispense.liquidFollowTypeName = cbxLiquidFollowType.Text;
}
txtLiquidFollowArea.Text = liquidFollowArea.ToString();
}
if (enableMixFollow)
{
rdMixFollow.IsChecked = true;
}
else
{
rdMixNotFollow.IsChecked = true;
}
}
else
{
checkboxLiquidFollow.IsChecked = false;
cbxLiquidFollowType.SelectedIndex = liquidFollowType;
txtLiquidFollowSpeed.Text = liquidFollowSpeed.ToString();
txtLiquidFollowDistance.Text = liquidFollowDistance.ToString();
txtLiquidFollowArea.Text = liquidFollowArea.ToString();
//gdLiquidFollow.IsEnabled = false;
if (enableMixFollow)
{
rdMixFollow.IsChecked = true;
}
else
{
rdMixNotFollow.IsChecked = true;
}
}
}
else
{
checkboxLiquidDetect.IsChecked = false;
gdLiquidSensor.IsEnabled = false;
checkboxLiquidFollow.IsEnabled = false;
cbxLiquidSensorDisId.SelectedIndex = 0;
cbxLiquidSensorBlockDisId.SelectedIndex = 0;
cbxDispenseBlockDealType.SelectedIndex = 0;
//gdLiquidFollow.IsEnabled = false;
cbxLiquidFollowType.SelectedIndex = liquidFollowType;
txtLiquidFollowSpeed.Text = liquidFollowSpeed.ToString();
txtLiquidFollowDistance.Text = liquidFollowDistance.ToString();
txtLiquidFollowArea.Text = liquidFollowArea.ToString();
if (enableMixFollow)
{
rdMixFollow.IsChecked = true;
}
else
{
rdMixNotFollow.IsChecked = true;
}
}
if (enableSensorBlock)
{
checkboxBlockDetect.IsChecked = true;
cbxDispenseBlockDealType.SelectedIndex = Convert.ToInt32(dispenseBlockDisIdValue);
gdBlockSensor.IsEnabled = true;
}
else
{
checkboxBlockDetect.IsChecked = false;
gdBlockSensor.IsEnabled = false;
}
if (currmethodDispense != null)
{
methodDispense = currmethodDispense;
}
}
}
else
{
cbArm.SelectedIndex = curArmSelectedIndex;
if (cbArm.Items.Count > 1)
{
cbArm.SelectedIndex = 1;
}
DeviceArm arm = cbArm.SelectedItem as DeviceArm;
cbLiquidType.SelectedIndex = curLiquidTypeSelectedIndex;
//cbLiquidRange.SelectedIndex = curLiquidRangeSelectedIndex;
cbMixAspiratePosition.SelectedIndex = curMixAspirateSelectIndex;
cbMixDispensePosition.SelectedIndex = curMixDispenseSelectIndex;
tbxHeadType.Text = arm.head_type.ToString();
//methodDispense = currmethodDispense;
if (currmethodDispense != null)
{
methodDispense = currmethodDispense;
}
cbxLiquidSensorDisId.SelectedIndex = 0;
cbxLiquidSensorBlockDisId.SelectedIndex = 0;
cbxDispenseBlockDealType.SelectedIndex = 0;
}
ReceiveAndUpdate();
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
//cbArm.SelectedIndex = curArmSelectedIndex;
//cbLiquidType.SelectedIndex = curLiquidTypeSelectedIndex;
////cbLiquidRange.SelectedIndex = curLiquidRangeSelectedIndex;
//cbMixAspiratePosition.SelectedIndex = curMixAspirateSelectIndex;
//cbMixDispensePosition.SelectedIndex = curMixDispenseSelectIndex;
}
private void cbLiquidType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbLiquidType.SelectedIndex < 0)
return;
if (cbLiquidType.SelectedIndex == 0)
{
cbLiquidRange.SelectedIndex = 0;
cbLiquid.SelectedIndex = 0;
}
curLiquidTypeSelectedIndex = cbLiquidType.SelectedIndex;
if (cbLiquidType.SelectedIndex != 0)
{
if (methodDispense != null)
{
methodDispense.liquididText = ((LiquidType)cbLiquidType.SelectedItem).liquid_type_name.ToString();
methodDispense.liquididValue = ((LiquidType)cbLiquidType.SelectedItem).liquid_type_id.ToString();
}
}
}
private void cbLiquidRange_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbLiquidRange.SelectedIndex < 0)
return;
curLiquidRangeSelectedIndex = cbLiquidRange.SelectedIndex;
string typeID = cbLiquidType.SelectedValue as string;
string rangeID = cbLiquidRange.SelectedValue as string;
string armID = cbArm.SelectedValue.ToString();
ObservableCollection liquidList = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(typeID, rangeID, armID);
Liquid liquid = new Liquid();
liquid.liquid_name = Properties.Resources.strPleaseSelect;
liquidList.Insert(0, liquid);
if (cbLiquidRange.SelectedIndex != 0)
{
if (methodDispense != null)
{
methodDispense.liquidrangeidText = ((LiquidRange)cbLiquidRange.SelectedItem).liquid_range_name.ToString();
methodDispense.liquidrangeidValue = ((LiquidRange)cbLiquidRange.SelectedItem).liquid_range_id.ToString();
}
}
cbLiquid.ItemsSource = liquidList;
cbLiquid.SelectedIndex = 0;
}
private void cbArm_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
DeviceArm arm = cbArm.SelectedItem as DeviceArm;
methodDispense.armText = arm.device_arm_name;
methodDispense.armValue = arm.device_arm_id.ToString();
methodDispense.headType = arm.head_type;
if (arm.arm_type.Equals(0))
{
gdContent.RowDefinitions[3].Height = new GridLength(0);
gdContent.RowDefinitions[4].Height = new GridLength(0);
return;
}
else
{
gdContent.RowDefinitions[3].Height = new GridLength(40);
gdContent.RowDefinitions[4].Height = new GridLength(80);
}
if (Shared.ChannelCount.Equals(96))
{
curArmSelectedIndex = cbArm.SelectedIndex;
methodDispense.channels = new int[] {1,2,3,4,5,6,7,8,
9,10,11,12,13,14,15,16,
17,18,19,20,21,22,23,24,
25,26,27,28,29,30,31,32,
33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,
49,50,51,52,53,54,55,56,
57,58,59,60,61,62,63,64,
65,66,67,68,69,70,71,72,
73,74,75,76,77,78,79,80,
81,82,83,84,85,86,87,88,
89,90,91,92,93,94,95,96};
}
else
{
// 臂未选择
if (cbArm.SelectedIndex < 0 || cbArm.SelectedIndex == 0)
{
tipsChannel.SetTotalChannelCount(0);
tipsChannel.SelectedChannels = new List();
tipsChannel.SetSelectedChannels();
tipsChannel_SelectedChangedEvent(null, null);
return;
}
curArmSelectedIndex = cbArm.SelectedIndex;
string armName = ((DeviceArm)cbArm.SelectedItem).device_arm_name.ToString();
methodDispense.channels = Shared.ChannelsId;
tipsChannel.SelectedChannels = Shared.ChannelsId.ToList();
tipsChannel.SetTotalChannelCount(Shared.ChannelCount);
tipsChannel.SetSelectedChannels();
tipsChannel_SelectedChangedEvent(null, null);
}
ReceiveAndUpdate();
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void cbLiquid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbLiquid.SelectedIndex < 1)
return;
curLiquidSelectedIndex = cbLiquid.SelectedIndex;
Liquid liquid = cbLiquid.SelectedItem as Liquid;
if (cbLiquid.SelectedIndex != 0)
{
if (methodDispense != null)
{
methodDispense.liquidpidText = liquid.liquid_name;
methodDispense.liquidpidValue = liquid.liquid_id;
}
}
}
private void cbMixAspiratePosition_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbMixAspiratePosition.SelectedIndex < 0)
return;
curMixAspirateSelectIndex = cbMixAspiratePosition.SelectedIndex;
MixPositionEnum position = (MixPositionEnum)Enum.Parse(typeof(MixPositionEnum), (string)cbMixAspiratePosition.SelectedItem);
if (methodDispense != null)
{
methodDispense.mixAspiratePositionValue = (int)position;
if ((int)position == 0)
{
methodDispense.mixAspiratePositionText = "Liquid";
}
else if ((int)position == 1)
{
methodDispense.mixAspiratePositionText = "Top";
}
else
{
methodDispense.mixAspiratePositionText = "Bottom";
}
}
}
private void cbMixDispensePosition_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbMixDispensePosition.SelectedIndex < 0)
return;
curMixDispenseSelectIndex = cbMixDispensePosition.SelectedIndex;
MixPositionEnum position = (MixPositionEnum)Enum.Parse(typeof(MixPositionEnum), (string)cbMixDispensePosition.SelectedItem);
if (methodDispense != null)
{
methodDispense.mixDispensePositionValue = (int)position;
if ((int)position == 0)
{
methodDispense.mixDispensePositionText = "Liquid";
}
else if ((int)position == 1)
{
methodDispense.mixDispensePositionText = "Top";
}
else
{
methodDispense.mixDispensePositionText = "Bottom";
}
}
}
private void tbxCommandLabel_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (string.IsNullOrEmpty(tbxCommandName.Text))
{
clError.Text = "命令标签不能为空";
return;
}
if (methodDispense != null)
{
methodDispense.label = tbxCommandLabel.Text;
methodDispense.name = tbxCommandName.Text.ToString();
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbxWellPositionTips_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.wellarray = tbxWellPositionTips.Text;
if (Shared.ChannelCount.Equals(96))
{
methodDispense.channels = new int[] {1,2,3,4,5,6,7,8,
9,10,11,12,13,14,15,16,
17,18,19,20,21,22,23,24,
25,26,27,28,29,30,31,32,
33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,
49,50,51,52,53,54,55,56,
57,58,59,60,61,62,63,64,
65,66,67,68,69,70,71,72,
73,74,75,76,77,78,79,80,
81,82,83,84,85,86,87,88,
89,90,91,92,93,94,95,96};
}
else
{
methodDispense.channels = tipsChannel.SelectedChannels.ToArray();
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void cbxRunout_Click(object sender, RoutedEventArgs e)
{
try
{
if (cbxRunout.IsChecked == true)
{
if (methodDispense != null)
{
methodDispense.isNull = true;
}
}
else
{
if (methodDispense != null)
{
methodDispense.isNull = false;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void cbSingleVolumn_Click(object sender, RoutedEventArgs e)
{
try
{
if (cbSingleVolumn.IsChecked == true)
{
btnSingleVolumnSetting.Foreground = new SolidColorBrush(Colors.Blue);
if (methodDispense != null)
{
methodDispense.enableSingleWellvolume = true;
}
}
else
{
btnSingleVolumnSetting.Foreground = new SolidColorBrush(Colors.Black);
if (methodDispense != null)
{
methodDispense.enableSingleWellvolume = false;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void checkboxMix_Click(object sender, RoutedEventArgs e)
{
try
{
if ((bool)checkboxMix.IsChecked)
{
if (methodDispense != null)
{
methodDispense.bMix = true;
methodDispense.mixcount = Convert.ToInt32(tbxMixCount.Text);
methodDispense.mixvolume = Convert.ToDouble(tbxMixVolume.Text);
methodDispense.mixAspiratePositionText = cbMixAspiratePosition.Text;
methodDispense.mixAspiratePositionValue = Convert.ToInt32(cbMixAspiratePosition.SelectedValue);
methodDispense.mixAspirateDistance = Convert.ToDouble(tbxMixAspirateDistance.Text);
methodDispense.mixAspirateSpeed = Convert.ToDouble(tbxMixAspirateSpeed.Text);
methodDispense.mixDispensePositionText = cbMixDispensePosition.Text;
methodDispense.mixDispensePositionValue = Convert.ToInt32(cbMixDispensePosition.SelectedValue);
methodDispense.mixDispenseDistance = Convert.ToDouble(tbxMixDispenseDistance.Text);
methodDispense.mixDispenseSpeed = Convert.ToDouble(tbxMixDispenseSpeed.Text);
}
}
else
{
if (methodDispense != null)
{
methodDispense.bMix = false;
methodDispense.mixcount = Convert.ToInt32(tbxMixCount.Text);
methodDispense.mixvolume = Convert.ToDouble(tbxMixVolume.Text);
methodDispense.mixAspiratePositionText = cbMixAspiratePosition.Text;
methodDispense.mixAspiratePositionValue = Convert.ToInt32(cbMixAspiratePosition.SelectedValue);
methodDispense.mixAspirateDistance = Convert.ToDouble(tbxMixAspirateDistance.Text);
methodDispense.mixAspirateSpeed = Convert.ToDouble(tbxMixAspirateSpeed.Text);
methodDispense.mixDispensePositionText = cbMixDispensePosition.Text;
methodDispense.mixDispensePositionValue = Convert.ToInt32(cbMixDispensePosition.SelectedValue);
methodDispense.mixDispenseDistance = Convert.ToDouble(tbxMixDispenseDistance.Text);
methodDispense.mixDispenseSpeed = Convert.ToDouble(tbxMixDispenseSpeed.Text);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbxMixVolume_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (Shared.SoftwareInformation.software_device_number != DeviceCategory.DeviceHXFX)
{
if (!Consumables.ConsumablesValidationRule.IsRange(tbxMixVolume.Text, 1.0, 1000.0, false, out string message))
{
tbxMixVolume.BorderBrush = Brushes.Red;
tbxMixVolume.BorderThickness = new Thickness(1);
}
else
{
tbxMixVolume.BorderBrush = Brushes.Black;
}
}
else
{
if (!Consumables.ConsumablesValidationRule.IsRange(tbxMixVolume.Text, 1.0, 50000.0, false, out string message))
{
tbxMixVolume.BorderBrush = Brushes.Red;
tbxMixVolume.BorderThickness = new Thickness(1);
}
else
{
tbxMixVolume.BorderBrush = Brushes.Black;
}
}
if (methodDispense != null)
{
methodDispense.mixvolume = Convert.ToDouble(tbxMixVolume.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbxMixCount_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (!string.IsNullOrEmpty(tbxMixCount.Text))
{
if (methodDispense != null)
{
methodDispense.mixcount = Convert.ToInt32(tbxMixCount.Text);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbxMixAspirateSpeed_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (!Regex.IsMatch(tbxMixAspirateSpeed.Text, "^\\+?(:?(:?\\d+\\.\\d+)|(:?\\d+))|(-?\\d+)(\\.\\d+)?$"))
{
tbxMixAspirateSpeed.BorderBrush = Brushes.Red;
}
if (!string.IsNullOrEmpty(tbxMixAspirateSpeed.Text))
{
if (methodDispense != null)
{
methodDispense.mixAspirateSpeed = Convert.ToDouble(tbxMixAspirateSpeed.Text);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbxMixAspirateDistance_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (!Regex.IsMatch(tbxMixAspirateDistance.Text, "^\\+?(:?(:?\\d+\\.\\d+)|(:?\\d+))|(-?\\d+)(\\.\\d+)?$"))
{
tbxMixAspirateDistance.BorderBrush = Brushes.Red;
}
if (!string.IsNullOrEmpty(tbxMixAspirateDistance.Text))
{
if (methodDispense != null)
{
methodDispense.mixAspirateDistance = Convert.ToDouble(tbxMixAspirateDistance.Text);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbxMixDispenseDistance_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (!Regex.IsMatch(tbxMixDispenseDistance.Text, "^\\+?(:?(:?\\d+\\.\\d+)|(:?\\d+))|(-?\\d+)(\\.\\d+)?$"))
{
tbxMixDispenseDistance.BorderBrush = Brushes.Red;
}
if (!string.IsNullOrEmpty(tbxMixDispenseDistance.Text))
{
if (methodDispense != null)
{
methodDispense.mixDispenseDistance = Convert.ToDouble(tbxMixDispenseDistance.Text);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbxMixDispenseSpeed_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (!Regex.IsMatch(tbxMixDispenseSpeed.Text, "^\\+?(:?(:?\\d+\\.\\d+)|(:?\\d+))|(-?\\d+)(\\.\\d+)?$"))
{
tbxMixDispenseSpeed.BorderBrush = Brushes.Red;
}
if (!string.IsNullOrEmpty(tbxMixDispenseSpeed.Text))
{
if (methodDispense != null)
{
methodDispense.mixDispenseSpeed = Convert.ToDouble(tbxMixDispenseSpeed.Text);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void checkboxLiquidDetect_Click(object sender, RoutedEventArgs e)
{
try
{
if ((bool)checkboxLiquidDetect.IsChecked)
{
checkboxLiquidFollow.IsEnabled = true;
if (methodDispense != null)
{
methodDispense.enableLiquidSensor = true;
methodDispense.liquidSensorCount = Convert.ToInt32(txtNameLiquidSensorCount.Text);
methodDispense.liquidSensorDistance = Convert.ToDouble(txtLiquidSensorDistance.Text);
methodDispense.liquidSensorEndDistance = Convert.ToDouble(txtLiquidSensorEndDistance.Text);
methodDispense.liquidSensorSpeed = Convert.ToDouble(txtLiquidSensorSpeed.Text);
methodDispense.liquidSensorRadio = Convert.ToDouble(txtLiquidSensorRadio.Text);
methodDispense.liquidSensorDisIdText = cbxLiquidSensorDisId.Text;
methodDispense.liquidSensorDisIdValue = Convert.ToDouble(cbxLiquidSensorDisId.SelectedIndex);
gdLiquidSensor.IsEnabled = true;
}
}
else
{
if (methodDispense != null)
{
methodDispense.enableLiquidSensor = false;
methodDispense.liquidSensorCount = Convert.ToInt32(txtNameLiquidSensorCount.Text);
methodDispense.liquidSensorDistance = Convert.ToDouble(txtLiquidSensorDistance.Text);
methodDispense.liquidSensorEndDistance = Convert.ToDouble(txtLiquidSensorEndDistance.Text);
methodDispense.liquidSensorSpeed = Convert.ToDouble(txtLiquidSensorSpeed.Text);
methodDispense.liquidSensorRadio = Convert.ToDouble(txtLiquidSensorRadio.Text);
methodDispense.liquidSensorDisIdText = cbxLiquidSensorDisId.Text;
methodDispense.liquidSensorDisIdValue = Convert.ToDouble(cbxLiquidSensorDisId.SelectedIndex);
gdLiquidSensor.IsEnabled = false;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void txtNameLiquidSensorCount_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (!Consumables.ConsumablesValidationRule.IsPositiveIntegerr(txtNameLiquidSensorCount.Text, out string message))
{
lscError.Text = message;
return;
}
else
{
lscError.Text = "";
}
if (methodDispense != null)
{
methodDispense.liquidSensorCount = Convert.ToInt32(txtNameLiquidSensorCount.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void txtLiquidSensorDistance_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (!Consumables.ConsumablesValidationRule.IsRange(txtLiquidSensorDistance.Text, 0.0, 100, false, out string message))
{
lsdError.Text = message;
return;
}
else
{
lsdError.Text = "";
}
if (methodDispense != null)
{
methodDispense.liquidSensorDistance = Convert.ToDouble(txtLiquidSensorDistance.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void cbxLiquidSensorDisId_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.liquidSensorDisIdText = ((string)cbxLiquidSensorDisId.SelectedItem).ToString();
methodDispense.liquidSensorDisIdValue = Convert.ToDouble(cbxLiquidSensorDisId.SelectedIndex);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void checkboxBlockDetect_Click(object sender, RoutedEventArgs e)
{
try
{
if ((bool)checkboxBlockDetect.IsChecked)
{
if (methodDispense != null)
{
methodDispense.enableSensorBlock = true;
methodDispense.dispenseBlockDisIdText = cbxDispenseBlockDealType.Text;
methodDispense.dispenseBlockDisIdValue = Convert.ToInt32(cbxDispenseBlockDealType.SelectedValue);
gdBlockSensor.IsEnabled = true;
}
}
else
{
if (methodDispense != null)
{
methodDispense.enableSensorBlock = false;
methodDispense.dispenseBlockDisIdText = cbxDispenseBlockDealType.Text;
methodDispense.dispenseBlockDisIdValue = Convert.ToInt32(cbxDispenseBlockDealType.SelectedValue);
gdBlockSensor.IsEnabled = false;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbxLiquidSensorBlockDistance_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (!Consumables.ConsumablesValidationRule.IsRange(tbxLiquidSensorBlockDistance.Text, 0.0, 100, false, out string message))
{
lsbdError.Text = message;
return;
}
else
{
lsbdError.Text = "";
}
if (methodDispense != null)
{
//methodDispense.liquidSensorBlockDistance = Convert.ToDouble(tbxLiquidSensorBlockDistance.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void cbxLiquidSensorBlockDisId_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
//methodDispense.liquidSensorBlockDisIdText = cbxLiquidSensorBlockDisId.Text;
//methodDispense.liquidSensorBlockDisIdValue = Convert.ToDouble(cbxLiquidSensorBlockDisId.SelectedValue);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void comboboxTablePos_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (comboboxTablePos.SelectedItem == null)
return;
string name = comboboxTablePos.SelectedItem as string;
if (selectedLabware == null)
{
if (methodDispense != null)
{
methodDispense.positionText = name;
List latticeList = DataRWDAL.LatticeDB.GetLatticeDataFromdb(Shared.SoftwareInformation.software_device_number, Convert.ToInt32(methodDispense.armValue));
Lattice lattice = latticeList.Find(s => s.lattice_num == name);
methodDispense.positionValue = lattice.lattice_id;
}
}
SetTableName(name, selectedLabware);
#region 验证台面耗材类型
if (TestDesign.SelectLabwares.Count() <= 0 || TestDesign.SelectLabwares.FirstOrDefault(m => m.Label.Equals(comboboxTablePos.SelectedValue.ToString())) == null)
return;
ControlLabware labware = TestDesign.SelectLabwares.FirstOrDefault(m => m.Label.Equals(comboboxTablePos.SelectedValue.ToString()));
if ("1,3,5,4".Contains(labware.LabwareType.ToString()))
{
cmbTablePos.Text = "";
}
else
{
cmbTablePos.Text = $"不能在耗材 [{labware.LabwareName}] 执行加液";
}
#endregion
if (this.method != null)
{
this.method.method_Tipcontent = string.Format("{0};{1}", methodDispense.positionText, methodDispense.wellvolume);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void tbVolume_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (Shared.SoftwareInformation.software_device_number != DeviceCategory.DeviceHXFX)
{
if (!Consumables.ConsumablesValidationRule.IsRange(tbVolume.Text, 1.0, 1000.0, false, out string message))
{
tbVolume.BorderBrush = Brushes.Red;
tbVolume.BorderThickness = new Thickness(1);
}
else
{
tbVolume.BorderBrush = Brushes.Black;
}
}
else
{
if (!Consumables.ConsumablesValidationRule.IsRange(tbVolume.Text, 1.0, 100000.0, false, out string message))
{
tbVolume.BorderBrush = Brushes.Red;
tbVolume.BorderThickness = new Thickness(1);
}
else
{
tbVolume.BorderBrush = Brushes.Black;
}
}
if (methodDispense != null)
{
methodDispense.wellvolume = Convert.ToDouble(this.tbVolume.Text);
if (this.method != null)
{
this.method.method_Tipcontent = string.Format("{0};{1}", methodDispense.positionText, methodDispense.wellvolume);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
///
/// 刷新液体下拉
///
/// 需要删除的液体ID
/// 是否删除
private void BindLiquids(string liquid_id, bool IsDelete)
{
if (IsDelete)
{
//记录所选值
string id = cbLiquid.SelectedValue.ToString();
int index = cbLiquid.SelectedIndex;
//刷新下拉数据
cbLiquidRange_SelectionChanged(null, null);
//删除的液体是所需液体
if (id.Equals(liquid_id))
//重置为请选择
cbLiquid.SelectedIndex = 0;
else
//保持之前选择
cbLiquid.SelectedIndex = index;
}
else
{
//记录所选值
int index = cbLiquid.SelectedIndex;
//刷新下拉数据
cbLiquidRange_SelectionChanged(null, null);
//保持之前选择
cbLiquid.SelectedIndex = index;
}
}
#region 可用通道鼠标选择变更事件
///
/// 可用通道鼠标选择变更事件
///
///
///
private void tipsChannel_SelectedChangedEvent(object sender, EventArgs e)
{
methodDispense.channels = tipsChannel.SelectedChannels.ToArray();
}
#endregion
private void checkboxLiquidFollow_Click(object sender, RoutedEventArgs e)
{
try
{
if (checkboxLiquidDetect.IsChecked == false)
{
checkboxLiquidFollow.IsChecked = false;
return;
}
if (checkboxLiquidFollow.IsChecked == true)
{
if (Shared.SoftwareInformation.software_device_number == DeviceCategory.DeviceX3)
{
cbxLiquidFollowType.SelectedIndex = 2;
}
else
{
cbxLiquidFollowType.SelectedIndex = 1;
}
if (methodDispense != null)
{
methodDispense.enableLiquidFollow = true;
methodDispense.liquidFollowType = Convert.ToInt32(cbxLiquidFollowType.SelectedIndex);
methodDispense.liquidFollowTypeName = cbxLiquidFollowType.Text;
methodDispense.liquidFollowSpeed = Convert.ToDouble(txtLiquidFollowSpeed.Text);
methodDispense.liquidFollowDistance = Convert.ToDouble(txtLiquidFollowDistance.Text);
methodDispense.liquidFollowArea = Convert.ToDouble(txtLiquidFollowArea.Text);
methodDispense.enableMixFollow = rdMixFollow.IsChecked == true ? true : false;
methodDispense.liquidSensorDisIdText = cbxLiquidSensorDisId.Text;
methodDispense.liquidSensorDisIdValue = Convert.ToDouble(cbxLiquidSensorDisId.SelectedIndex);
//gdLiquidFollow.IsEnabled = true;
}
}
else
{
if (Shared.SoftwareInformation.software_device_number == DeviceCategory.DeviceX3)
{
cbxLiquidFollowType.SelectedIndex = 2;
}
else
{
cbxLiquidFollowType.SelectedIndex = 1;
}
if (methodDispense != null)
{
methodDispense.enableLiquidFollow = false;
methodDispense.liquidFollowType = Convert.ToInt32(cbxLiquidFollowType.SelectedIndex);
methodDispense.liquidFollowTypeName = cbxLiquidFollowType.Text;
methodDispense.liquidFollowSpeed = Convert.ToDouble(txtLiquidFollowSpeed.Text);
methodDispense.liquidFollowDistance = Convert.ToDouble(txtLiquidFollowDistance.Text);
methodDispense.liquidFollowArea = Convert.ToDouble(txtLiquidFollowArea.Text);
methodDispense.enableMixFollow = rdMixFollow.IsChecked == true ? true : false;
methodDispense.liquidSensorDisIdText = cbxLiquidSensorDisId.Text;
methodDispense.liquidSensorDisIdValue = Convert.ToDouble(cbxLiquidSensorDisId.SelectedIndex);
//gdLiquidFollow.IsEnabled = false;
}
}
}
catch (Exception ex)
{
}
}
private void txtLiquidSensorEndDistance_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.liquidSensorEndDistance = Convert.ToDouble(txtLiquidSensorEndDistance.Text);
if (string.IsNullOrEmpty(txtLiquidSensorEndDistance.Text))
{
txtLiquidSensorEndDistance.BorderBrush = Brushes.Red;
txtLiquidSensorEndDistance.BorderThickness = new Thickness(1);
tbkErrorLiquidSensorEndDistance.Text = "[0,50]";
tbkErrorLiquidSensorEndDistance.Foreground = Brushes.Red;
tbkErrorLiquidSensorEndDistance.Visibility = Visibility.Visible;
return;
}
else if (Convert.ToDouble(txtLiquidSensorEndDistance.Text) < 0 || Convert.ToDouble(txtLiquidSensorEndDistance.Text) > 50)
{
txtLiquidSensorEndDistance.BorderBrush = Brushes.Red;
txtLiquidSensorEndDistance.BorderThickness = new Thickness(1);
tbkErrorLiquidSensorEndDistance.Text = "[0,50]";
tbkErrorLiquidSensorEndDistance.Foreground = Brushes.Red;
tbkErrorLiquidSensorEndDistance.Visibility = Visibility.Visible;
return;
}
else
{
txtLiquidSensorEndDistance.BorderBrush = Brushes.Transparent;
txtLiquidSensorEndDistance.BorderThickness = new Thickness(0);
tbkErrorLiquidSensorEndDistance.Foreground = Brushes.Red;
tbkErrorLiquidSensorEndDistance.Visibility = Visibility.Hidden;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
txtLiquidSensorEndDistance.BorderBrush = Brushes.Red;
txtLiquidSensorEndDistance.BorderThickness = new Thickness(1);
return;
}
}
private void txtLiquidSensorSpeed_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.liquidSensorSpeed = Convert.ToDouble(txtLiquidSensorSpeed.Text);
validationMixDispenseSpeed(txtLiquidSensorSpeed, tbkErrorLiquidSensorSpeed);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
txtLiquidSensorSpeed.BorderBrush = Brushes.Red;
tbkErrorLiquidSensorSpeed.Text = "[1,100]";
tbkErrorLiquidSensorSpeed.Foreground = Brushes.Red;
tbkErrorLiquidSensorSpeed.Visibility = Visibility.Visible;
return;
}
}
public void validationMixDispenseSpeed(TextBox textBoxObj,TextBlock textBlockObj)
{
string volumeString = textBoxObj.Text;
Regex rg = new Regex(@"^[1-9]\\d*.\\d*|0\\.\\d*[1-9]\\d*$");
if (string.IsNullOrEmpty(volumeString))
{
textBoxObj.BorderBrush = Brushes.Red;
textBlockObj.Text = "[1,100]";
textBlockObj.Foreground = Brushes.Red;
textBlockObj.Visibility = Visibility.Visible;
return;
}
else if (rg.IsMatch(volumeString))
{
textBoxObj.BorderBrush = Brushes.Red;
textBlockObj.Text = "[1,100]";
textBlockObj.Foreground = Brushes.Red;
textBlockObj.Visibility = Visibility.Visible;
return;
}
else if (Convert.ToDouble(volumeString) < 0 || Convert.ToDouble(volumeString) > 100)
{
textBoxObj.BorderBrush = Brushes.Red;
textBlockObj.Text = "[1,100]";
textBlockObj.Foreground = Brushes.Red;
textBlockObj.Visibility = Visibility.Visible;
return;
}
else
{
textBoxObj.BorderBrush = Brushes.Transparent;
textBlockObj.Foreground = Brushes.Transparent;
textBlockObj.Visibility = Visibility.Hidden;
}
}
private void txtLiquidSensorRadio_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.liquidSensorRadio = Convert.ToDouble(txtLiquidSensorRadio.Text);
if (string.IsNullOrEmpty(txtLiquidSensorRadio.Text))
{
txtLiquidSensorRadio.BorderBrush = Brushes.Red;
txtLiquidSensorRadio.BorderThickness = new Thickness(1);
tbkErrorLiquidSensorRadio.Text = "[0,100]";
tbkErrorLiquidSensorRadio.Foreground = Brushes.Red;
tbkErrorLiquidSensorRadio.Visibility = Visibility.Visible;
return;
}
else if (Convert.ToDouble(txtLiquidSensorRadio.Text) < 0 || Convert.ToDouble(txtLiquidSensorRadio.Text) > 100)
{
txtLiquidSensorRadio.BorderBrush = Brushes.Red;
txtLiquidSensorRadio.BorderThickness = new Thickness(1);
tbkErrorLiquidSensorRadio.Text = "[0,100]";
tbkErrorLiquidSensorRadio.Foreground = Brushes.Red;
tbkErrorLiquidSensorRadio.Visibility = Visibility.Visible;
return;
}
else
{
txtLiquidSensorRadio.BorderBrush = Brushes.Transparent;
txtLiquidSensorRadio.BorderThickness = new Thickness(0);
tbkErrorLiquidSensorRadio.Foreground = Brushes.Red;
tbkErrorLiquidSensorRadio.Visibility = Visibility.Hidden;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
txtLiquidSensorRadio.BorderBrush = Brushes.Red;
txtLiquidSensorRadio.BorderThickness = new Thickness(1);
return;
}
}
private void cbxLiquidFollowType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (cbxLiquidFollowType.SelectedIndex == 1)
{
bdrFollowOneType.Visibility = Visibility.Visible;
tbkFollowTwoTypeLabel.Visibility = Visibility.Collapsed;
txtLiquidFollowArea.Visibility = Visibility.Collapsed;
tbkFollowTwoTypeUnit.Visibility = Visibility.Collapsed;
if (methodDispense != null)
{
methodDispense.liquidFollowType = cbxLiquidFollowType.SelectedIndex;
methodDispense.liquidFollowTypeName = ((string)cbxLiquidFollowType.SelectedItem).ToString();
}
}
else if (cbxLiquidFollowType.SelectedIndex == 2)
{
bdrFollowOneType.Visibility = Visibility.Collapsed;
tbkFollowTwoTypeLabel.Visibility = Visibility.Visible;
txtLiquidFollowArea.Visibility = Visibility.Visible;
tbkFollowTwoTypeUnit.Visibility = Visibility.Visible;
if (methodDispense != null)
{
methodDispense.liquidFollowType = cbxLiquidFollowType.SelectedIndex;
methodDispense.liquidFollowTypeName = ((string)cbxLiquidFollowType.SelectedItem).ToString();
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void txtLiquidFollowDistance_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.liquidFollowDistance = Convert.ToDouble(txtLiquidFollowDistance.Text);
//if(methodDispense.mixAspiratePositionText.Equals("Top"))
//{
if (string.IsNullOrEmpty(txtLiquidFollowDistance.Text))
{
txtLiquidFollowDistance.BorderBrush = Brushes.Red;
txtLiquidFollowDistance.BorderThickness = new Thickness(1);
tbkErrorLiquidFollowDistance.Text = "[0,50]";
tbkErrorLiquidFollowDistance.Foreground = Brushes.Red;
tbkErrorLiquidFollowDistance.Visibility = Visibility.Visible;
return;
}
else if (Convert.ToDouble(txtLiquidFollowDistance.Text) < 0 || Convert.ToDouble(txtLiquidFollowDistance.Text) > 50)
{
txtLiquidFollowDistance.BorderBrush = Brushes.Red;
txtLiquidFollowDistance.BorderThickness = new Thickness(1);
tbkErrorLiquidFollowDistance.Text = "[0,50]";
tbkErrorLiquidFollowDistance.Foreground = Brushes.Red;
tbkErrorLiquidFollowDistance.Visibility = Visibility.Visible;
return;
}
else
{
txtLiquidFollowDistance.BorderBrush = Brushes.Transparent;
txtLiquidFollowDistance.BorderThickness = new Thickness(0);
tbkErrorLiquidFollowDistance.Foreground = Brushes.Red;
tbkErrorLiquidFollowDistance.Visibility = Visibility.Hidden;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
txtLiquidFollowDistance.BorderBrush = Brushes.Red;
txtLiquidFollowDistance.BorderThickness = new Thickness(1);
return;
}
}
private void txtLiquidFollowSpeed_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.liquidFollowSpeed = Convert.ToDouble(txtLiquidFollowSpeed.Text);
validationMixDispenseSpeed(txtLiquidFollowSpeed, tbkErrorLiquidFollowSpeed);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
txtLiquidFollowSpeed.BorderBrush = Brushes.Red;
tbkErrorLiquidFollowSpeed.Text = "[1,100]";
tbkErrorLiquidFollowSpeed.Foreground = Brushes.Red;
tbkErrorLiquidFollowSpeed.Visibility = Visibility.Visible;
return;
}
}
private void txtLiquidFollowArea_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.liquidFollowArea = Convert.ToDouble(txtLiquidSensorRadio.Text);
//if(methodDispense.mixAspiratePositionText.Equals("Top"))
//{
if (string.IsNullOrEmpty(txtLiquidSensorRadio.Text))
{
txtLiquidSensorRadio.BorderBrush = Brushes.Red;
txtLiquidSensorRadio.BorderThickness = new Thickness(1);
tbkErrorLiquidFollowArea.Text = "[0,30000]";
tbkErrorLiquidFollowArea.Foreground = Brushes.Red;
tbkErrorLiquidFollowArea.Visibility = Visibility.Visible;
return;
}
else if (Convert.ToDouble(txtLiquidSensorRadio.Text) < 0 || Convert.ToDouble(txtLiquidSensorRadio.Text) > 30000)
{
txtLiquidSensorRadio.BorderBrush = Brushes.Red;
txtLiquidSensorRadio.BorderThickness = new Thickness(1);
tbkErrorLiquidFollowArea.Text = "[0,30000]";
tbkErrorLiquidFollowArea.Foreground = Brushes.Red;
tbkErrorLiquidFollowArea.Visibility = Visibility.Visible;
return;
}
else
{
txtLiquidSensorRadio.BorderBrush = Brushes.Transparent;
txtLiquidSensorRadio.BorderThickness = new Thickness(0);
tbkErrorLiquidFollowArea.Foreground = Brushes.Red;
tbkErrorLiquidFollowArea.Visibility = Visibility.Hidden;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
txtLiquidSensorRadio.BorderBrush = Brushes.Red;
txtLiquidSensorRadio.BorderThickness = new Thickness(1);
return;
}
}
private void rdMixFollow_Checked(object sender, RoutedEventArgs e)
{
try
{
if (rdMixFollow.IsChecked == true)
{
if (methodDispense != null)
{
methodDispense.enableMixFollow = true;
}
}
else
{
if (methodDispense != null)
{
methodDispense.enableMixFollow = false;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
return;
}
}
private void rdMixNotFollow_Checked(object sender, RoutedEventArgs e)
{
try
{
if (rdMixNotFollow.IsChecked == true)
{
if (methodDispense != null)
{
methodDispense.enableMixFollow = false;
}
}
else
{
if (methodDispense != null)
{
methodDispense.enableMixFollow = true;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
return;
}
}
private void checkboxMultiMix_Click(object sender, RoutedEventArgs e)
{
try
{
if ((bool)checkboxMultiMix.IsChecked)
{
if (methodDispense != null)
{
methodDispense.bMultiMix = true;
}
}
else
{
if (methodDispense != null)
{
methodDispense.bMultiMix = false;
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void cbxDispenseBlockDealType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (methodDispense != null)
{
methodDispense.dispenseBlockDisIdText = ((string)cbxDispenseBlockDealType.SelectedItem).ToString();
methodDispense.dispenseBlockDisIdValue = cbxDispenseBlockDealType.SelectedIndex;
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
private void wellPlate_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
try
{
tbxWellPositionTips.Text = wellPlate.Selection;
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
}
}