using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Windows.Forms; using Uestc.Auto6.Dso.ComModel; using Uestc.Auto6.Dso.Core; using Uestc.Auto6.Dso.Core.Tools; using Uni_Trend.MSO7000X.Common.Default; using Uni_Trend.MSO7000X.Common.Helper; using Uni_Trend.MSO7000X.UserControls.Style; namespace Uestc.Auto6.Dso.U2.AWG { public partial class AWGPage : UserControl, IWfmGenView, IStylize { private Boolean _ArgToCtrl; public AWGPage() { InitializeComponent(); Init(); } private void Init() { NebFreqControlInit(); NebAmpControlInit(); Neb1LevelControlInit(); Neb0LevelControlInit(); NebPeriodControlInit(); NebOffsetControlInit(); NebDutyControlInit(); NebAmpDepthControlInit(); NebModFreqControlInit(); NebFreqBiasControlInit(); NebPhaseBiasControlInit(); NebSweepStartFreqControlInit(); NebSweepEndFreqControlInit(); NebSweepDurationControlInit(); NebNoiseControlInit(); NebPhaseControlInit(); } [Browsable(false)] public StyleFlag StyleFlags { get; set; } = StyleFlag.None; [Description("是否风格化"), Browsable(true), DefaultValue(typeof(Boolean)), Category(Const.Category)] public Boolean StylizeFlag { get; set; } = true; public ArbWfmGenPrsnt Presenter { get => (ArbWfmGenPrsnt)(ParentForm as IWfmGenView).Presenter; set => (ParentForm as IWfmGenView).Presenter = value; } IBadge IView.Presenter { get => Presenter; set => Presenter = (ArbWfmGenPrsnt)value; } public void UpdateView(Object prsnt, String propertyName) { if (String.IsNullOrEmpty(propertyName)) { UpdateView(); return; } _ArgToCtrl = true; switch (propertyName) { case nameof(Presenter.Mode): RdoMode.ChoosedButtonIndex = Presenter.Active ? (Int32)Presenter.Mode + 1 : 0; ChangeCtrlState(); break; case nameof(Presenter.WfmType): ChangeCtrlState(); CbxSignal.SelectedValue = Presenter.WfmType; NebFreq.UpdateValueString(); NebPeriod.UpdateValueString(); NebAmp.UpdateValueString(); NebOffset.UpdateValueString(); Neb0Level.UpdateValueString(); Neb1Level.UpdateValueString(); NebDuty.UpdateValueString(); break; case nameof(Presenter.Frequency): NebFreq.UpdateValueString(); NebPeriod.UpdateValueString(); break; case nameof(Presenter.Amplitude): case nameof(Presenter.Offset): case nameof(Presenter.LowLevel): case nameof(Presenter.HighLevel): NebAmp.UpdateValueString(); NebOffset.UpdateValueString(); Neb0Level.UpdateValueString(); Neb1Level.UpdateValueString(); break; case nameof(Presenter.Duty): NebDuty.UpdateValueString(); break; case nameof(Presenter.ModMethod): CbxModMethod.SelectedIndex = (Int32)Presenter.ModMethod; ChangeCtrlState(); break; case nameof(Presenter.ModulatedWfm): CbxModulatedSignal.SelectedValue = Presenter.ModulatedWfm; ChangeCtrlState(); NebModFreq.UpdateValueString(); break; case nameof(Presenter.RampType): RdoModRamp.ChoosedButtonIndex = (Int32)Presenter.RampType; break; case nameof(Presenter.ModFreq): NebModFreq.UpdateValueString(); break; case nameof(Presenter.AmpDepth): NebAmpDepth.UpdateValueString(); break; case nameof(Presenter.FreqBias): NebFreqBias.UpdateValueString(); break; case nameof(Presenter.PhaseBias): NebPhaseBias.UpdateValueString(); break; case nameof(Presenter.SweepStartFreq): NebSweepStartFreq.UpdateValueString(); break; case nameof(Presenter.SweepEndFreq): NebSweepEndFreq.UpdateValueString(); break; case nameof(Presenter.SweepDuration): NebSweepDuration.UpdateValueString(); break; case nameof(Presenter.SweepType): CbxSweepType.SelectedIndex = (Int32)Presenter.SweepType; break; case nameof(Presenter.Phase): NebPhase.UpdateValueString(); break; case nameof(Presenter.Noise): NebNoise.UpdateValueString(); break; case nameof(Presenter.Impedance): RdoImpedance.ChoosedButtonIndex = (Int32)Presenter.Impedance; NebAmp.UpdateValueString(); NebOffset.UpdateValueString(); Neb0Level.UpdateValueString(); Neb1Level.UpdateValueString(); break; case nameof(Presenter.Opposition): ChkOpposition.Checked = Presenter.Opposition; break; } _ArgToCtrl = false; } private void UpdateView() { if (!DesignMode) { _ArgToCtrl = true; ChangeCtrlState(); RdoMode.ChoosedButtonIndex = Presenter.Active ? (Int32)Presenter.Mode + 1 : 0; CbxSignal.SelectedValue = Presenter.WfmType; NebFreq.UpdateValueString(); NebPeriod.UpdateValueString(); NebAmp.UpdateValueString(); NebOffset.UpdateValueString(); Neb0Level.UpdateValueString(); Neb1Level.UpdateValueString(); NebDuty.UpdateValueString(); CbxModMethod.SelectedIndex = (Int32)Presenter.ModMethod; CbxModulatedSignal.SelectedValue = Presenter.ModulatedWfm; RdoModRamp.ChoosedButtonIndex = (Int32)Presenter.RampType; NebModFreq.UpdateValueString(); NebFreqBias.UpdateValueString(); NebAmpDepth.UpdateValueString(); NebPhaseBias.UpdateValueString(); CbxSweepType.SelectedIndex = (Int32)Presenter.WfmType; NebSweepStartFreq.UpdateValueString(); NebSweepEndFreq.UpdateValueString(); NebSweepDuration.UpdateValueString(); ChkOpposition.Checked = Presenter.Opposition; RdoImpedance.ChoosedButtonIndex = (Int32)Presenter.Impedance; NebNoise.UpdateValueString(); NebPhase.UpdateValueString(); _ArgToCtrl = false; } } protected override void OnLoad(EventArgs e) { base.OnLoad(e); LoadModMethodList(); LoadModulatedSignalList(); UpdateView(); } private void LoadSignalList(IEnumerable types) { CbxSignal.DataSource = types.Select(x => new KeyValuePair(EnumEx.GetDescription(x), x)).ToList(); CbxSignal.DisplayMember = "Key"; CbxSignal.ValueMember = "Value"; CbxSignal.SelectedValueChanged += (_, _) => { if (!_ArgToCtrl) { Presenter.WfmType = (ArbWfmType)CbxSignal.SelectedValue; } }; } private void ChangeCtrlState() { BtnArbitrary.Visible = LblArbitrary.Visible = Presenter.WfmType == ArbWfmType.Arbitrary; LblDuty.Visible = NebDuty.Visible = Presenter.WfmType == ArbWfmType.Pulse || Presenter.WfmType == ArbWfmType.Ramp; BtnModArb.Visible = LblModArb.Visible = Presenter.ModulatedWfm == ArbWfmType.Arbitrary; LblModRamp.Visible = RdoModRamp.Visible = Presenter.ModulatedWfm == ArbWfmType.Ramp; LblPhase.Visible = NebPhase.Visible = Presenter.WfmType != ArbWfmType.Noise || Presenter.WfmType == ArbWfmType.DC; LblNoise.Visible = NebNoise.Visible = Presenter.WfmType != ArbWfmType.Noise; LblAmplitude.Visible = NebAmp.Visible = Lbl1Level.Visible = Neb1Level.Visible = Lbl0Level.Visible = Neb0Level.Visible = Presenter.WfmType != ArbWfmType.DC; switch (Presenter.Mode) { case WfmGenMode.Continuous: LoadSignalList(Enum.GetValues()); break; case WfmGenMode.Modulation: LoadSignalList(Presenter.CarrierSignalList); break; case WfmGenMode.Sweep: LoadSignalList(Presenter.SweepSignalList); break; } switch (Presenter.Mode) { case WfmGenMode.Modulation: PnlModOption.Visible = true; PnlSweepOption.Visible = false; TlpAwg.RowStyles[1].Height = 100; TlpAwg.RowStyles[2].Height = 0; break; case WfmGenMode.Sweep: PnlModOption.Visible = false; PnlSweepOption.Visible = true; TlpAwg.RowStyles[2].Height = 100; TlpAwg.RowStyles[1].Height = 0; break; default: PnlModOption.Visible = false; PnlSweepOption.Visible = false; break; } switch (Presenter.ModMethod) { case WfmModMethod.FSK: LblModFreq.Text = (LblModFreq.Tag as String).Split('#')[1]; break; case WfmModMethod.FM: LblModFreq.Text = (LblModFreq.Tag as String).Split('#')[0]; LblModParameter.Text = (LblModParameter.Tag as String).Split('#')[0]; NebFreqBias.Visible = true; NebAmpDepth.Visible = false; NebPhaseBias.Visible = false; NebFreqBias.UpdateValueString(); break; case WfmModMethod.AM: LblModFreq.Text = (LblModFreq.Tag as String).Split('#')[0]; LblModParameter.Text = (LblModParameter.Tag as String).Split('#')[1]; NebFreqBias.Visible = false; NebAmpDepth.Visible = true; NebPhaseBias.Visible = false; NebAmpDepth.UpdateValueString(); break; case WfmModMethod.PM: LblModFreq.Text = (LblModFreq.Tag as String).Split('#')[0]; LblModParameter.Text = (LblModParameter.Tag as String).Split('#')[2]; NebFreqBias.Visible = false; NebAmpDepth.Visible = false; NebPhaseBias.Visible = true; NebPhaseBias.UpdateValueString(); break; } } private void LoadModMethodList() { CbxModMethod.DataSource = Enum.GetValues().Select(w => new KeyValuePair(w.ToString(), w)).ToList(); CbxModMethod.DisplayMember = "Key"; CbxModMethod.ValueMember = "Value"; CbxModMethod.SelectedIndexChanged += (_, _) => { if (!_ArgToCtrl) { Presenter.ModMethod = (WfmModMethod)CbxModMethod.SelectedIndex; } }; } private void LoadModulatedSignalList() { CbxModulatedSignal.DataSource = Presenter.ModulatedSignalList.Select(w => new KeyValuePair(w.GetAlias(), w)).ToList(); CbxModulatedSignal.DisplayMember = "Key"; CbxModulatedSignal.ValueMember = "Value"; CbxModulatedSignal.SelectedValueChanged += (_, _) => { if (!_ArgToCtrl) { Presenter.ModulatedWfm = (ArbWfmType)CbxModulatedSignal.SelectedValue; } }; } public void NebAmpDepthControlInit() { NebAmpDepth.AddClicked = (_, e) => Presenter.AdjAmpDepth(e.Step); NebAmpDepth.SubClicked = (_, e) => Presenter.AdjAmpDepth(e.Step); NebAmpDepth.StringFormatFunc = (_) => AmpDepthToString(); NebAmpDepth.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); nkf.NumberKeyboard.UseSI = false; var onokclickeventaction = new Action((data) => { Presenter.AmpDepth = (Int32)Math.Round(data); }); nkf.SetKeyBoardValue(LblModParameter.Text, "%", 12, onokclickeventaction, Presenter.AmpDepth, Presenter.MaxAmpDepth, Presenter.MinAmpDepth); nkf.ShowDialogByPosition(); }; } public void NebPhaseBiasControlInit() { NebPhaseBias.AddClicked = (_, e) => Presenter.AdjPhaseBias(e.Step); NebPhaseBias.SubClicked = (_, e) => Presenter.AdjPhaseBias(e.Step); NebPhaseBias.StringFormatFunc = (_) => PhaseBiasToString(); NebPhaseBias.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); nkf.NumberKeyboard.UseSI = false; var onokclickeventaction = new Action((data) => Presenter.PhaseBias = (Int32)Math.Round(data * 100)); nkf.SetKeyBoardValue(LblModParameter.Text, "°", 12, onokclickeventaction, Presenter.Phase / 100.0, Presenter.MaxPhase / 100.0, Presenter.MinPhase / 100.0); nkf.ShowDialogByPosition(); }; } public void NebFreqBiasControlInit() { NebFreqBias.AddClicked = (_, e) => Presenter.AdjFreqBias(e.Step); NebFreqBias.SubClicked = (_, e) => Presenter.AdjFreqBias(e.Step); NebFreqBias.StringFormatFunc = (_) => FreqBiasToString(); NebFreqBias.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclickeventaction = new Action((data) => Presenter.FreqBias = (Int64)Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Micro)); nkf.SetKeyBoardValue(LblModParameter.Text, "Hz", 12, onokclickeventaction, Quantity.ConvertByPrefix(Presenter.FreqBias, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MaxFreqBias, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MinFreqBias, Prefix.Micro)); nkf.ShowDialogByPosition(); }; } public void NebModFreqControlInit() { NebModFreq.AddClicked = (_, e) => Presenter.AdjModFreq(e.Step); NebModFreq.SubClicked = (_, e) => Presenter.AdjModFreq(e.Step); NebModFreq.StringFormatFunc = (_) => ModFreqToString(); NebModFreq.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclickeventaction = new Action((data) => Presenter.ModFreq = (Int64)Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Micro)); nkf.SetKeyBoardValue(LblModFreq.Text, "Hz", 12, onokclickeventaction, Quantity.ConvertByPrefix(Presenter.ModFreq, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MaxModFreq, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MinModFreq, Prefix.Micro)); nkf.ShowDialogByPosition(); }; } private void NebNoiseControlInit() { NebNoise.AddClicked = (_, e) => Presenter.AdjNoise(e.Step); NebNoise.SubClicked = (_, e) => Presenter.AdjNoise(e.Step); NebNoise.StringFormatFunc = (_) => NoiseToString(); NebNoise.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.Noise = Convert.ToInt32(data * 100.0)); nkf.SetKeyBoardValue(LblNoise.Text, "%", 12, onokclick, Presenter.Noise / 100.0, Presenter.MaxNoise / 100.0, Presenter.MinNoise / 100.0); nkf.ShowDialogByPosition(); }; } private void NebPhaseControlInit() { NebPhase.AddClicked = (_, e) => Presenter.AdjPhase(e.Step); NebPhase.SubClicked = (_, e) => Presenter.AdjPhase(e.Step); NebPhase.StringFormatFunc = (_) => PhaseToString(); NebPhase.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.Phase = Convert.ToInt32(data * 100.0)); nkf.SetKeyBoardValue(LblPhase.Text, "°", 12, onokclick, (Presenter.Opposition ? (Presenter.Phase + Presenter.HalfPhase) % 36000 : Presenter.Phase) / 100.0, Presenter.MaxPhase / 100.0, Presenter.MinPhase / 100.0); nkf.ShowDialogByPosition(); }; } private void NebFreqControlInit() { NebFreq.AddClicked = (_, e) => Presenter.AdjFrequency(e.Step); NebFreq.SubClicked = (_, e) => Presenter.AdjFrequency(e.Step); NebFreq.StringFormatFunc = (_) => FreqToString(); NebFreq.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.Frequency = Convert.ToInt64(Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Micro))); nkf.SetKeyBoardValue(LblFreq.Text, "Hz", 12, onokclick, Quantity.ConvertByPrefix(Presenter.Frequency, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MaxFrequency, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MinFrequency, Prefix.Micro)); nkf.ShowDialogByPosition(); }; } private void NebPeriodControlInit() { NebPeriod.AddClicked = (_, e) => Presenter.AdjPeriod(e.Step); NebPeriod.SubClicked = (_, e) => Presenter.AdjPeriod(e.Step); NebPeriod.StringFormatFunc = (_) => PeriodToString(); NebPeriod.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.Frequency = (Int64)Math.Round(Quantity.ConvertByPrefix(Math.Round(1000 / data), Prefix.Empty, Prefix.Milli))); nkf.SetKeyBoardValue(LblPeriod.Text, "s", 12, onokclick, Quantity.ConvertByPrefix(1.0 / Presenter.Frequency, Prefix.Mega), Quantity.ConvertByPrefix(1.0 / Presenter.MinFrequency, Prefix.Mega), Quantity.ConvertByPrefix(1.0 / Presenter.MaxFrequency, Prefix.Mega)); nkf.ShowDialogByPosition(); }; } private void NebDutyControlInit() { NebDuty.AddClicked = (_, e) => Presenter.AdjDuty(e.Step); NebDuty.SubClicked = (_, e) => Presenter.AdjDuty(e.Step); NebDuty.StringFormatFunc = (_) => DutyToString(); NebDuty.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.Duty = Convert.ToInt32(data * 100.0)); nkf.SetKeyBoardValue(LblDuty.Text, "%", 12, onokclick, Presenter.Duty / 100.0, Presenter.MaxDuty / 100.0, Presenter.MinDuty / 100.0); nkf.ShowDialogByPosition(); }; } private void NebAmpControlInit() { NebAmp.AddClicked = (_, e) => Presenter.AdjAmplitude(e.Step); NebAmp.SubClicked = (_, e) => Presenter.AdjAmplitude(e.Step); NebAmp.StringFormatFunc = (_) => AmpToString(); NebAmp.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.Amplitude = Convert.ToInt32(Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Milli))); nkf.SetKeyBoardValue(LblAmplitude.Text, "V", 12, onokclick, Quantity.ConvertByPrefix(Presenter.Amplitude, Prefix.Milli, Prefix.Empty), Quantity.ConvertByPrefix(Presenter.MaxAmplitude, Prefix.Milli, Prefix.Empty), Quantity.ConvertByPrefix(Presenter.MinAmplitude, Prefix.Milli, Prefix.Empty)); nkf.ShowDialogByPosition(); }; } private void Neb1LevelControlInit() { Neb1Level.AddClicked = (_, e) => Presenter.AdjHighLevel(e.Step); Neb1Level.SubClicked = (_, e) => Presenter.AdjHighLevel(e.Step); Neb1Level.StringFormatFunc = (_) => HighLevelToString(); Neb1Level.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.HighLevel = Convert.ToInt32(Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Milli))); nkf.SetKeyBoardValue(Lbl1Level.Text, "V", 12, onokclick, Quantity.ConvertByPrefix(Presenter.HighLevel, Prefix.Milli, Prefix.Empty), Quantity.ConvertByPrefix(Presenter.MaxOffset, Prefix.Milli, Prefix.Empty), Quantity.ConvertByPrefix(Presenter.MinOffset, Prefix.Milli, Prefix.Empty)); nkf.ShowDialogByPosition(); }; } private void Neb0LevelControlInit() { Neb0Level.AddClicked = (_, e) => Presenter.AdjLowLevel(e.Step); Neb0Level.SubClicked = (_, e) => Presenter.AdjLowLevel(e.Step); Neb0Level.StringFormatFunc = (_) => LowLevelToString(); Neb0Level.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.LowLevel = Convert.ToInt32(Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Milli))); nkf.SetKeyBoardValue(Lbl0Level.Text, "V", 12, onokclick, Quantity.ConvertByPrefix(Presenter.LowLevel, Prefix.Milli, Prefix.Empty), Quantity.ConvertByPrefix(Presenter.MaxOffset, Prefix.Milli, Prefix.Empty), Quantity.ConvertByPrefix(Presenter.MinOffset, Prefix.Milli, Prefix.Empty)); nkf.ShowDialogByPosition(); }; } private void NebOffsetControlInit() { NebOffset.AddClicked = (_, e) => Presenter.AdjOffset(e.Step); NebOffset.SubClicked = (_, e) => Presenter.AdjOffset(e.Step); NebOffset.StringFormatFunc = (_) => OffsetToString(); NebOffset.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclick = new Action((data) => Presenter.Offset = (Int32)Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Milli)); nkf.SetKeyBoardValue(LblOffset.Text, "V", 12, onokclick , Quantity.ConvertByPrefix(Presenter.Offset, Prefix.Milli, Prefix.Empty) , Quantity.ConvertByPrefix(Presenter.MaxOffset, Prefix.Milli, Prefix.Empty) , Quantity.ConvertByPrefix(Presenter.MinOffset, Prefix.Milli, Prefix.Empty)); nkf.ShowDialogByPosition(); }; } private void NebSweepStartFreqControlInit() { NebSweepStartFreq.AddClicked = (_, e) => Presenter.AdjSweepStartFreq(e.Step); NebSweepStartFreq.SubClicked = (_, e) => Presenter.AdjSweepStartFreq(e.Step); NebSweepStartFreq.StringFormatFunc = (_) => SweepStartFreqToString(); NebSweepStartFreq.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclickeventaction = new Action((data) => Presenter.SweepStartFreq = Convert.ToInt64(Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Micro))); nkf.SetKeyBoardValue(LblSweepStartFreq.Text, "Hz", 12, onokclickeventaction, Quantity.ConvertByPrefix(Presenter.SweepStartFreq, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MaxSweepFreq, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MinSweepFreq, Prefix.Micro)); nkf.ShowDialogByPosition(); }; } private void NebSweepEndFreqControlInit() { NebSweepEndFreq.AddClicked = (_, e) => Presenter.AdjSweepEndFreq(e.Step); NebSweepEndFreq.SubClicked = (_, e) => Presenter.AdjSweepEndFreq(e.Step); NebSweepEndFreq.StringFormatFunc = (_) => SweepEndFreqToString(); NebSweepEndFreq.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclickeventaction = new Action((data) => Presenter.SweepEndFreq = Convert.ToInt64(Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Micro))); nkf.SetKeyBoardValue(LblSweepEndFreq.Text, "Hz", 12, onokclickeventaction, Quantity.ConvertByPrefix(Presenter.SweepEndFreq, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MaxSweepFreq, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MinSweepFreq, Prefix.Micro)); nkf.ShowDialogByPosition(); }; } private void NebSweepDurationControlInit() { NebSweepDuration.AddClicked = (_, e) => Presenter.AdjSweepDuration(e.Step); NebSweepDuration.SubClicked = (_, e) => Presenter.AdjSweepDuration(e.Step); NebSweepDuration.StringFormatFunc = (_) => SweepDurationToString(); NebSweepDuration.EditValueChicked = (_, _) => { var nkf = new NumberKeybordForm().UniformInitKeyBoard(this); //nkf.NumberKeyboard.UseSI = false; var onokclickeventaction = new Action((data) => Presenter.SweepDuration = Convert.ToInt64(Quantity.ConvertByPrefix(data, Prefix.Empty, Prefix.Micro))); nkf.SetKeyBoardValue(LblSweepDuration.Text, "s", 12, onokclickeventaction, Quantity.ConvertByPrefix(Presenter.SweepDuration, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MaxSweepDuration, Prefix.Micro), Quantity.ConvertByPrefix(Presenter.MinSweepDuration, Prefix.Micro)); nkf.ShowDialogByPosition(); }; } private String FreqToString() { //return SIHelper.ValueChangeToSI(Presenter.Frequency / 1000_000f, 3, "Hz"); //return new Quantity(Presenter.Frequency, Prefix.Micro, QuantityUnit.Hertz).ToString("##0.########", true, 11); return new Quantity(Presenter.Frequency, Prefix.Micro, QuantityUnit.Hertz).ToString(8, -1, true); } private String PeriodToString() { //return SIHelper.ValueChangeToSI(1E15 / Presenter.Frequency / 1000_000_000f, 3, "s"); //return new Quantity(1.0 / Presenter.Frequency, Prefix.Mega, QuantityUnit.Second).ToString("##0.########", true, 11); return new Quantity(1.0 / Presenter.Frequency, Prefix.Mega, QuantityUnit.Second).ToString(8, -1, true); } private String AmpToString() { //return SIHelper.ValueChangeToSI(Presenter.Amplitude / 1000f, 3, "V"); return new Quantity(Presenter.Amplitude, Prefix.Milli, QuantityUnit.Voltage).ToString("##0.###", true, 7); } private String OffsetToString() { //return Presenter.Offset == 0 ? "0.00V" : SIHelper.ValueChangeToSI(Presenter.Offset / 1000f, 3, "V"); return new Quantity(Presenter.Offset, Prefix.Milli, QuantityUnit.Voltage).ToString("##0.###", true, 7); } private String HighLevelToString() { //return Presenter.HighLevel == 0 ? "0.00V" : SIHelper.ValueChangeToSI(Presenter.HighLevel / 1000f, 3, "V"); return new Quantity(Presenter.HighLevel, Prefix.Milli, QuantityUnit.Voltage).ToString("##0.###", true, 7); } private String LowLevelToString() { //return Presenter.LowLevel == 0 ? "0.00V" : SIHelper.ValueChangeToSI(Presenter.LowLevel / 1000f, 3, "V"); return new Quantity(Presenter.LowLevel, Prefix.Milli, QuantityUnit.Voltage).ToString("##0.###", true, 7); } private String DutyToString() { return (Presenter.Duty / 100.0).ToString(@"#0.00\%"); } private String PhaseToString() { //return $"{(Presenter.Opposition ? (Presenter.Phase + Presenter.HalfPhase) % 36000 : Presenter.Phase) / 100f:F2}°"; return (Presenter.Phase / 100.0).ToString("##0.00°"); } private String NoiseToString() { return (Presenter.Noise / 100.0).ToString(@"##0.00\%"); } private String ModFreqToString() { //return SIHelper.ValueChangeToSI(Presenter.ModFreq / 1000_000f, 3, "Hz"); return new Quantity(Presenter.ModFreq, Prefix.Micro, "Hz").ToString("###,###,##0.#", true, 11); } private String FreqBiasToString() { //return SIHelper.ValueChangeToSI(Presenter.FreqBias / 1000_000f, 3, "Hz"); return new Quantity(Presenter.FreqBias, Prefix.Micro, "Hz").ToString("###,###,##0.#", true, 11); } private String PhaseBiasToString() { //return $"{Presenter.PhaseBias / 1000_000f:F2}°"; return (Presenter.PhaseBias / 100.0).ToString("##0.00°"); } private String AmpDepthToString() { //return $"{Presenter.AmpDepth:F2}%"; return Presenter.AmpDepth.ToString(@"#0\%"); } private String SweepStartFreqToString() { //return SIHelper.ValueChangeToSI(Presenter.SweepStartFreq / 1000_000f, 0, "Hz"); return new Quantity(Presenter.Frequency, Prefix.Micro, QuantityUnit.Hertz).ToString("###,###,##0.#", true, 11); } private String SweepDurationToString() { //return SIHelper.ValueChangeToSI(Presenter.SweepDuration / 1000_000f, 0, "s"); return new Quantity(Presenter.SweepDuration, Prefix.Micro, QuantityUnit.Second).ToString("###,###,##0.###", true, 13); } private String SweepEndFreqToString() { //return SIHelper.ValueChangeToSI(Presenter.SweepEndFreq / 1000_000f, 0, "Hz"); return new Quantity(Presenter.SweepEndFreq, Prefix.Micro, QuantityUnit.Hertz).ToString("###,###,##0.#", true, 11); } private void RdoMode_IndexChanged(object sender, EventArgs e) { if (!_ArgToCtrl) { if (RdoMode.ChoosedButtonIndex == 0) { Presenter.Active = false; } else { Presenter.Mode = (WfmGenMode)RdoMode.ChoosedButtonIndex - 1; Presenter.Active = true; } } } private void RdoImpedance_IndexChanged(object sender, EventArgs e) { if (!_ArgToCtrl) { Presenter.Impedance = (WfmGenImpedance)RdoImpedance.ChoosedButtonIndex; } } private void ChkOpposition_CheckedChangedEvent_1(object sender, EventArgs e) { if (!_ArgToCtrl) { Presenter.Opposition = ChkOpposition.Checked; } } private void CbxSweepType_SelectedIndexChanged(object sender, EventArgs e) { if (!_ArgToCtrl) { Presenter.SweepType = (SweepType)CbxSweepType.SelectedIndex; } } private void RdoModRamp_IndexChanged(object sender, EventArgs e) { if (!_ArgToCtrl) { Presenter.RampType = (WfmRampType)RdoModRamp.ChoosedButtonIndex; } } private void BtnArbitrary_Click(object sender, EventArgs e) { FileBrowserForm rdform = FileBrowserForm.Instance; rdform.SetFileFilter(Enum.GetValues().Where(x => x == WfmFormat.Binary)); rdform.SetPath(Constants.WFM_DEF_PATH); if (rdform.ShowDialogByEvent() == DialogResult.Yes) { Presenter.FilePath = rdform.FullFileName; } } //private void NebNumFocused(TouchNeb touchNeb, Boolean focused = true) //{ // //todo // return; // if (InvokeRequired) // { // BeginInvoke(() => NebNumFocused(touchNeb, focused)); // } // else // { // var BorderFocusedColor = Color.FromArgb(145, 145, 145); // var ForeFocusedColor = Color.FromArgb(200, 200, 200); // var ForeColor = Color.FromArgb(185, 192, 199); // var BorderColor = Color.FromArgb(53, 54, 58); // touchNeb.BorderColor = focused ? BorderFocusedColor : BorderColor; // touchNeb.BorderThickness = focused ? 1 : 0; // touchNeb.ForeColor = focused ? ForeFocusedColor : ForeColor; // touchNeb.FocusBoederColor = focused ? BorderFocusedColor : BorderColor; // if (focused) // { // _FocusedNebNumObj = touchNeb; // } // } //} } }