public bool PSKStart() { bool result = false; fft = new Fourier(); iq_balancer = new IQBalancer(MainForm); try { if (Init()) { run_thread = true; PSKThread1 = new Thread(new ThreadStart(PSK_ThreadRX1)); PSKThread1.Name = "PSK Thread RX1"; PSKThread1.Priority = ThreadPriority.Normal; PSKThread1.IsBackground = true; PSKThread1.Start(); PSKThread2 = new Thread(new ThreadStart(PSK_ThreadRX2)); PSKThread2.Name = "PSK Thread RX2"; PSKThread2.Priority = ThreadPriority.Normal; PSKThread2.IsBackground = true; PSKThread2.Start(); result = true; } return result; } catch (Exception ex) { Debug.Write(ex.ToString()); return false; } }
public void PSKStop() { try { audio_event.Set(); run_transmiter = false; run_thread = false; Thread.Sleep(100); AudioEvent1.Set(); AudioEvent2.Set(); Thread.Sleep(100); iq_balancer = null; System.GC.Collect(); } catch (Exception ex) { Debug.Write(ex.ToString()); } }
public PSK(CWExpert form) { MainForm = form; AudioEvent1 = new AutoResetEvent(false); AudioEvent2 = new AutoResetEvent(false); iq_buffer = new ComplexF[2048]; ch1_buffer = new float[2048]; ch2_buffer = new float[2048]; buffer_ch1 = new float[2048]; buffer_ch2 = new float[2048]; display_timer = new HiPerfTimer(); trx = new TRX(); trx.modem = new psk[MODEM_NR]; trx.outbuf = new ComplexF[819]; trx.outbuf1 = new ComplexF[8192]; trx.mon_outbuf = new ComplexF[8192]; iq_balancer = new IQBalancer(form); cs_audio = (void*)0x0; cs_audio = NewCriticalSection(); if (InitializeCriticalSectionAndSpinCount(cs_audio, 0x00000080) == 0) { Debug.WriteLine("CriticalSection Failed"); } fft = new Fourier(); }