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 MainViewModel()
        {
            Basic    = new Basic(CreateMessageFromBasic);
            TalkerId = "SN";
            var messagesender = new MessageSender("localhost", "serialout");

            _repeatingSender = new RepeatingSender(messagesender, TimeSpan.FromSeconds(1));
        }
        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
            };
        }