using System; using System.Collections.Generic; using System.Text; using System.Text.Json.Serialization; namespace Ips.Library.Entity { /// /// 采集参数 /// public class AdcOptions { /// /// 采集卡类型 /// public AdCardType CardType { get; set; } = AdCardType.QFCarder; /// /// 开始时间 /// public DateTime StartTime { get; set; } = DateTime.MinValue; /// /// 时钟类型 /// public AdClockType ClockType { get; set; } = AdClockType.In; /// /// 触发模式 /// public AdTriggerMode TriggerMode { get; set; } = AdTriggerMode.In; /// /// DDC频率(Hz) /// public int DdcFreq { get; set; } /// /// 时钟频率(Hz) /// public long ClockFreq { get; set; } private int _mutil; /// /// 抽取倍数 /// public int Mutil { get => _mutil; set => _mutil = value <= 0 ? 1 : value; } /// /// 通道数量 /// public int ChCount { get; set; } /// /// 采集时长 /// public int TimeLen { get; set; } /// /// 存储路径 /// public string StorePath { get; set; } /// /// 是否实数 /// public bool Real { get; set; } /// /// 使用GPU信道化 /// public bool UseGpuDdc { get; set; } /// /// 采集卡通道信息 /// public List Channels { get; private set; } = new List(); public AdcChOptions SetChannel(string siteCode, string adcCode, int chNum, long centerFreq) { var chOptions = Channels.Find(m => m.SiteCode == siteCode && m.AdcCode == adcCode && m.ChNum == chNum); if (chOptions == null) { chOptions = new AdcChOptions(siteCode, adcCode, chNum, centerFreq); Channels.Add(chOptions); ChCount = Math.Max(ChCount, chNum); } else { chOptions.CenterFreq = centerFreq; } return chOptions; } public AdcSigOptions AddSingal(string siteCode, string adcCode, int chNum, long freqAd, int bandWidth, string sigName, long freqUp) { var chOptions = Channels.Find(m => m.SiteCode == siteCode && m.AdcCode == adcCode && m.ChNum == chNum); if (chOptions == null) { chOptions = new AdcChOptions(siteCode, adcCode, chNum, 0); Channels.Add(chOptions); ChCount = Math.Max(ChCount, chNum); } var sigOptions = chOptions.AddSignal(freqAd, bandWidth, sigName, freqUp); return sigOptions; } public AdcDxSigOptions AddDXSingal(string siteCode, string adcCode, int chNum, long freqAd, int bandWidth, int mod, long freqUp) { var chOptions = Channels.Find(m => m.SiteCode == siteCode && m.AdcCode == adcCode && m.ChNum == chNum); if (chOptions == null) { chOptions = new AdcChOptions(siteCode, adcCode, chNum, 0); Channels.Add(chOptions); ChCount = Math.Max(ChCount, chNum); } var sigOptions = chOptions.AddDxSignal(freqAd, bandWidth, mod, freqUp); return sigOptions; } public double[] GetCenterFreqs() { double[] centerFreqs = new double[ChCount]; foreach (var ch in Channels) { centerFreqs[ch.ChNum - 1] = ch.CenterFreq; } return centerFreqs; } } /// /// 采集卡通道设置 /// public class AdcChOptions { //public AdcChOptions() //{ //} public AdcChOptions(string siteCode, string adcCode, int chNum, long centerFreq) { this.SiteCode = siteCode; this.AdcCode = adcCode; ChNum = chNum; CenterFreq = centerFreq; } /// /// 站点编码 /// public string SiteCode { get; set; } /// /// 采集卡编码 /// public string AdcCode { get; set; } public int ChNum { get; set; } public long CenterFreq { get; set; } public List Signals { get; private set; } = new List(); public AdcSigOptions AddSignal(long freqPoint, int bandWidth, string sigName, long freqUp) { AdcSigOptions adSig = Signals.Find(m => m.FreqPoint == freqPoint && m.BandWidth == bandWidth); if (adSig == null) { adSig = new AdcSigOptions(freqPoint, bandWidth, sigName, freqUp); Signals.Add(adSig); } return adSig; } public List DxSignals { get; private set; } = new List(); public AdcDxSigOptions AddDxSignal(long freqPoint, int bandWidth, int mod, long freqUp) { AdcDxSigOptions adSig = DxSignals.Find(m => m.FreqPoint == freqPoint && m.BandWidth == bandWidth); if (adSig == null) { adSig = new AdcDxSigOptions(freqPoint, bandWidth, mod, freqUp); DxSignals.Add(adSig); } return adSig; } } /// /// 采集信号 /// public class AdcSigOptions { //public AdcSigOptions() //{ //} public AdcSigOptions(long freqPoint, int bandWidth, string sigName, long freqUp) { FreqPoint = freqPoint; BandWidth = bandWidth; SigName = sigName; FreqUp = freqUp; } public long FreqPoint { get; set; } public int BandWidth { get; set; } public string SigName { get; set; } public long FreqUp { get; set; } } /// /// 采集信号 /// public class AdcDxSigOptions { public AdcDxSigOptions(long freqPoint, int bandWidth, int mod, long freqUp) { FreqPoint = freqPoint; BandWidth = bandWidth; Mod = mod; FreqUp = freqUp; } public long FreqPoint { get; set; } public int BandWidth { get; set; } public int Mod { get; set; } public long FreqUp { get; set; } } }