Exemple #1
0
        /// <summary>
        ///从setup文件中获取发射机的频率
        /// </summary>
        private static double GetFrequence(RxObject rx, SetupObject setup)
        {
            List <WaveformStp> waveform = setup.waveform.allWaveforms;
            List <AntennaStp>  antenna  = setup.antenna.allAntennas;

            if (rx.at.waveformNum == -1)
            {
                for (int j = 0; j < antenna.Count; j++)
                {
                    if (rx.at.antennaNum == antenna[j].antenna)
                    {
                        rx.at.waveformNum = antenna[j].waveform;
                    }
                }
            }

            //接收机频率有用么?

            int i;

            for (i = 0; i < waveform.Count; i++)
            {
                if (rx.at.waveformNum == waveform[i].waveform)
                {
                    break;
                }
            }
            if (i > waveform.Count - 1)
            {
                LogFileManager.ObjLog.info("如果这是点状接收机,则没问题。如果是态势,则有问题");
                return(0);
            }
            return(waveform[i].CarrierFrequency);
        }
Exemple #2
0
        static string GetUanPath(RxObject rx, SetupObject setup)
        {
            //用配置文件读取程序安装位置
            List <AntennaStp> antennas = setup.antenna.allAntennas;
            int i;

            for (i = 0; i < antennas.Count; i++)
            {
                if (rx.at.antennaNum == antennas[i].antenna)
                {
                    break;
                }
            }
            //DLL路径加上相对路径
            string path;

            if (antennas[i].uan_path == null)
            {
                path = GetDllPath() + "\\" + antennas[i].type + ".uan";
            }
            else
            {
                path = ".\\project\\" + setup.name + "\\" + antennas[i].uan_path;
            }
            return(path);
        }
Exemple #3
0
        private void Process()
        {
            while (true)
            {
                if (_isAlive)
                {
                    try
                    {
                        RxObject receivedDataToProcess = null;

                        if (_receiverQueue.TryDequeue(out receivedDataToProcess))
                        {
                            using (var currentProcessor = Activator.CreateInstance(receivedDataToProcess.ProcessorType,
                                                                                   new object[] { receivedDataToProcess, _env, _log, _radios, _transmitter, _uiDispatcher }) as IPayloadProcessor)
                            {
                                currentProcessor.ProcessorAction.Invoke();
                            }
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Logger.LogToConsole($"class ReceivePoolData: {ex.Message}");
                    }
                }
                else
                {
                    break;
                }
            }
        }
Exemple #4
0
        /// <summary>
        ///从setup中获取发射频率带宽????
        /// </summary>
        private static double GetWidth(RxObject rx, SetupObject setup)
        {
            if (rx.at.waveformNum == -1)
            {
                LogFileManager.ObjLog.info("如果这是点状接收机,则没问题。如果是态势,则有问题");
                return(0);
            }
            double             temp;
            List <WaveformStp> waveform = setup.waveform.allWaveforms;
            int i;

            for (i = 0; i < waveform.Count; i++)
            {
                if (rx.at.waveformNum == waveform[i].waveform)
                {
                    break;
                }
            }
            switch (waveform[i].type)
            {
            case "Sinusoid":
                temp = waveform[i].bandwidth;
                break;

            case "RaisedCosine":
                temp = 10000000 * (1 + waveform[i].Rolloff) / (waveform[i].PulseWidth / 0.0000001);
                break;

            case "Chirp":
                temp = waveform[i].StopFrequency - waveform[i].StartFrequency;
                break;

            case "Blackman":
                temp = 60000000 / (waveform[i].PulseWidth / 0.0000001);
                break;

            case "Gaussian":
                temp = 23190000 / (waveform[i].PulseWidth / 0.0000001);
                break;

            case "GaussianDerivative":
                temp = 16480000 / (waveform[i].PulseWidth / 0.0000001);;
                break;

            case "Hamming":
                temp = 40000000 / (waveform[i].PulseWidth / 0.0000001);;
                break;

            case "RootRaisedCosine":
                temp = 10000000 * (1 + waveform[i].Rolloff) / (waveform[i].PulseWidth / 0.0000001);
                break;

            default:
                temp = 0;
                break;
            }
            return(temp / 1000000);
        }
Exemple #5
0
        /// <summary>
        /// 读取UAN(王楠)
        /// </summary>
        /// <param name="rx"></param>
        /// <param name="setup"></param>
        /// <returns></returns>
        public static string GetUan(RxObject rx, SetupObject setup)
        {
            DateTime     startime = DateTime.Now;
            StreamReader sr       = new StreamReader(GetUanPath(rx, setup));

            //string s = sr.ReadToEnd();
            if (string.IsNullOrEmpty(s2))
            {
                s2 = sr.ReadToEnd();
                DateTime finishtime = DateTime.Now;
                TimeSpan span       = finishtime - startime;
                LogFileManager.ObjLog.debug("第" + (++indexUanRead) + "次读取uan文件到内存中耗时:" + span);
            }
            sr.Close();
            return(s2);
        }
Exemple #6
0
        private void ReceiverListener()
        {
            while (true)
            {
                if (_isAlive)
                {
                    try
                    {
                        IPEndPoint rxEndPoint = null;

                        using (var _client = UdpFactory.CreateUdpRxClient(_port, ref rxEndPoint))
                        {
                            var receivedResults = _client.Receive(ref rxEndPoint);

                            var result = new RxObject()
                            {
                                Buffer        = receivedResults,
                                Date          = DateTime.Now,
                                Enabled       = true,
                                Ip            = rxEndPoint.Address.ToString(),
                                Port          = rxEndPoint.Port,
                                ProcessorType = typeof(P)
                            };

                            _rxProcessor.Add(result);

                            _consoleLog.Debug($"RX | IP: {result.Ip} | {result.Date.ToString()} | port: {result.Port} | data: {BitConverter.ToString(result.Buffer)}");
                        }
                    }
                    catch (SocketException ex)
                    {
                        _log.Error(ex);
                    }
                    catch (Exception ex)
                    {
                        _log.Error(ex);
                    }
                }
                else
                {
                    break;
                }
            }
        }
Exemple #7
0
        //    private static List<RxObject> rx;
        public static List <RxObject> RxReader(string path)
        {
            List <RxObject> rx = new List <RxObject>();
            FileInfo        fi = new FileInfo(path);

            if (!fi.Exists)
            {
                return(rx);

                throw new Exception("输入路径不存在");
            }

            string[] paths = path.Split(new char[] { '.' });
            if (paths.Length < 1 || !paths[paths.Length - 1].Equals("rx"))
            {
                return(rx);

                throw new Exception("这不是一个rx文件");
            }

            StreamReader sr = new StreamReader(path, System.Text.Encoding.UTF8);
            string       s  = sr.ReadToEnd();

            sr.Close();
            string[] strseperator = new string[] { "begin_<points>", "begin_<grid>", "begin_<situation>" };
            string[] result       = null;
            result = s.Split(strseperator, StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < result.Length; i++)
            {
                //result[i]=result[i].Trim();
                RxObject temp = new RxObject(result[i]);
                rx.Add(temp);
            }
            return(rx);
        }
Exemple #8
0
 public void Add(RxObject payload)
 {
     _receiverQueue.Enqueue(payload);
 }