using DataEntity.Device; using DataRWDAL.Device; using HxEnum; using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using XCommon.Log; using XCore; using XHandler.Class.DataEx; using XImagingXhandler.XDAL; namespace XHandler.View.MethodProperty { /// /// Socket-TCP标准协议 属性页面 /// public partial class ThirdPartPropertySocketProperty : UserControl, IMethodProperty { #region 变量 private TransferFileBll m_transferFileBll = new TransferFileBll(); private int m_mark = 0; private MethodEx m_mEx = null; public MethodThirdPart methodProperty = null; public string sendParamsData = string.Empty; #endregion #region 构造函数 /// /// 构造函数 /// /// public ThirdPartPropertySocketProperty(MethodEx mEx) { InitializeComponent(); m_mark = 0; methodProperty = new MethodThirdPart(); methodProperty.strIndex = mEx.strIndex; methodProperty.label = mEx.method_name; // 命令标签 methodProperty.name = mEx.method_name; // 命令名称 methodProperty.status = (mEx.isEnabled == true ? "enable" : "disable"); // 使能状态 methodProperty.device = mEx.device; this.DataContext = methodProperty; #region 设备方法 // 获取设备方法列表 var deviceConfigList = DeviceConfigMethodDB.GetListByDeviceconfigId(mEx.method_id.ToString()); DeviceConfigMethodModel item = new DeviceConfigMethodModel(); item.Id = "-1"; item.ParameterName = Properties.Resources.strPleaseSelect; deviceConfigList.Insert(0, item); cbDeviceMethod.ItemsSource = deviceConfigList; cbDeviceMethod.SelectedIndex = 0; #endregion if (mEx.tag != null) { methodProperty = (MethodThirdPart)mEx.tag; if(methodProperty.methodParametersData!=null) { foreach(var param in methodProperty.methodParametersData) { sendParamsData += param.ParameterName + ":" + param.Value + ";"; } } } m_mEx = mEx; m_mEx.method_Tipcontent = string.Format("{0},发送参数:{1}", methodProperty.deviceMethod==null?"": methodProperty.deviceMethod.ParameterName, sendParamsData); } #endregion #region 界面初期表示事件 private void UserControl_Loaded(object sender, RoutedEventArgs e) { m_mark += 1; try { if (m_mark > 1) { return; } #region 设备方法 if (!string.IsNullOrEmpty(methodProperty.deviceMethodValue)) { cbDeviceMethod.SelectedValue = methodProperty.deviceMethodValue; } #endregion } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 方法标签文件更改事件 /// /// 方法标签文件更改事件 /// /// /// private void tbxCommandLabel_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_mark != 0) { methodProperty.label = tbxCommandLabel.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 方法名称更改事件 /// /// 方法名称更改事件 /// /// /// private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_mark != 0) { methodProperty.name = tbxCommandName.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 设备方法选择变更事件 string sendParams = string.Empty; /// /// 设备方法选择变更事件 /// /// /// private void cbDeviceMethod_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbDeviceMethod.SelectedIndex <= 0) { // 清空所有参数数据 panelSendParamters.Children.Clear(); panelReceiveParamters.Children.Clear(); return; } var methodModel = (DeviceConfigMethodModel)cbDeviceMethod.SelectedItem; methodProperty.deviceMethodText = methodModel.ParameterName; methodProperty.deviceMethodValue = methodModel.Id; methodProperty.deviceMethod = methodModel; // 获取设备方法参数列表 var methodParametersList = DeviceConfigMethodParametersDB.GetInfoByDeviceconfigMethodId(cbDeviceMethod.SelectedValue.ToString()); // 发送参数 var selSendParameters = methodParametersList.Where(it => it.Type == EnumManagement.GetEnumValue(ParameterTypeEnum.Send)); SetParamtersPanel(panelSendParamters, selSendParameters); m_mEx.method_Tipcontent = string.Format("{0},发送参数:{1}", methodModel.ParameterName, sendParams); // 接收参数 var selReceiveParameters = methodParametersList.Where(it => it.Type == EnumManagement.GetEnumValue(ParameterTypeEnum.Receive)); SetParamtersPanel(panelReceiveParamters, selReceiveParameters); sendParams = string.Empty; } /// /// 动态生成参数列表 /// /// /// private void SetParamtersPanel(StackPanel sPanel, IEnumerable selParameters) { // 清空所有参数数据 sPanel.Children.Clear(); if (!selParameters.Any()) { return; } List parametersData = new List(methodProperty.methodParametersData); methodProperty.methodParametersData.Clear(); // 循环参数 List lstParameters = selParameters.ToList(); for (int i = 0; i < lstParameters.Count; i++) { var parametersModel = lstParameters[i]; SocketParamterItem item = new SocketParamterItem(methodProperty, m_mEx); item.MethodParamterId = parametersModel.Id; item.Title = parametersModel.ParameterName; // 获取之前保存的参数值 var parameterSave = parametersData.FirstOrDefault(it => it.Id.Equals(parametersModel.Id)); item.Value = parameterSave != null ? parameterSave.Value : parametersModel.Value; sPanel.Children.Add(item); methodProperty.methodParametersData.Add(new DeviceConfigMethodParametersModel() { Id = parametersModel.Id, ParameterName = parametersModel.ParameterName, Value = parametersModel.Value }); sendParams += parametersModel.ParameterName + ":" + item.Value+";"; } } #endregion #region 设置已选择的台面数据 public void SetTableName(string tableName, Labware lb) { //if (lb == null || string.IsNullOrEmpty(lb.labware_id)) //{ // return; //} //GetOrSetLattice latticeDB = new GetOrSetLattice(); //List latticeList = latticeDB.GetLatticeDataFromdb(App.softwareInformation.software_device_number, Convert.ToInt32(methodChoice.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; //} //if (gridLiquidParam.Visibility == Visibility.Visible) //{ // if (gridChoiceAgoAspirateChild.Children.Count > 0) // { // ChoiceAgoAspirateChildProperty choiceAgoAspirateChildProperty = (ChoiceAgoAspirateChildProperty)gridChoiceAgoAspirateChild.Children[0]; // choiceAgoAspirateChildProperty.SetTableName(tableName, lb); // } //} //else //{ // if (labwareTextBox != null) // { // labwareTextBox.Tag = lb.labware_id; // labwareTextBox.Text = lb.labware_name; // } //} } #endregion } }