Exemple #1
0
 public static BasicConf GetInstance()
 {
     lock (SyncObject)
     {
         return(_basicConf ?? (_basicConf = new BasicConf()));
     }
 }
Exemple #2
0
        private void ConfirmBtn_Click(object sender, EventArgs e)
        {
            if (SerialPort.GetPortNames().All(t => t != GpsPortBox.Text.ToUpper()))
            {
                MessageBox.Show("端口不存在!");
                return;
            }
            if (!GpsBaudRate.Items.Contains(GpsBaudRate.Text))
            {
                MessageBox.Show("无效的波特率!");
                return;
            }
            BasicConf.GetInstance().SetCommGPS(GpsPortBox.Text);
            BasicConf.GetInstance().SetGPSDataRate(GpsBaudRate.Text);

            if (MainForm.mf.gpscore.ReturnSerialPort() != null && MainForm.mf.gpscore.ReturnSerialPort().IsOpen)
            {
                MainForm.mf.gpscore.Stop();
            }
            if (MainForm.mf.gpscore.Init(new SerialPort(GpsPortBox.Text, int.Parse(GpsBaudRate.Text))))
            {
                if (MainForm.mf.gpscore.Start())
                {
                    MessageBox.Show("端口已开启!");
                    Hide();
                    return;
                }
            }
            MessageBox.Show("打开GPS端口失败!");
        }
Exemple #3
0
 public static BasicConf GetInstance()
 {
     lock (SyncObject)
     {
         return _basicConf ?? (_basicConf = new BasicConf());
     }
 }
Exemple #4
0
 public static ICommCore GetInstance(BasicConf conf, Observer <DataEventArgs> observer)
 {
     lock (SyncObject)
     {
         return(_CommInstance ?? (_CommInstance = new CommService(conf, observer)));
     }
 }
Exemple #5
0
 private void BasicOption_Load(object sender, EventArgs e)
 {
     GpsPortBox.Items.Clear();
     if (SerialPort.GetPortNames().Count() > 0)
     {
         GpsPortBox.Items.AddRange(SerialPort.GetPortNames());
     }
     GpsPortBox.Text  = BasicConf.GetInstance().GetCommGPS();
     GpsBaudRate.Text = BasicConf.GetInstance().GetGPSDataRate();
 }
Exemple #6
0
 /// <summary>
 ///  初始化串口数据服务
 /// </summary>
 /// <param name="configure">通信参数</param>
 /// <returns>成功or失败</returns>
 private bool CreateSerialService(BasicConf configure)
 {
     _serialPort = new SerialPort(configure.GetCommGPS(), int.Parse(configure.GetGPSDataRate()));
     if (!SerialService.Init(_serialPort) || !SerialService.Start())
     {
         return(false);
     }
     SerialService.Register(CommDataObserver);
     return(true);
 }
 public static INetCore GetInstance(BasicConf conf, Observer <DataEventArgs> observer)
 {
     lock (SyncObject)
     {
         if (conf != null)
         {
             return(_netInstance ?? (_netInstance = new NetWorkService(conf, observer)));
         }
         else
         {
             return(null);
         }
     }
 }
        public override void InitializePage(object extraData)
        {
            var para = extraData as GoSonarConfigEvent;

            if (para != null)
            {
                ShowInPage = para.Show;
            }

            //CommInfo = SerialPort.GetPortNames().ToList();

            try
            {
                Profile = BasicConf.GetInstance().GetVelProfileName();
                var  sc     = UnitCore.Instance.SonarConfiguration;
                uint velcmd = sc.VelCmd;
                SurVelSrcIndex = velcmd & 0x03;
                AvgVelIndex    = (velcmd >> 2) & 0x01;
                SurVel         = sc.SurVel;
                AvgVel         = sc.AvgVel;
                FixedGain      = sc.FixedGain;
                TVGCmd         = sc.TVGCmd;
                FixedTVG       = sc.FixedTVG;
                TVGSampling    = sc.TVGSampling;
                TVGSamples     = sc.TVGSamples;
                TVGA1          = sc.TVGA1;
                TVGA2          = sc.TVGA2;
                TVGA3          = sc.TVGA3;
                PingPeriod     = sc.PingPeriod;
                ADSaved        = sc.ADSaved;
                PoseSaved      = sc.PoseSaved;
                PosSaved       = sc.PosSaved;
                SonarDepth     = sc.SonarDepth;
                SonarGPSx      = sc.SonarGPSx;
                SonarGPSy      = sc.SonarGPSy;
                SonarGPSz      = sc.SonarGPSz;
                Pitchfixed     = sc.Pitchfixed;
                Rollfixed      = sc.Rollfixed;
                Headingfixed   = sc.Headingfixed;
            }
            catch (Exception ex)
            {
                UnitCore.Instance.EventAggregator.PublishMessage(new ErrorEvent(new Exception("读取参数失败!"), LogType.Both));
            }
        }
 private bool CreateTCPService(BasicConf conf)
 {
     // 同步方法,会阻塞进程,调用init用task
     if (!SonarIsOK)
     {
         TCPDataService.ConnectSync();
         TCPDataService.Register(NetDataObserver);
         TCPCmdService.ConnectSync();
         TCPCmdService.Register(NetDataObserver);
     }
     if (!PoseIsOK)
     {
         TCPPoseService.ConnectSync();
         TCPPoseService.Register(NetDataObserver);
     }
     if (SonarIsOK && PoseIsOK)
     {
         return(true);
     }
     return(false);
 }
