123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace XdCxRhDW.Api
- {
- public class CorResult
- {
- /// <summary>
- /// 起始样点
- /// </summary>
- public int Start { get; set; }
- /// <summary>
- /// 样点长度
- /// </summary>
- public int Length { get; set; }
- /// <summary>
- /// 相关时差,单位:us
- /// </summary>
- public double Dto { get; set; }
- /// <summary>
- /// 相关频差:单位:Hz
- /// </summary>
- public double Dfo { get; set; }
- /// <summary>
- /// 相关信噪比,单位:db
- /// </summary>
- public double Snr { get; set; }
- /// <summary>
- /// 计算耗时,毫秒
- /// </summary>
- public double UseTime { get; set; }
- /// <summary>
- /// 是否有效
- /// </summary>
- public bool IsValid { get; set; }
- /// <summary>
- /// 相关峰列表
- /// </summary>
- public List<XgfItem> XgfList { get; set; } = new List<XgfItem>();
- public string Message { get; set; } = string.Empty;
- /// <summary>
- /// 参估结果
- /// </summary>
- public CorResult() { }
- public static CorResult FromLine(string line, double snr)
- {
- if (string.IsNullOrWhiteSpace(line)) throw new ArgumentNullException(nameof(line));
- CorResult corResult = new CorResult();
- var cafItems = line.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
- corResult.Message = line;
- if (cafItems.Length == 0) return corResult;
- int i = 0;
- var cafitem = cafItems[i];
- var resitems = cafitem.Split(',');
- if (resitems.Length != 6) return corResult;
- corResult.Start = int.Parse(resitems[0]);
- corResult.Length = int.Parse(resitems[1]);
- corResult.Dto = double.Parse(resitems[2]);
- corResult.Dfo = double.Parse(resitems[3]);
- corResult.Snr = double.Parse(resitems[4]);
- corResult.UseTime = double.Parse(resitems[5]);
- corResult.IsValid = corResult.Snr > snr;
- if (cafItems.Length > 1)
- {
- for (i = 1; i < cafItems.Length; i++)
- {
- resitems = cafItems[i].Split(',');
- XgfItem xgfItem = new XgfItem()
- {
- Dto = double.Parse(resitems[0]),
- Dfo = double.Parse(resitems[1]),
- Snr = double.Parse(resitems[2])
- };
- corResult.XgfList.Add(xgfItem);
- }
- }
- return corResult;
- }
- public static CorResult[] FromLines(string result, double snr)
- {
- if (string.IsNullOrWhiteSpace(result))
- return new CorResult[0];
- var lines = result.Split(new string[] {"\r","\n"}, StringSplitOptions.RemoveEmptyEntries);
- CorResult[] results = new CorResult[lines.Length];
- for (int i = 0; i < lines.Length; i++)
- {
- results[i] = FromLine(lines[i], snr);
- }
- return results;
- }
- }
- public class XgfItem
- {
- public XgfItem()
- {
- }
- public XgfItem(double dto, double dfo, double snr)
- {
- Dto = dto;
- Dfo = dfo;
- Snr = snr;
- }
- /// <summary>
- /// 时差(us)
- /// </summary>
- public double Dto { get; set; }
- /// <summary>
- /// 频差(Hz)
- /// </summary>
- public double Dfo { get; set; }
- /// <summary>
- /// 信噪比(dB)
- /// </summary>
- public double Snr { get; set; }
- }
- }
|