public void OnClock(uint tick, bool isTransmit) { labelClock.Text = (tick / 10).ToString(); if (tick < 10) { if (!markedWaterfallThisCycle) { if (null != iwaterfall) { int tag = 1; if (!String.IsNullOrEmpty(mostRecentMessageTimeTag)) { Int32.TryParse(mostRecentMessageTimeTag, out tag); } iwaterfall.MarkCurrentRaster(tag); mostRecentMessageTimeTag = null; } } markedWaterfallThisCycle = true; } else { markedWaterfallThisCycle = false; } ClockLabel cl = labelClockAnimation as ClockLabel; if (null != cl) { cl.Tenths = tick; cl.AmTransmit = isTransmit; } }
public void OnClock(uint tick, bool isTransmit) { labelClock.Text = (tick / 10).ToString(); if (tick < 10) { if (!markedWaterfallThisCycle) { if (null != iwaterfall) { var dt = System.DateTime.UtcNow; int tag = dt.Second + dt.Minute * 100 + dt.Hour * 10000; iwaterfall.MarkCurrentRaster(tag); #if DEBUG int f = (MinDecodeFrequency + MaxDecodeFrequency) / 2; annotations.AddAnnotation(tag, f, "TEST " + f.ToString(), 0); #endif } } markedWaterfallThisCycle = true; } else { markedWaterfallThisCycle = false; } ClockLabel cl = labelClockAnimation as ClockLabel; if (null != cl) { cl.Tenths = tick; cl.AmTransmit = isTransmit; } }
private void XcvrForm_Load(object sender, EventArgs e) { this.Text = String.Format("{0}-{1}", this.Text, instanceNumber); labelPower.Text = ""; ClockLabel cl = new ClockLabel(); cl.Location = labelClockAnimation.Location; cl.Size = labelClockAnimation.Size; panelRightGain.Controls.Remove(labelClockAnimation); panelRightGain.Controls.Add(cl); labelClockAnimation.Dispose(); labelClockAnimation = cl; var verticalBarLabel = new VerticalBarLabel(); verticalBarLabel.Location = labelVUmeter.Location; verticalBarLabel.Size = labelVUmeter.Size; panelRightGain.Controls.Remove(labelVUmeter); panelRightGain.Controls.Add(verticalBarLabel); labelVUmeter.Dispose(); labelVUmeter = verticalBarLabel; comboBoxnDepth.SelectedIndex = Properties.Settings.Default.Decode_ndepth - 1; checkBoxEnableAP.Checked = Properties.Settings.Default.Decode_lft8apon; panelRightGain.BackColor = panel1.BackColor = CustomColors.CommonBackgroundColor; waterfallManager = new WaterfallManager(); if (waterfallManager.OnLoad(logfile, chartSpectrum, labelWaterfall, splitContainerMain.Panel2.Controls, mainForm)) { iwaterfall.MaxHz = MaxDecodeFrequency; iwaterfall.MinHz = MinDecodeFrequency; myDemod.SetAudioSamplesCallback(null, AUDIO_BUFFER_SAMPLE_COUNT, AUDIO_BUFFER_SAMPLE_COUNT, iwaterfall.GetAudioProcessor()); buttonOptions.Enabled = true; chartSpectrum.Dispose(); chartSpectrum = null; } if (null != annotations) { checkBoxAnnotate.Checked = annotations.Visible; checkBoxAnnotate.Enabled = true; } if (null != peak) { timerVU.Enabled = true; } prevSplitter = splitContainerMain.SplitterDistance; locationToSave = Location; sizeToSave = Size; }
private void XcvrForm_Load(object sender, EventArgs e) { this.Text = String.Format("{0}-{1}", this.Text, instanceNumber); labelPower.Text = ""; ClockLabel cl = new ClockLabel(); cl.Location = labelClockAnimation.Location; cl.Size = labelClockAnimation.Size; panelRightGain.Controls.Remove(labelClockAnimation); panelRightGain.Controls.Add(cl); labelClockAnimation.Dispose(); labelClockAnimation = cl; comboBoxnDepth.SelectedIndex = Properties.Settings.Default.Decode_ndepth - 1; checkBoxEnableAP.Checked = Properties.Settings.Default.Decode_lft8apon; panelRightGain.BackColor = panel1.BackColor = CustomColors.CommonBackgroundColor; object wlDir = Microsoft.Win32.Registry.GetValue( "HKEY_LOCAL_MACHINE\\Software\\W5XD\\WriteLog\\Install", "Directory", "0"); try { // if WriteLog's DigiRiteWaterfall assembly loads, use it. const string name = "WriteLogWaterfall.dll"; string assemblyPath = System.IO.Path.GetFullPath(name); #if DEBUG // debug environment its easier to copy the waterfall into our work area #else // Use WriteLog's waterfall Control if (null != wlDir) { assemblyPath = wlDir.ToString() + "Programs\\" + name; } #endif System.Reflection.Assembly waterfallAssembly = System.Reflection.Assembly.LoadFile(assemblyPath); System.Type t = waterfallAssembly.GetType("WriteLog.Waterfall"); if (t == null) { throw new System.Exception("Waterfall type not found"); } waterfall = (Control)System.Activator.CreateInstance(t); iwaterfall = (WriteLog.IWaterfall)waterfall; } catch (System.Exception ex) { // if WriteLog is not installed, this is "normal successful completion" if (null != wlDir) { logfile.SendToLog("Xcvr exception " + ex.ToString()); // not normal } } if (null != waterfall) { // waterfall loaded. it goes where chartSpectrum was. ((System.ComponentModel.ISupportInitialize)waterfall).BeginInit(); waterfall.Location = chartSpectrum.Location; waterfall.Dock = chartSpectrum.Dock; waterfall.Size = chartSpectrum.Size; waterfall.TabIndex = chartSpectrum.TabIndex; waterfall.Name = "waterfall"; waterfall.Font = labelWaterfall.Font; // labelWaterfall is placeholder for properties waterfall.BackColor = labelWaterfall.BackColor; waterfall.ForeColor = labelWaterfall.ForeColor; waterfall.Visible = true; iwaterfall.MaxHz = MaxDecodeFrequency; iwaterfall.MinHz = MinDecodeFrequency; iwaterfall.TxFreqHz = mainForm.TxFrequency; iwaterfall.RxFreqHz = mainForm.RxFrequency; iwaterfall.onTxFreqMove = new WriteLog.OnFreqMove((int hz) => { mainForm.TxFrequency = hz; }); iwaterfall.onRxFreqMove = new WriteLog.OnFreqMove((int hz) => { mainForm.RxFrequency = hz; }); ((System.ComponentModel.ISupportInitialize)waterfall).EndInit(); splitContainerMain.Panel2.Controls.Remove(chartSpectrum); chartSpectrum.Dispose(); chartSpectrum = null; splitContainerMain.Panel2.Controls.Add(waterfall); splitContainerMain.Panel2.Controls.SetChildIndex(waterfall, 0); iwaterfall.TimeToFreqPowerOfTwo = 12; myDemod.SetAudioSamplesCallback(null, iwaterfall.TimeToFreqSampleCount, iwaterfall.TimeToFreqSampleCount, iwaterfall.GetAudioProcessor()); } prevSplitter = splitContainerMain.SplitterDistance; locationToSave = Location; sizeToSave = Size; #if DEBUG // test the waterfall's ability to change frequency resolution if (null != iwaterfall) { labelWaterfall.Visible = true; labelWaterfall.Click += new EventHandler((object o, EventArgs ev) => { iwaterfall.TimeToFreqPowerOfTwo += 1; myDemod.SetAudioSamplesCallback(null, iwaterfall.TimeToFreqSampleCount, iwaterfall.TimeToFreqSampleCount, iwaterfall.GetAudioProcessor()); }); } #endif }