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.Shapes; using System.Globalization; using Aitex.Core.Common.DeviceData; using Aitex.Core.RT.Log; namespace Aitex.Core.UI.Control { /// /// Interaction logic for InputDialogBox.xaml /// public partial class AITRfInputDialogBox : Window { public AITRfInputDialogBox() { InitializeComponent(); DataContext = this; WindowStartupLocation = WindowStartupLocation.CenterOwner; } public void FocasAll() { inputBoxDuty.Text = Math.Round(SetPointDuty, 2).ToString(); inputBoxFrequency.Text = Math.Round(SetPointFrequency, 2).ToString(); inputBoxPower.Text = Math.Round(SetPointPower, 2).ToString(); inputBoxPower.Focus(); inputBoxPower.SelectAll(); } /// /// Vilidate input range /// /// /// private void InputTextBoxPower_TextChanged(object sender, TextChangedEventArgs e) { double input; if (!double.TryParse(inputBoxPower.Text, out input)) buttonSet.IsEnabled = false; else if (input < 0 || input > MaxValuePower) buttonSet.IsEnabled = false; else buttonSet.IsEnabled = true; inputBoxPower.Foreground = buttonSet.IsEnabled ? System.Windows.Media.Brushes.Black : System.Windows.Media.Brushes.Red; } private void InputTextBoxFrequency_TextChanged(object sender, TextChangedEventArgs e) { double input; if (!double.TryParse(inputBoxFrequency.Text, out input)) buttonSet.IsEnabled = false; else if (input < 0 || input > MaxValueFrequency) buttonSet.IsEnabled = false; else buttonSet.IsEnabled = true; inputBoxFrequency.Foreground = buttonSet.IsEnabled ? System.Windows.Media.Brushes.Black : System.Windows.Media.Brushes.Red; } private void InputTextBoxDuty_TextChanged(object sender, TextChangedEventArgs e) { double input; if (!double.TryParse(inputBoxDuty.Text, out input)) buttonSet.IsEnabled = false; else if (input < 0 || input > MaxValueDuty) buttonSet.IsEnabled = false; else buttonSet.IsEnabled = true; inputBoxDuty.Foreground = buttonSet.IsEnabled ? System.Windows.Media.Brushes.Black : System.Windows.Media.Brushes.Red; } public static readonly DependencyProperty DeviceNameProperty = DependencyProperty.Register( "DeviceName", typeof(string), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty DeviceIdProperty = DependencyProperty.Register( "DeviceId", typeof(string), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty ForwardPowerProperty = DependencyProperty.Register( "ForwardPower", typeof(float), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0f, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty ReflectPowerProperty = DependencyProperty.Register( "ReflectPower", typeof(float), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0f, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty UnitPowerProperty = DependencyProperty.Register( "UnitPower", typeof(string), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty SetPointPowerProperty = DependencyProperty.Register( "SetPointPower", typeof(double), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty MaxValuePowerProperty = DependencyProperty.Register( "MaxValuePower", typeof(double), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty VoltageProperty = DependencyProperty.Register( "Voltage", typeof(double), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty CurrentProperty = DependencyProperty.Register( "Current", typeof(double), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty UnitFrequencyProperty = DependencyProperty.Register( "UnitFrequency", typeof(string), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty SetPointFrequencyProperty = DependencyProperty.Register( "SetPointFrequency", typeof(double), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty MaxValueFrequencyProperty = DependencyProperty.Register( "MaxValueFrequency", typeof(double), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty UnitDutyProperty = DependencyProperty.Register( "UnitDuty", typeof(string), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty SetPointDutyProperty = DependencyProperty.Register( "SetPointDuty", typeof(double), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty MaxValueDutyProperty = DependencyProperty.Register( "MaxValueDuty", typeof(double), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty IsRfOnProperty = DependencyProperty.Register( "IsRfOn", typeof(bool), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty IsContinuousModeProperty = DependencyProperty.Register( "IsContinuousMode", typeof(bool), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty IsPulsingModeProperty = DependencyProperty.Register( "IsPulsingMode", typeof(bool), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty EnablePulsingProperty = DependencyProperty.Register( "EnablePulsing", typeof(bool), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty EnableReflectProperty = DependencyProperty.Register( "EnableReflect", typeof(bool), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty EnableVoltageCurrentProperty = DependencyProperty.Register( "EnableVoltageCurrent", typeof(bool), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty GridLengthReflectProperty = DependencyProperty.Register( "GridLengthReflect", typeof(GridLength), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(GridLength.Auto, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty GridLengthVoltageCurrentProperty = DependencyProperty.Register( "GridLengthVoltageCurrent", typeof(GridLength), typeof(AITRfInputDialogBox), new FrameworkPropertyMetadata(GridLength.Auto, FrameworkPropertyMetadataOptions.AffectsRender)); /// /// 是否百分比显示 /// public bool IsPercent { get; set; } public string DeviceName { get { return (string)this.GetValue(DeviceNameProperty); } set { if (!string.IsNullOrEmpty(value) && !value.StartsWith("_")) value = "_" + value; this.SetValue(DeviceNameProperty, value); } } public string DeviceId { get { return (string)this.GetValue(DeviceIdProperty); } set { this.SetValue(DeviceIdProperty, value); } } public string UnitPower { get { return (string)this.GetValue(UnitPowerProperty); } set { this.SetValue(UnitPowerProperty, value); } } public double SetPointPower { get { return (double)this.GetValue(SetPointPowerProperty); } set { this.SetValue(SetPointPowerProperty, value); } } public double MaxValuePower { get { return (double)this.GetValue(MaxValuePowerProperty); } set { this.SetValue(MaxValuePowerProperty, value); } } public string UnitFrequency { get { return (string)this.GetValue(UnitFrequencyProperty); } set { this.SetValue(UnitFrequencyProperty, value); } } public double SetPointFrequency { get { return (double)this.GetValue(SetPointFrequencyProperty); } set { this.SetValue(SetPointFrequencyProperty, value); } } public double MaxValueFrequency { get { return (double)this.GetValue(MaxValueFrequencyProperty); } set { this.SetValue(MaxValueFrequencyProperty, value); } } public double Voltage { get { return (double)this.GetValue(VoltageProperty); } set { this.SetValue(VoltageProperty, value); } } public double Current { get { return (double)this.GetValue(CurrentProperty); } set { this.SetValue(CurrentProperty, value); } } public string UnitDuty { get { return (string)this.GetValue(UnitDutyProperty); } set { this.SetValue(UnitDutyProperty, value); } } public double SetPointDuty { get { return (double)this.GetValue(SetPointDutyProperty); } set { this.SetValue(SetPointDutyProperty, value); } } public double MaxValueDuty { get { return (double)this.GetValue(MaxValueDutyProperty); } set { this.SetValue(MaxValueDutyProperty, value); } } public float ForwardPower { get { return (float)this.GetValue(ForwardPowerProperty); } set { this.SetValue(ForwardPowerProperty, value); } } public float ReflectPower { get { return (float)this.GetValue(ReflectPowerProperty); } set { this.SetValue(ReflectPowerProperty, value); } } public bool IsRfOn { get { return (bool)this.GetValue(IsRfOnProperty); } set { this.SetValue(IsRfOnProperty, value); buttonRFOff.IsEnabled = value; buttonRFOn.IsEnabled = !value; //if (!value) // buttonSet.IsEnabled = false; } } public bool IsContinuousMode { get { return (bool)this.GetValue(IsContinuousModeProperty); } set { this.SetValue(IsContinuousModeProperty, value); ckContinuous.IsChecked = IsContinuousMode; lblFrequency.Foreground = IsPulsingMode ? Brushes.Black : Brushes.Gray; lblDuty.Foreground = IsPulsingMode ? Brushes.Black : Brushes.Gray; inputBoxFrequency.IsEnabled = IsPulsingMode; inputBoxDuty.IsEnabled = IsPulsingMode; } } public bool IsPulsingMode { get { return (bool)this.GetValue(IsPulsingModeProperty); } set { this.SetValue(IsPulsingModeProperty, value); ckPulsing.IsChecked = IsPulsingMode; lblFrequency.Foreground = IsPulsingMode ? Brushes.Black : Brushes.Gray; lblDuty.Foreground = IsPulsingMode ? Brushes.Black : Brushes.Gray; inputBoxFrequency.IsEnabled = IsPulsingMode; inputBoxDuty.IsEnabled = IsPulsingMode; } } public bool EnablePulsing { get { return (bool)this.GetValue(EnablePulsingProperty); } set { this.SetValue(EnablePulsingProperty, value); ckPulsing.Visibility = value ? Visibility.Visible : Visibility.Hidden; } } public bool EnableReflect { get { return (bool)this.GetValue(EnableReflectProperty); } set { this.SetValue(EnableReflectProperty, value); } } public bool EnableVoltageCurrent { get { return (bool)this.GetValue(EnableVoltageCurrentProperty); } set { this.SetValue(EnableVoltageCurrentProperty, value); } } public GridLength GridLengthReflect { get { return (GridLength)this.GetValue(GridLengthReflectProperty); } set { this.SetValue(GridLengthReflectProperty, value); } } public GridLength GridLengthWorkMode { get; set; } public GridLength GridLengthVoltageCurrent { get { return (GridLength)this.GetValue(GridLengthVoltageCurrentProperty); } set { this.SetValue(GridLengthVoltageCurrentProperty, value); } } public Action SetRfModeCommandDelegate; public Action SetRfPowerOnOffCommandDelegate; public Action SetContinuousCommandDelegate; public Action SetPulsingCommandDelegate; private void ButtonSet_Click(object sender, RoutedEventArgs e) { try { if (IsContinuousMode) SetContinuousCommandDelegate(Convert.ToDouble(inputBoxPower.Text)); else if (IsPulsingMode) SetPulsingCommandDelegate(Convert.ToDouble(inputBoxPower.Text), Convert.ToDouble(inputBoxFrequency.Text), Convert.ToDouble(inputBoxDuty.Text)); Close(); } catch (Exception ex) { LOG.Error(ex.Message); } } private void OnEnterKeyIsHit(object sender, KeyEventArgs e) { try { if (!buttonSet.IsEnabled) return; if (e.Key == Key.Return) { ButtonSet_Click(null, null); } } catch (Exception ex) { LOG.Error(ex.Message); } } private void ButtonCancel_Click(object sender, RoutedEventArgs e) { Close(); } private void CkPulsing_OnChecked(object sender, RoutedEventArgs e) { if (IsPulsingMode) return; ckPulsing.IsChecked = false; try { if (SetRfModeCommandDelegate != null) { SetRfModeCommandDelegate(RfMode.PulsingMode); } } catch (Exception ex) { LOG.Error(ex.Message); } } private void CkContinuous_OnChecked(object sender, RoutedEventArgs e) { if (IsContinuousMode) return; ckContinuous.IsChecked = false; try { if (SetRfModeCommandDelegate != null) { SetRfModeCommandDelegate(RfMode.ContinuousWaveMode); } } catch (Exception ex) { LOG.Error(ex.Message); } } private void CkContinuous_OnClick(object sender, RoutedEventArgs e) { ckContinuous.IsChecked = IsContinuousMode; } private void CkPulsing_OnClick(object sender, RoutedEventArgs e) { ckPulsing.IsChecked = IsPulsingMode; } private void ButtonRFOn_Click(object sender, RoutedEventArgs e) { try { if (SetRfPowerOnOffCommandDelegate != null) { SetRfPowerOnOffCommandDelegate(true); } } catch (Exception ex) { LOG.Error(ex.Message); } } private void ButtonRFOff_Click(object sender, RoutedEventArgs e) { try { if (SetRfPowerOnOffCommandDelegate != null) { SetRfPowerOnOffCommandDelegate(false); } } catch (Exception ex) { LOG.Error(ex.Message); } } } }