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; }
}
}