/// <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); }
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); }
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; } } }
/// <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); }
/// <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); }
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; } } }
// 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); }
public void Add(RxObject payload) { _receiverQueue.Enqueue(payload); }