using DataEntity.Rack; using DataEntity.Share; using DataRWDAL; using DataRWDAL.Rack; using HxEnum; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; using XCommon.Log; using XCore; using XHandler.Class.DataEx; using XImagingXhandler.XDAL; using Convert = System.Convert; using XHandler.View.Consumables; namespace XHandler.View.MethodProperty { /// /// 夹爪保持开始 属性页面 /// public partial class BeginHoldingLabwareProperty : UserControl, IMethodProperty,IConsumableObserver { #region 变量 private MethodEx method = null; public MethodHoldingLabware methodHoldingLabware { get; set; } private int mark = 0; #endregion #region BLL private AspirateBll aspirateBll = new AspirateBll(); private GripTransportBll gripTransportBll = new GripTransportBll(); #endregion #region 构造函数 /// /// 构造函数 /// /// public BeginHoldingLabwareProperty(MethodEx method) { InitializeComponent(); #region 臂 // 获取机械臂信息 List armList = DataModule.getInstance().GetDeviceArm(); cbArm.ItemsSource = armList; #endregion #region 转运点位 // 加载转运点位 LoadGripPosition(Shared.ChanelArmId); #endregion #region 抓板方向 List gripTransportModels = gripTransportBll.GenerateGripTransportModel(Shared.SoftwareInformation.software_device_number); cbGripModel.ItemsSource = gripTransportModels; #endregion #region 抓取耗材 // 抓 ObservableCollection dropdownNames = LabwareDB.GetLabware(2); cbGripPickObject.ItemsSource = dropdownNames; #endregion #region 抓板位置 List gripTransportModelPoss = gripTransportBll.GetGripTransportModelPoss(); cbGripModelPos.ItemsSource = gripTransportModelPoss; #endregion methodHoldingLabware = new MethodHoldingLabware(); methodHoldingLabware.name = method.method_name; methodHoldingLabware.label = method.method_name; methodHoldingLabware.transportMode = 0; methodHoldingLabware.status = (method.isEnabled == true ? "enable" : "disable"); methodHoldingLabware.strIndex = method.strIndex; this.method = method; if (method.tag != null) { methodHoldingLabware = (MethodHoldingLabware)method.tag; } this.DataContext = methodHoldingLabware; } #endregion bool isConsumableUpdate = false; /// /// 耗材变更后,更新节点 /// /// 耗材管理对象 public void ReceiveAndUpdate(ConsumableManagement consumableManagement) { isConsumableUpdate = true; // 抓取耗材 ObservableCollection dropdownNames = LabwareDB.GetLabware(2); cbGripPickObject.ItemsSource = dropdownNames; cbGripPickObject.SelectedValue = methodHoldingLabware.gripPickLabwareValue; } #region 加载转运板位 /// /// 加载转运板位 /// /// private void LoadGripPosition(int armId) { List gripPositionList = new List(); // 获取台面点位 List lattices = aspirateBll.ProviderLatticeList(Shared.SoftwareInformation.software_device_number, armId); // 获取台面以外点位 List positons = PositionDB.GetList(Shared.SoftwareInformation.software_information_id); foreach (var lattice in lattices) { if (!lattice.lattice_num.Equals("请选择")) { GripTransportPosition gripPosition = new GripTransportPosition(); gripPosition.position_id = lattice.lattice_id; gripPosition.position_name = lattice.lattice_num; gripPosition.position_type = EnumManagement.GetEnumValue(PositonTypeEnum.Desktop); gripPositionList.Add(gripPosition); } } foreach (var positon in positons) { GripTransportPosition gripPosition = new GripTransportPosition(); gripPosition.position_id = positon.id; gripPosition.position_name = positon.name; gripPosition.position_type = positon.type; gripPositionList.Add(gripPosition); } cbSourceLattice.ItemsSource = gripPositionList; cbSourceLattice.SelectedIndex = 0; } #endregion #region 初始化 /// /// 初始化 /// /// /// private void UserControl_Loaded(object sender, RoutedEventArgs e) { mark += 1; try { if (mark > 1) { return; } List armList = (List)cbArm.ItemsSource; DeviceArm gripper = armList.FirstOrDefault(it => it.arm_type == EnumManagement.GetEnumValue(ArmTypeEnum.Gripper)); cbArm.SelectedItem = gripper; if (!string.IsNullOrEmpty(methodHoldingLabware.armValue)) { // 机械臂 cbArm.SelectedValue = methodHoldingLabware.armValue; // 抓板位 cbSourceLattice.SelectedValue = methodHoldingLabware.srcPositionValue; // 抓板方向 cbGripModel.SelectedValue = methodHoldingLabware.gripModelValue; // 抓取耗材 cbGripPickObject.SelectedValue = methodHoldingLabware.gripPickLabwareValue; // 抓板位置 cbGripModelPos.SelectedValue = methodHoldingLabware.gripModelPosValue; if (methodHoldingLabware.transportMode == 0) rbAll.IsChecked = true; else if (methodHoldingLabware.transportMode == 1) rbExceptOne.IsChecked = true; else if (methodHoldingLabware.transportMode == 2) { rbCount.IsChecked = true; tbxlevel.Text = methodHoldingLabware.transportCount.ToString(); } if (this.method != null) { this.method.method_Tipcontent = string.Format("从{0}抓板", methodHoldingLabware.srcPositionText); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 臂 /// /// 臂 /// /// /// private void cbArm_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbArm.SelectedIndex < 0) { return; } DeviceArm arm = (DeviceArm)cbArm.SelectedItem; methodHoldingLabware.armText = arm.device_arm_name; methodHoldingLabware.armValue = arm.device_arm_id.ToString(); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 转运板位 /// /// 转运板位 /// /// /// private void cbSourceLattice_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbSourceLattice.SelectedIndex < 0 || mark == 0) { return; } if (cbSourceLattice.SelectedIndex >= 0) { GripTransportPosition gripPosition = cbSourceLattice.SelectedItem as GripTransportPosition; if (methodHoldingLabware != null) { methodHoldingLabware.srcPositionText = gripPosition.position_name; methodHoldingLabware.srcPositionValue = gripPosition.position_id; methodHoldingLabware.srcPositionType = gripPosition.position_type; } if (this.method != null) { this.method.method_Tipcontent = string.Format("从{0}抓板", methodHoldingLabware.srcPositionText); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 抓板位置 /// /// 抓板位置 /// /// /// private void cbGripModelPos_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { GripTransportModel gripTransportModel = cbGripModelPos.SelectedItem as GripTransportModel; if (methodHoldingLabware != null) { methodHoldingLabware.gripModelPosText = gripTransportModel.model_name; methodHoldingLabware.gripModelPosValue = Convert.ToInt32(gripTransportModel.model_id); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 抓板方向 /// /// 抓板方向 /// /// /// private void cbGripModel_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { GripTransportModel gripTransportModel = cbGripModel.SelectedItem as GripTransportModel; if (methodHoldingLabware != null) { methodHoldingLabware.gripModelText = gripTransportModel.model_name; methodHoldingLabware.gripModelValue = Convert.ToInt32(gripTransportModel.model_id); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 抓取耗材 /// /// 抓取耗材 /// /// /// private void cbGripPickObject_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (isConsumableUpdate) { isConsumableUpdate = false; return; } Labware gripTransportModel = cbGripPickObject.SelectedItem as Labware; if (methodHoldingLabware != null) { methodHoldingLabware.gripPickLabwareText = gripTransportModel.labware_name; methodHoldingLabware.gripPickLabwareValue = gripTransportModel.labware_id; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 命令名称 /// /// 命令名称 /// /// /// private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodHoldingLabware != null) { methodHoldingLabware.name = tbxCommandName.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion public void SetTableName(string name, Labware labware) { } private void rbAll_Checked(object sender, RoutedEventArgs e) { if (rbAll.IsChecked == true) { if (methodHoldingLabware != null) { methodHoldingLabware.transportMode = (int)GripTransportModeEnum.TransportAll; } } } private void rbExceptOne_Checked(object sender, RoutedEventArgs e) { if (rbExceptOne.IsChecked == true) { if (methodHoldingLabware != null) { methodHoldingLabware.transportMode = (int)GripTransportModeEnum.TransportExceptOne; } } } private void rbCount_Checked(object sender, RoutedEventArgs e) { if (rbCount.IsChecked == true) { if (methodHoldingLabware != null) { methodHoldingLabware.transportMode = (int)GripTransportModeEnum.TransportCount; } } } private void tbxlevel_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodHoldingLabware != null) { methodHoldingLabware.transportCount = Convert.ToInt32(tbxlevel.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } } }