using DevExpress.Xpo; using Ips.Library.Basic; using Ips.Library.Entity; using Ips.Sps.Adcs; using System; using System.Drawing.Drawing2D; using System.Runtime.CompilerServices; namespace Ips.Sps.Tsks { public class TskAdCard : XPObject { public TskAdCard() : base() { } public TskAdCard(Session session) : base(session) { } public override void AfterConstruction() { base.AfterConstruction(); CardType = AdCardType.QFCarder; TriggerMode = AdTriggerMode.In; ClockerType = AdClockType.In; ClockFreq = 100; DdcFreq = 70; Mutil = 4; StorePath = @"e:\data"; } private Tsk _tsk; [DisplayName("所属任务")] [Association] [MemberDesignTimeVisibility(false)] public Tsk Tsk { get => _tsk; set => SetPropertyValue(nameof(Tsk), ref _tsk, value); } private string _name; [Size(255)] [DisplayName("采集卡名称")] public string Name { get => _name; set => SetPropertyValue(nameof(Name), ref _name, value); } private AdCardType _cardType; [DisplayName("设备厂商")] [MemberDesignTimeVisibility(false)] public AdCardType CardType { get => _cardType; set => SetPropertyValue(nameof(CardType), ref _cardType, value); } private string _code; [DisplayName("采集卡编码")] public string Code { get => _code; set => SetPropertyValue(nameof(Code), ref _code, value); } private AdTriggerMode _triggerMode; [DisplayName("触发模式")] public AdTriggerMode TriggerMode { get => _triggerMode; set => SetPropertyValue(nameof(TriggerMode), ref _triggerMode, value); } private AdClockType _clockType; [DisplayName("时钟类型")] public AdClockType ClockerType { get => _clockType; set => SetPropertyValue(nameof(ClockerType), ref _clockType, value); } private double _clockFreq; [DisplayName("时钟频率(MHz)")] public double ClockFreq { get => _clockFreq; set => SetPropertyValue(nameof(ClockFreq), ref _clockFreq, value); } private double _ddcFreq; [DisplayName("DDC频率(MHz)")] public double DdcFreq { get => _ddcFreq; set => SetPropertyValue(nameof(DdcFreq), ref _ddcFreq, value); } //private bool _isInverse; //[DisplayName("反谱")] //public bool IsInverse //{ // get => _isInverse; // set => SetPropertyValue(nameof(IsInverse), ref _isInverse, value); //} //[DisplayName("是否反谱"), NonPersistent] //public string IsInverseText //{ // get => IsInverse ? "是" : "否"; //} private int _mutil; [DisplayName("抽取倍数")] public int Mutil { get => _mutil; set => SetPropertyValue(nameof(Mutil), ref _mutil, value); } private string _storePath; [DisplayName("存储路径")] [Size(200)] public string StorePath { get => _storePath; set => SetPropertyValue(nameof(StorePath), ref _storePath, value); } [DisplayName("采集通道")] [Association, Aggregated] public XPCollection Channels { get => GetCollection(nameof(Channels)); } public static TskAdCard CreateFrom(AdCard adCard, Session session) { TskAdCard _card = new TskAdCard(session); CopyCardProps(_card, adCard); return _card; } public void CopyFrom(AdCard adCard) { CopyCardProps(this, adCard); } private static void CopyCardProps(TskAdCard _card, AdCard adCard) { _card.Name = adCard.Name; _card.Code = adCard.Code; _card.CardType = adCard.CardType; _card.TriggerMode = adCard.TriggerMode; _card.ClockerType = adCard.ClockerType; _card.ClockFreq = adCard.ClockFreq; _card.DdcFreq = adCard.DdcFreq; _card.Mutil = adCard.Mutil; _card.StorePath = adCard.StorePath; _card.Channels.RemoveAll(m => true); foreach (var adChannel in adCard.Channels.OrderBy(m => m.ChNum)) { var _adch = new TskAdChannel(_card.Session); _adch.ChNum = adChannel.ChNum; _adch.FixCenter = adChannel.FixCenter; _adch.CenterFreq = adChannel.CenterFreq; _adch.FrqAddr = adChannel.FrqAddr; _adch.FrqTurn = adChannel.FrqTurn; _adch.AntId = adChannel.AntId; _adch.SatIds = adChannel.SatIds; _card.Channels.Add(_adch); } } } }