Exemple #10
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     if (CommInfo != null)
     {
         CommInfo.Clear();
     }
     GpsBox.Items.Clear();
     CommInfo = SerialPort.GetPortNames().ToList();
     foreach (var comm in CommInfo)
     {
         GpsBox.Items.Add(comm);
     }
     IpPortBox.Text     = BasicConf.GetInstance().GetNetPort();
     IpCmdPortBox.Text  = BasicConf.GetInstance().GetNetCmdPort();
     IpPosePortBox.Text = BasicConf.GetInstance().GetPosePort();
     if (CommInfo.Count > 0)
     {
         GpsBox.SelectedIndex = CommInfo.IndexOf(BasicConf.GetInstance().GetCommGPS());
     }
     GpsRateBox.SelectedIndex = RateInfo.IndexOf(BasicConf.GetInstance().GetGPSDataRate());
     t = new DispatcherTimer(TimeSpan.FromSeconds(1), DispatcherPriority.Background, StartConnect, Dispatcher.CurrentDispatcher);
     t.Start();
 }
        private void ExecuteSaveAndRun(object sender, ExecutedRoutedEventArgs eventArgs)
        {
            try
            {
                FileInfo fi = new FileInfo(Profile);
                if (fi.Exists)
                {
                    SettleSoundFile SoundFile = null;
                    try
                    {
                        SoundFile = new SettleSoundFile(Profile);//整理声速剖面文件
                    }
                    catch (Exception)
                    {
                        UnitCore.Instance.EventAggregator.PublishMessage(new LogEvent("读取声速剖面文件失败!", LogType.OnlyInfo));
                        return;
                    }
                    UnitCore.Instance.SoundFile = SoundFile;
                    BasicConf.GetInstance().SetVelProfileName(Profile);
                }
                else
                {
                    throw new Exception("声速剖面文件不存在!");
                }

                var sc = UnitCore.Instance.SonarConfiguration;
                sc.VelCmd = SurVelSrcIndex;
                if (AvgVelIndex == 1)
                {
                    sc.VelCmd = sc.VelCmd | 0x04;
                }
                sc.SurVel       = SurVel;
                sc.AvgVel       = AvgVel;
                sc.FixedGain    = FixedGain;
                sc.TVGCmd       = TVGCmd;
                sc.FixedTVG     = FixedTVG;
                sc.TVGSampling  = TVGSampling;
                sc.TVGSamples   = TVGSamples;
                sc.TVGA1        = TVGA1;
                sc.TVGA2        = TVGA2;
                sc.TVGA3        = TVGA3;
                sc.PingPeriod   = PingPeriod;
                sc.ADSaved      = ADSaved;
                sc.PoseSaved    = PoseSaved;
                sc.PosSaved     = PosSaved;
                sc.SonarDepth   = SonarDepth;
                sc.SonarGPSx    = SonarGPSx;
                sc.SonarGPSy    = SonarGPSy;
                sc.SonarGPSz    = SonarGPSz;
                sc.Pitchfixed   = Pitchfixed;
                sc.Rollfixed    = Rollfixed;
                sc.Headingfixed = Headingfixed;
                if (!UnitCore.Instance.UpdateSonarConfig(false))
                {
                    throw new Exception("无法保存默认参数");
                }
                UnitCore.Instance.EventAggregator.PublishMessage(new GoBackNavigationRequest());
            }
            catch (Exception ex)
            {
                UnitCore.Instance.EventAggregator.PublishMessage(new LogEvent(ex.Message, LogType.OnlyInfo));
                return;
            }
        }
 protected NetWorkService(BasicConf conf, Observer <DataEventArgs> observe)
 {
     _conf         = conf;
     _dataObserver = observe;
 }
