public static BasicConf GetInstance() { lock (SyncObject) { return(_basicConf ?? (_basicConf = new BasicConf())); } }
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端口失败!"); }
public static BasicConf GetInstance() { lock (SyncObject) { return _basicConf ?? (_basicConf = new BasicConf()); } }
public static ICommCore GetInstance(BasicConf conf, Observer <DataEventArgs> observer) { lock (SyncObject) { return(_CommInstance ?? (_CommInstance = new CommService(conf, observer))); } }
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(); }
/// <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); }
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; }
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(); }); }
protected CommService(BasicConf conf, Observer <DataEventArgs> observer) { _commConf = conf; _DataObserver = observer; }