public SharedMemDeviceControl(int srcChan)
        {
            InitializeComponent();

            _SampleSource = new ShmemSampleSource("FFT Display", srcChan, 1, 0);
            _SampleSource.InvertedSpectrum     = false;
            _SampleSource.SamplingRateChanged += new EventHandler(_SampleSource_SamplingRateChanged);
        }
Exemple #2
0
        public void Start(ShmemSampleSource sampleSource)
        {
            SampleSource = sampleSource;// new ShmemSampleSource("RX-FFT Audio Decoder", sampleSource.ShmemChannel.SrcChan, 1, 0); ;
            //SampleSource.InvertedSpectrum = sampleSource.InvertedSpectrum;

            AudioThreadRun   = true;
            AudioThread      = new Thread(AudioReadFunc);
            AudioThread.Name = "Audio Decoder Thread";
            AudioThread.Start();

            StartSinks();
        }
Exemple #3
0
        public NetworkDeviceControl()
        {
            InitializeComponent();

            NetShmemSink = new SharedMem(-2, 0, "Network Output Node");

            _SampleSource = new ShmemSampleSource("NetworkReader", NetShmemSink.DstChan, 1, 0);
            _SampleSource.InvertedSpectrum     = false;
            _SampleSource.SamplingRateChanged += new EventHandler(_SampleSource_SamplingRateChanged);
            _SampleSource.DataFormat           = SampleFormat;
            _SampleSource.SamplesPerBlock      = 8192;
        }
Exemple #4
0
        public HiQSDRDeviceControl()
        {
            InitializeComponent();

            NetShmemSink = new SharedMem(-2, 0, "Network Output Node");

            _SampleSource = new ShmemSampleSource("NetworkReader", NetShmemSink.DstChan, 1, 0);
            _SampleSource.InvertedSpectrum     = false;
            _SampleSource.SamplingRateChanged += new EventHandler(_SampleSource_SamplingRateChanged);
            _SampleSource.DataFormat           = DataFormat;
            _SampleSource.ForceInputRate(CurrentRate);

            Endpoint = new IPEndPoint(IPAddress.Any, 0);

            TransferThread = new Thread(TransferThreadMain);
            TransferThread.Start();

            radioAcqOff.Checked = true;
        }
Exemple #5
0
        public void Stop()
        {
            if (AudioThread != null)
            {
                if (!AudioThread.Join(100))
                {
                    AudioThread.Abort();
                }

                AudioThread = null;
            }

            StopSinks();

            if (SampleSource != null)
            {
                SampleSource.Close();
                SampleSource = null;
            }
        }
Exemple #6
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (USBRX == null)
            {
                USBRXDevice device = new USBRXDevice();

                device.ShowConsole(false);
                device.TunerCombination = USBRXDevice.eCombinationType.AR5000;

                try
                {
                    if (!device.Init())
                    {
                        ErrorMessage = "There was no USB-RX found on USB bus.";
                        return;
                    }
                }
                catch (BadImageFormatException ex)
                {
                    ErrorMessage = "Unsupported architecture.";
                    return;
                }
                catch (Exception ex)
                {
                    ErrorMessage = "Unhandled exception." + Environment.NewLine + e;
                    return;
                }

                USBRX = device;

                FilterList.NCOFreq = USBRX.Atmel.TCXOFreq;
                FilterList.UpdateFilters("Filter");
                FilterList.AddFilters("..\\..\\..\\Filter");
                FilterList.FilterSelected += new EventHandler(FilterList_FilterSelected);

                frequencySelector1.UpperLimit = USBRX.Tuner.HighestFrequency;
                frequencySelector1.LowerLimit = USBRX.Tuner.LowestFrequency;

                /* bar update thread */
                InSampleSource            = new ShmemSampleSource("RX-Radio Reader", USBRX.ShmemChannel, 1, 0);
                InSampleSource.DataFormat = ByteUtil.eSampleFormat.Direct16BitIQFixedPointLE;
                PowerUpdateThread         = new Thread(() =>
                {
                    InSampleSource.SamplesPerBlock = 1024;
                    while (true)
                    {
                        InSampleSource.Flush();
                        InSampleSource.Read();

                        double maxValue = DBTools.MaximumDb(InSampleSource.SourceSamplesI, InSampleSource.SourceSamplesQ);
                        BeginInvoke(new Action(() =>
                        {
                            powerBar.Amplitude    = (maxValue + 100) / 100;
                            powerBar.LinePosition = (maxValue + 100) / 100;
                            powerBar.Enabled      = true;
                            powerBar.Invalidate();
                        }));

                        Thread.Sleep(250);
                    }
                });
                PowerUpdateThread.Start();

                /* demodulator */
                Demod = new AudioDemodulator();
                Demod.AudioInSampleSource            = new ShmemSampleSource("RX-FFT Audio Decoder", USBRX.ShmemChannel, 1, 0);
                Demod.AudioInSampleSource.DataFormat = ByteUtil.eSampleFormat.Direct16BitIQFixedPointLE;
                Demod.AudioOutShmem = new SharedMem(-2, 1, "RX-Radio Demodulated Audio");

                lock (Demod.DemodOptions)
                {
                    Demod.DemodOptions.SoundDevice = new DXSoundDevice(Handle);
                }
                Demod.Start();

                /* demodulator dialog */
                DemodDlg = new DemodulationDialog(Demod.DemodOptions);
                DemodDlg.Show();


                /* finished */
                USBRX.CurrentMode = LibRXFFT.Libraries.eTransferMode.Stopped;

                btnOpen.Text = "Close";
            }
            else
            {
                StopThreads();
                btnOpen.Text = "Open";
            }
        }