Exemple #13
0
        private void SaveConnBtn_Click(object sender, RoutedEventArgs e)
        {
            int dataport, cmdport;
            int poseport;

            if (int.TryParse(IpPortBox.Text, out dataport) && (dataport > 0 && dataport < 65535))
            {
            }
            else
            {
                UnitCore.Instance.EventAggregator.PublishMessage(new LogEvent("数据端口格式不正确!", LogType.OnlyInfo));
                return;
            }
            if (int.TryParse(IpCmdPortBox.Text, out cmdport) && (cmdport > 0 && cmdport < 65535))
            {
            }
            else
            {
                UnitCore.Instance.EventAggregator.PublishMessage(new LogEvent("命令端口格式不正确!", LogType.OnlyInfo));
                return;
            }

            if (int.TryParse(IpPosePortBox.Text, out poseport) && (poseport > 0 && poseport < 65535))
            {
            }
            else
            {
                UnitCore.Instance.EventAggregator.PublishMessage(new LogEvent("传感器端口格式不正确!", LogType.OnlyInfo));
                return;
            }
            try
            {
                if (!BasicConf.GetInstance().SetNetPort(dataport.ToString()))
                {
                    throw new Exception("保存数据端口失败");
                }
                if (!BasicConf.GetInstance().SetCmdPort(cmdport.ToString()))
                {
                    throw new Exception("保存命令端口失败");
                }

                if (!BasicConf.GetInstance().SetPosePort(poseport.ToString()))
                {
                    throw new Exception("保存姿态传感器IP端口失败");
                }
                if (GpsBox.SelectedIndex != -1)
                {
                    if (!BasicConf.GetInstance().SetCommGPS(CommInfo[GpsBox.SelectedIndex]))
                    {
                        throw new Exception("保存串口端口失败");
                    }
                }
                if (!BasicConf.GetInstance().SetGPSDataRate(RateInfo[GpsRateBox.SelectedIndex]))
                {
                    throw new Exception("保存串口速率失败");
                }
            }
            catch (Exception exception)
            {
                UnitCore.Instance.EventAggregator.PublishMessage(new LogEvent(exception.Message, LogType.Both));
                return;
            }
            UnitCore.Instance.Stop();
            SetPopUpControl.IsOpen        = false;
            SonarBar.Visibility           = Visibility.Visible;
            PoserBar.Visibility           = Visibility.Visible;
            GPSBar.Visibility             = Visibility.Visible;
            SonarConnectStatus.Visibility = Visibility.Collapsed;
            POSEConnectStatus.Visibility  = Visibility.Collapsed;
            GPSConnectStatus.Visibility   = Visibility.Collapsed;
            StartWork.Visibility          = Visibility.Hidden;
            TCPOK.Visibility  = Visibility.Collapsed;
            POSEOK.Visibility = Visibility.Collapsed;
            CommOK.Visibility = Visibility.Collapsed;
            UnitCore.Instance.Start();
            Task.Factory.StartNew(() =>
            {
                UnitCore.Instance.NetCore.Initialize();
                UnitCore.Instance.NetCore.Start();
                UnitCore.Instance.CommCore.Initialize();
                UnitCore.Instance.CommCore.Start();
            });
        }
Exemple #14
0
 protected CommService(BasicConf conf, Observer <DataEventArgs> observer)
 {
     _commConf     = conf;
     _DataObserver = observer;
 }