Exemplo n.º 1
0
        //overviewdisplayer显示器的控制模式切换到波门模式,需要读取targetmannager当前的模式决定切换到自动波门还是半自动波门
        public void SwitchToWaveGateState()
        {
            ITargetDataProvider provider = TargetManagerFactory.CreateTargetDataProvider();
            TargetManagerMode   mode     = provider.GetMode();

            switch (mode)
            {
            case TargetManagerMode.Auto:
                SwitchToAutoWaveGateState();
                break;

            case TargetManagerMode.SemiAuto:
                SwitchToSemiAutoWaveGateSate();
                break;

            case TargetManagerMode.Manual:
                break;

            case TargetManagerMode.Intelligent:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemplo n.º 2
0
        public void SwitchMode(TargetManagerMode toMode)      //切换起批模式
        {
            _mode = toMode;

            switch(toMode)
            {
                case TargetManagerMode.Intelligent:
                    _dotCorelator = new DotCorelator_Intelligence(_dotCorelator.Observers);
                    break;
                case TargetManagerMode.Auto:
                    _dotCorelator = new DotCorelator_WaveGate(_dotCorelator.Observers);
                    break;
                case TargetManagerMode.SemiAuto:
                    _dotCorelator = new DotCorelator_WaveGate(_dotCorelator.Observers);
                    break;
                case TargetManagerMode.Manual:
                    _dotCorelator = new DotCorelator_Manual(_dotCorelator.Observers);
                    break;
                default:
                    throw new ArgumentOutOfRangeException(nameof(toMode), toMode, null);
            }
        }
Exemplo n.º 3
0
        public TargetManager()
        {
            InitializeSectors();
            _obs = new List<ITargetObserver>();

            //_clotter = new Clotter_Test();
            _clotter47 = new FourSevenClotter();

            _trackCorelator = new TrackCorelatorV1();//航迹相关器

            _mode = TargetManagerMode.Manual;
            _dotCorelator = new DotCorelatorV1();//自由点相关器

            _freeDotDeleter = new FreeDotDeleter();  //自由点删除器

            _viewDeleter = new DotViewDeleter();

            TargetTrack.FindIdStrategy = new FromBeginningStrategy();

            mouseTargetTracker = new MouseTargetTracker(this);

            trackGenerators = new List<TrackGenerator>();
        }
Exemplo n.º 4
0
 public TargetManagerSwitchModeCommand(TargetManagerMode mode) : base()
 {
     this.mode = mode;
 }
 public void SwitchMode(TargetManagerMode mode)
 {
     this.mode = mode;
 }
        public TrackManager_TestCase_Random()
        {
            mode = TargetManagerMode.Auto;

            tracks            = new List <TargetTrack>();
            dots              = new List <TargetDot>();
            obs               = new List <ITargetObserver>();
            timerDot          = new Timer();
            timerDot.Interval = 1000;
            timerDot.Tick    += TimerDot_Tick;
            timerDot.Start();


            timerTrack          = new Timer();
            timerTrack.Interval = 1000;
            timerTrack.Tick    += TimerTrack_Tick;
            timerTrack.Start();

            if (dot1 == null)       //dot1是静态成员,只有第一次实例化时才对dot1赋值
            {
                Random rd = new Random();
                dot1     = new TargetDot();
                dot1.AZ  = rd.Next(0, 180);
                dot1.EL  = rd.Next(10, 19);
                dot1.Dis = rd.Next(2000, 4000);

                dot2     = new TargetDot();
                dot2.AZ  = dot1.AZ + 2;
                dot2.EL  = dot1.EL + 1;
                dot2.Dis = dot1.Dis + 100;
            }

            dots.Add(dot1);
            NotifyAllObservers(dot1, NotifyType.Add);
            dots.Add(dot2);
            NotifyAllObservers(dot2, NotifyType.Add);

            if (track1 == null)
            {
                Random rd = new Random();
                track1         = new TargetTrack();
                track1.trackID = 15;
                track1.AZ      = rd.Next(180, 360);
                track1.EL      = rd.Next(20, 89);
                track1.Dis     = rd.Next(100, 4000);
            }

            float dis    = 4000;
            float el     = 10;
            float az     = 0;
            float azStep = 30;

            for (int i = 1; az < 360; i++)
            {
                TargetTrack t = new TargetTrack();
                az        = 15 + azStep * i;
                t.AZ      = az;
                t.Dis     = dis;
                t.EL      = el;
                t.trackID = i;
                tracks.Add(t);
                NotifyAllObservers(t, NotifyType.Add);
            }
            tracks.Add(track1);
            NotifyAllObservers(track1, NotifyType.Add);
        }