/// <summary> /// 配置并启动机台界面 /// </summary> private void InitAndSetupMachineWindow() { // 初始化应用程序配置数据 if (InitMachineEmployeeAndParameterCode()) { // 创建默认的机台页面 InitializeDefaultMachineView(); OnlineDataCenter.StartUseMqAsync(); // 开启数据接收服务 // OnlineDataCenter.StartService(); // 显示界面并开启接收数据 pageContainer.Visibility = Visibility.Visible; checkNetGrid.Visibility = Visibility.Collapsed; // 开启机台接收数据 BaseMachine.StartLoadingData(); } else { System.Windows.MessageBox.Show("从服务器中获取初始化数据" + "失败,\r\n请检查网络连接是否稳定,然后重新启动!", "出错提示", MessageBoxButton.OK, MessageBoxImage.Error); System.Environment.Exit(0); } }
/// <summary> /// 周期性检查网络 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void networkCheckTimer_Elapsed(object sender, EventArgs e) { if (OnlineDataCenter.IsNetwork2ServerOK()) { networkCheckTimer.Stop(); Dispatcher.Invoke(new Action(() => { InitAndSetupMachineWindow(); })); } }
public MainWindow() { InitializeComponent(); // 初始化主窗口 InitializeMainWindow(); // 设置通知栏图标 InitailizeNotifyIcon(); try { // 开发电脑上面就不用自启了 // 设置开机自启 if (!YUtil.GetWindowsUserName().ToUpper().Contains("SOMIAR")) { YUtil.SetAppAutoStart("PanyuVisualSystem", true); } else { UIMessageBox.Show("提示", "开发电脑无需自启", 5000); } } catch { UIMessageBox.Show("异常", "设置启动异常", 5000); // ignored } try { // 番禺的防火墙服务默认是禁用 // 这样就会封掉所有端口,所以只能打开防火墙服务,然后关闭防火墙才行 // 当然防火墙的状态是设置的为关闭 YUtil.SetWinServiceStartupType("MpsSvc", ServiceStartMode.Automatic); YUtil.StartWinService("MpsSvc"); } catch { // ignored } // 检查网络连接 if (OnlineDataCenter.IsNetwork2ServerOK()) { InitAndSetupMachineWindow(); try { // 同步服务器时间 var time = YUtil.GetNtpTime(Configuration.ServerIp); if (Math.Abs((DateTime.Now - time).TotalSeconds) > 10) { YUtil.SetLoadTimeByDateTime(time); } } catch { // ignored } } else { Task.Run(() => { SustainedNetworkTest(null); }); } }
/// <summary> /// 绑定实时数据,更新生产数据到界面 /// </summary> public override void StartLoadingData() { ApplicationStateManager.RecoveryMachineState(this); ApplicationStateManager.ClearApplicationStatePath(); if (ProductionInfo == null) { ProductionInfo = OnlineDataCenter.GetMachineProductionInfo(MachineName); if (ProductionInfo == null) { MessageBox.Show("配置的机台名称与数据库中的不一致!", "错误提示", MessageBoxButton.OK, MessageBoxImage.Error); System.Environment.Exit(0); } } else { OnlineDataCenter.SetMachineProductionInfo(ProductionInfo); } odChart.Upper = Configuration.OuterDiameterUpper; odChart.Lower = Configuration.OuterDiameterLower; // 绑定数据源对象 rootGrid.DataContext = ProductionInfo; ProductionInfo.PdfService.ChangeProductionProcessPdf += PdfService_ChangeProductionProcessPdf; ProductionInfo.DoublePropertyChanged += cpi_DoublePropertyChanged; AppEventsManager.OnUpdateOuterDiameterUpperAndLower += AppEventsManager_OnUpdateOuterDiameterUpperAndLower; // 重新加载工艺规格文件 if (!string.IsNullOrEmpty(WorksheetNo)) { Task.Run(() => { updateWorkSheetInfo(WorksheetNo.Trim()); }); } }
/// <summary> /// 持续地测试与服务器的网络连接 /// </summary> /// <param name="state"></param> private void SustainedNetworkTest(object state) { int tryTime = 0; while (!OnlineDataCenter.IsNetwork2ServerOK()) { if (++tryTime > 10) { networkCheckTimer = new System.Timers.Timer(); networkCheckTimer.Interval = 3000; networkCheckTimer.Elapsed += networkCheckTimer_Elapsed; networkCheckTimer.Start(); this.Dispatcher.Invoke(new Action(() => { spCheckNet.Visibility = Visibility.Hidden; spNetTips.Visibility = Visibility.Visible; })); return; } Thread.Sleep(2000); } Dispatcher.Invoke(InitAndSetupMachineWindow); }