using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using FLY.FeedbackRenZiJia.Common; using System.Net; using ThickTcpUiInWindow; using FLY.FeedbackRenZiJia.IService; using System.ComponentModel; namespace FLY.FeedbackRenZiJia.UI.Client { /// <summary> /// Page_Setup.xaml 的交互逻辑 /// </summary> public partial class Page_Setup : Page { FLY.FeedbackRenZiJia.Client.FeedbackHeatServiceClient mFeedback; FLY.FeedbackRenZiJia.Client.HeatBufServiceClient mHeatBuf; FLY.FeedbackRenZiJia.Client.HeatCellServiceClient mHeatCell; public Page_Setup() { InitializeComponent(); } private void Page_Loaded(object sender, RoutedEventArgs e) { SysParam sysparam = SysParam.Current; IPEndPoint ep = sysparam.ServerEP; mFeedback = new FeedbackRenZiJia.Client.FeedbackHeatServiceClient(FLY.FeedbackRenZiJia.OBJ_INTERFACE.OBJ_INTERFACE_ID.FEEDBACK_ID); mHeatBuf = new FeedbackRenZiJia.Client.HeatBufServiceClient(FLY.FeedbackRenZiJia.OBJ_INTERFACE.OBJ_INTERFACE_ID.HEATBUF_ID); mHeatCell = new FeedbackRenZiJia.Client.HeatCellServiceClient(FLY.FeedbackRenZiJia.OBJ_INTERFACE.OBJ_INTERFACE_ID.HEATCELL_ID); FObjBase.FObjSys.Current.Connect_to_Another_OBJSys(ep, mFeedback.ID, mHeatBuf.ID, mHeatCell.ID); this.grid_feedback.DataContext = mFeedback; this.grid_heatbuf.DataContext = mHeatBuf; this.grid_heatcell.DataContext = mHeatCell; } private void Page_Unloaded(object sender, RoutedEventArgs e) { mFeedback.Dispose(); mHeatBuf.Dispose(); mHeatCell.Dispose(); } private void button_back_Click(object sender, RoutedEventArgs e) { NavigationService.GoBack(); } bool CheckValid_HeatEffectCurve() { List<int> list = mHeatBuf.HeatEffectCurve; if ((list == null) || (list.Count() == 0)) { FLY.ControlLibrary.Window_WarningTip.Show( "参数异常", "加热效果为空", TimeSpan.FromSeconds(2)); return false; } int cnt = list.Count(); if ((int)(cnt / 2) * 2 == cnt) { FLY.ControlLibrary.Window_WarningTip.Show( "参数异常", "加热效果格式出错,应该如2,5,8,5,2", TimeSpan.FromSeconds(2)); return false; } for (int i = 0; i < list.Count() / 2; i++) { int idx0 = i; int idx_0 = list.Count() - 1 - idx0; if (list[idx0] != list[idx_0]) { FLY.ControlLibrary.Window_WarningTip.Show( "参数异常", "加热效果格式出错,应该如2,5,8,5,2", TimeSpan.FromSeconds(2)); return false; } int idx1 = idx0 + 1; if (list[idx0] > list[idx1]) { FLY.ControlLibrary.Window_WarningTip.Show( "参数异常", "加热效果格式出错,应该如2,5,8,5,2", TimeSpan.FromSeconds(2)); return false; } } return true; } bool CheckValid() { if (CheckValid_HeatEffectCurve() == false) return false; return true; } private void button_apply_oNo_Click(object sender, RoutedEventArgs e) { if (Window_Password.Authorize(1)) { if (CheckValid()) { mHeatBuf.Apply(); mHeatCell.Apply(); FLY.ControlLibrary.Window_Tip.Show("参数设置", "成功", TimeSpan.FromSeconds(2)); } } } private void button_apply_Click(object sender, RoutedEventArgs e) { if (Window_Password.Authorize(1)) { if (CheckValid()) { mHeatBuf.Apply(); mHeatCell.Apply(); mFeedback.Apply(); FLY.ControlLibrary.Window_Tip.Show("参数设置", "成功", TimeSpan.FromSeconds(2)); } } } private void button_smooth_Click(object sender, RoutedEventArgs e) { mHeatCell.Smooth(); } } public class HeatEffectConverter : IValueConverter { #region IValueConverter 成员 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { List<int> list = value as List<int>; if (list == null) { return null; } string str = ""; for (int i = 0; i < list.Count(); i++) { if (i == 0) str += list[i].ToString(); else str += "," + list[i].ToString(); } return str; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string str = value as string; if (string.IsNullOrEmpty(str)) { //不合法 return null; } string[] ss = str.Split(','); List<int> list = new List<int>(); for (int i = 0; i < ss.Length; i++) { int num; if (int.TryParse(ss[i], out num)) { list.Add(num); } } return list; } #endregion } public class TimeSpan2SecondConverter : IValueConverter { #region IValueConverter 成员 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { TimeSpan ts = (TimeSpan)value; return (int)(ts.TotalSeconds); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return null; } #endregion } public class StableConverter : IValueConverter { #region IValueConverter 成员 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { STABILITY stable = (STABILITY)value; switch (stable) { case STABILITY.IDLE: return "等待"; case STABILITY.ERROR_NO_ARRIVE: return "等待:加热点还没到达测厚仪"; case STABILITY.ERROR_POSITION_NOTSURE: return "等待:位置不能确定"; case STABILITY.ERROR_SIGMA_OVERSIZE: return "等待:2σ太大 "; case STABILITY.ERROR_ROTATE_CHANGED: return "等待:旋转速度波动大 "; case STABILITY.ERROR_THICK_CHANGED: return "等待:厚度均值波动大"; case STABILITY.ERROR_CORREL: return "等待:相关性不够"; case STABILITY.OK_CORREL: return "稳定:相关性高"; case STABILITY.OK_HEAT_AND_THICK_CORREL: return "稳定:加热相关性高"; default: return "???"; } } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return null; } #endregion } public class AutoONoResultConverter : IValueConverter { #region IValueConverter 成员 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { EAutoONoResult stable = (EAutoONoResult)value; switch (stable) { case EAutoONoResult.OK: return "完成:对位成功"; case EAutoONoResult.Idle: return "等待"; case EAutoONoResult.Err_Break: return "完成:异常, 数据异常或打断"; case EAutoONoResult.Err_MaxMin: return "完成:异常, 极差值不够大,可信度不够"; case EAutoONoResult.Err_MaxR: return "完成:异常, 相关性不够大,可信度不够"; default: return "???"; } } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return null; } #endregion } public class Direction2VisableConverter : IValueConverter { #region IValueConverter 成员 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { Misc.DIRECTION direction = (Misc.DIRECTION)value; string str = (string)parameter; str = str.ToUpper(); if ((str.CompareTo("FORW") == 0) && (direction == Misc.DIRECTION.FORWARD)) { return System.Windows.Visibility.Visible; } else if ((str.CompareTo("BACKW") == 0) && (direction == Misc.DIRECTION.BACKWARD)) { return System.Windows.Visibility.Visible; } else return System.Windows.Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion } }