Example #1
0
 public void IQ_Process(byte[] t)
 {
     if (dataType == 0 && BitConverter.ToInt32(t, 4) == (uint)DATA_TYPE.DT_NB_DDC) //前4字节是ID 屏蔽网络上的非命令包
     {
         int channel  = BitConverter.ToInt32(t, 16);
         int DATA_LEN = 512 * 2 * 2;
         if (NB_Filter != channel)
         {
             return;
         }
         int    NB_DataMode = BitConverter.ToInt32(t, 92);
         byte[] fData       = new byte[DATA_LEN];
         Array.Copy(t, 104, fData, 0, DATA_LEN);
         //switch ((DataAndFreq.NB_DATA_MODE)NB_DataMode)
         //{
         //    case DataAndFreq.NB_DATA_MODE.NB_MODE_IQ:
         //    case DataAndFreq.NB_DATA_MODE.NB_MODE_ISB:
         //    {
         //        Array.Copy(t, 104, fData, 0, DATA_LEN);
         //        break;
         //    }
         //    case DataAndFreq.NB_DATA_MODE.NB_MODE_AM:
         //    case DataAndFreq.NB_DATA_MODE.NB_MODE_USB:
         //    case DataAndFreq.NB_DATA_MODE.NB_MODE_CW:
         //    case DataAndFreq.NB_DATA_MODE.NB_MODE_LSB:
         //    {
         //        Array.Copy(t, 104, fData, 0, DATA_LEN / 2);
         //        break;
         //    }
         //}
         DataAndFreq nDataAndFreq = new DataAndFreq(t, fData, 1, null, null, NB_DataMode);
         m_queue.Enqueue(nDataAndFreq);
     }
     else if (dataType == 1 && BitConverter.ToInt32(t, 4) == (uint)DATA_TYPE.DT_WB_FFT)
     {
         FFT_Data fft_Data = FFT_Data.DataProcessFFT(t);
         byte[]   fData    = fft_Data?.data;
         if (fData != null && fft_extract++ == 1)
         {
             fft_extract = 0;
             DataAndFreq nDataAndFreq = new DataAndFreq(t, fData, 3, null, null);
             m_queue.Enqueue(nDataAndFreq);
         }
     }
 }
Example #2
0
            public static FFT_Data DataProcessFFT(byte[] t)
            {
                FFT_Data fft_data = null;
                int      channel  = t[12];
                short    key      = BitConverter.ToInt16(t, 8);

                if (dict.ContainsKey(key))
                {
                    if (channel >= 0 && channel < 6)
                    {
                        fft_data = dict[key].Add(t);
                        if (fft_data != null)
                        {
                            dict.Remove(key);
                        }
                    }
                    else
                    {
                        dict.Remove(key);
                    }
                }
                else
                {
                    if (channel >= 0 && channel < 6)
                    {
                        FFT_Data data = new FFT_Data(t);
                        data.Add(t);
                        dict[key] = data;
                    }
                }
                if (dict.Count > 2000)
                {
                    dict.Clear();
                }
                return(fft_data);
            }