public MainWindow()
        {
            var heading = new MagneticMessageCompassValue(160);

            try
            {
                Apb = new APB("SN") // Electronic Positioning System, other/general
                {
                    BOD     = heading,
                    Bearing = heading,
                    DestinationWayPointId = 1,
                    Heading   = heading,
                    SteerTurn = Turn.Left,
                    XTE       = 0,
                    XteUnits  = Units.NauticalMiles,
                };
                InitializeComponent();

                _repeatingSender = new RepeatingSender(new MessageSender("localhost", "serialout"), TimeSpan.FromSeconds(1))
                {
                    Message = Apb
                };
                _repeatingSender.Start();
            }
            catch (Exception x)
            {
                MessageBox.Show(x.ToString());
                throw;
            }
        }
        public AutopilotControl(MagneticContext magneticContext, MessageSender messageSender)
        {
            _magneticContext    = magneticContext;
            _apb                = new APB("SN");
            _heading            = new MagneticMessageCompassValue(0);
            EnabledCommand      = new DelegateCommand(() => Enabled = !Enabled);
            RightCommand        = new DelegateCommand(Right);
            LeftCommand         = new DelegateCommand(Left);
            MagneticCommand     = new DelegateCommand(() => HeadingMagnetic = true);
            TrueCommand         = new DelegateCommand(() => HeadingMagnetic = false);
            SetToHeadingCommand = new DelegateCommand(() => CopyCurrentHeading = !CopyCurrentHeading);

            _periodicalMessageSender = new RepeatingSender(messageSender, TimeSpan.FromMilliseconds(500), OnBeforeAPBSend)
            {
                Message = _apb
            };
        }
示例#3
0
        public void Apb()
        {
            var expected = new APB("SN") // Electronic Positioning System, other/general
            {
                SteerTurn             = Turn.Left,
                BOD                   = new MagneticMessageCompassValue(131),
                DestinationWayPointId = 1,
                XTE                   = 68,
                XteUnits              = Units.NauticalMiles,
                Bearing               = new TrueMessageCompassValue(90),
                Heading               = new MagneticMessageCompassValue(123),
                ArrivalCircular       = Flag.Void,
                ArrivalPerpendicular  = Flag.Active
            };

            var actual = new APB("SN", "A,A,68.0000,L,N,V,A,131.0000,M,001,90.0000,T,123.0000,M".Split(','));

            Assert.Equal(expected.BOD.Value, actual.BOD.Value);
            Assert.Equal(expected.BOD.IsMagnetic, actual.BOD.IsMagnetic);
            Assert.Equal(expected.ToString(), actual.ToString());
        }