| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- using Prism.Ioc;
- using Prism.Modularity;
- using Prism.Services.Dialogs;
- using Prism.Unity;
- using SqlSugar;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Data;
- using System.Globalization;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Web.UI.WebControls;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media.Media3D;
- using Team.FFFeederService;
- using Team.FFFeederService.Interfaces;
- using Team.Utility;
- using TeamAAS_VP;
- using TeamAAS_VP.Controls;
- using TeamAAS_VP.Core;
- using TeamAAS_VP.Core.ScrewDriver;
- using TeamAAS_VP.Interfaces;
- using TeamAAS_VP.Properties;
- using TeamAAS_VP.Resources.Languages;
- using TeamAAS_VP.Services;
- using TeamAAS_VP.ViewModels;
- using TeamAAS_VP.ViewModels.Calibration;
- using TeamAAS_VP.ViewModels.DebugMod;
- using TeamAAS_VP.ViewModels.Home;
- using TeamAAS_VP.ViewModels.Product;
- using TeamAAS_VP.Views;
- using TeamAAS_VP.Views.Calibration;
- using TeamAAS_VP.Views.DebugMod;
- using TeamAAS_VP.Views.Home;
- using TeamAAS_VP.Views.Product;
- using TeamAAS_VP.Views.Setting;
- using TeamAAS_VP.Views.User;
- using WPFLocalizeExtension.Engine;
- [assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", ConfigFileExtension = "config", Watch = true)]
- namespace TeamAAS_VP
- {
- /// <summary>
- /// App.xaml 的交互逻辑
- /// </summary>
- public partial class App : PrismApplication
- {
- private static System.Threading.Mutex mutex;
- protected override Window CreateShell()
- {
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- var mainWindow = this.Container.Resolve<MainWindowView>();
- var _configService = this.Container.Resolve<IConfigService>();
- var _databaseInitializer = this.Container.Resolve<IDatabaseInitializer>();
- // 1. 读取配置参数
- _configService.LoadAll();
- try
- {
- _databaseInitializer.InitializeDatabase();
- }
- catch (Exception ex)
- {
- LogHelper.WriteLogError("Database initialization failed during application startup", ex);
- }
- // 设置语言
- var currentlanguage = _configService.GetSystemConfiguration().CurrentLanguage;
- _configService.SetCurrentLanguage(currentlanguage);
- var cardLogin = this.Container.Resolve<CardLoginWindow>();
- var result = cardLogin.ShowDialog();
- if (result is bool st1 && !st1)
- {
- this.Shutdown();
- }
- return mainWindow;
- }
- protected override void RegisterTypes(IContainerRegistry containerRegistry)
- {
- //------------------------注册导航视图------------------------------------------------
- containerRegistry.RegisterForNavigation<HomeView>();
- containerRegistry.RegisterForNavigation<ProductsView>();
- containerRegistry.RegisterForNavigation<DebugView>();
- containerRegistry.RegisterForNavigation<SettingView>();
- containerRegistry.RegisterForNavigation<CalibrationView>();
- containerRegistry.RegisterForNavigation<StatisticsView>();
- containerRegistry.RegisterForNavigation<UserView>();
- containerRegistry.RegisterForNavigation<Views.User.LoginView>();
- containerRegistry.RegisterForNavigation<SignUpView>();
- containerRegistry.RegisterForNavigation<RobotManualStep>();
- containerRegistry.RegisterForNavigation<PlcRobotManualStep>();
- containerRegistry.RegisterForNavigation<FeederManual>();
- containerRegistry.RegisterForNavigation<VisionSolution>();
- containerRegistry.RegisterForNavigation<InchingControl>();
- containerRegistry.RegisterForNavigation<ScriptHome>();
- containerRegistry.RegisterForNavigation<FeederClear>();
- containerRegistry.RegisterForNavigation<AfagFeederManual>();
- containerRegistry.RegisterForNavigation<LightManual>();
- containerRegistry.RegisterForNavigation<FocusAnalyzer, FocusAnalyzerViewModel>();
- //产品
- containerRegistry.RegisterForNavigation<ProductHome>();
- containerRegistry.RegisterForNavigation<ProductDescription>();
- containerRegistry.RegisterForNavigation<ProductProcessManage>();
- containerRegistry.RegisterForNavigation<ProcessBasics>();
- containerRegistry.RegisterForNavigation<SimpleProcedure>();
- containerRegistry.RegisterForNavigation<AdvancedProcedure>();
- containerRegistry.RegisterForNavigation<CameraParams>();
- containerRegistry.RegisterForNavigation<FeederParams>();
- containerRegistry.RegisterForNavigation<ProcedureVisionOutput>();
- containerRegistry.RegisterForNavigation<RobotPointParams>();
- containerRegistry.RegisterForNavigation<PlcPointParams>();
- containerRegistry.RegisterForNavigation<ProductParams>();
- containerRegistry.RegisterForNavigation<ProcedureParams>();
- containerRegistry.RegisterForNavigation<AfagFeederParams>();
-
- //校准
- containerRegistry.RegisterForNavigation<CalibrationAuto>();
- containerRegistry.RegisterForNavigation<CalibrationBasics>();
- containerRegistry.RegisterForNavigation<CalibrationCameraParams>();
- containerRegistry.RegisterForNavigation<CalibrationEditVision>();
- containerRegistry.RegisterForNavigation<CalibrationHome>();
- containerRegistry.RegisterForNavigation<CalibrationResult>();
- containerRegistry.RegisterForNavigation<CalibrationSelectTool>();
- containerRegistry.RegisterForNavigation<CalibrationTeachCenterPoint>();
- containerRegistry.RegisterForNavigation<CalibrationVerification>();
- containerRegistry.RegisterForNavigation<FixedUpCameraFindP0>();
- //**************************************************************************************
- //------------------------注册单类------------------------------------------------
- containerRegistry.RegisterSingleton<IConfigService, ConfigService>();
- containerRegistry.RegisterSingleton<ICalibrationService, CalibrationService>();
- containerRegistry.RegisterSingleton<ICameraService, CameraService>();
- containerRegistry.RegisterSingleton<IRobotService, RobotService>();
- containerRegistry.RegisterSingleton<IPlcService, PlcService>();
- containerRegistry.RegisterSingleton<IFeederService, FeederService>();
- containerRegistry.RegisterSingleton<IProductService, ProductService>();
- containerRegistry.RegisterSingleton<IRemoteCommandService, RemoteCommandService>();
- containerRegistry.RegisterSingleton<ILightManagerService, LightManagerService>();
- containerRegistry.RegisterSingleton<ICameraCalibrationService, CameraCalibrationService>();
- containerRegistry.RegisterSingleton<IMesService, MesService>();
- containerRegistry.RegisterSingleton<Management>();
- // Register system database service and initializer
- containerRegistry.RegisterSingleton<ISystemDatabaseService, TeamAAS_VP.Data.SystemDatabaseService>();
- containerRegistry.RegisterSingleton<IDatabaseInitializer, TeamAAS_VP.Data.DatabaseInitializer>();
- containerRegistry.RegisterSingleton<ShowVisionRenderViewModel>();
- containerRegistry.RegisterSingleton<InchingControlViewModel>();
- //containerRegistry.RegisterSingleton<ScriptHomeViewModel>();
- containerRegistry.RegisterSingleton<DebugViewModel>();
- containerRegistry.RegisterSingleton<FeederClearViewModel>();
- containerRegistry.RegisterSingleton<AfagFeederManual>();
- containerRegistry.RegisterSingleton<HomeViewModel>();
- containerRegistry.RegisterSingleton<FocusAnalyzerViewModel>();
- //产品
- containerRegistry.RegisterSingleton<ProductDescriptionViewModel>();
- containerRegistry.RegisterSingleton<ProductHomeViewModel>();
- containerRegistry.RegisterSingleton<ProductsViewModel>();
- containerRegistry.RegisterSingleton<ProductProcessManageViewModel>();
- containerRegistry.RegisterSingleton<ProcessBasicsViewModel>();
- containerRegistry.RegisterSingleton<SimpleProcedureViewModel>();
- containerRegistry.RegisterSingleton<AdvancedProcedureViewModel>();
- containerRegistry.RegisterSingleton<CameraParamsViewModel>();
- containerRegistry.RegisterSingleton<FeederParamsViewModel>();
- containerRegistry.RegisterSingleton<ProcedureVisionOutputViewModel>();
- containerRegistry.RegisterSingleton<RobotPointParamsViewModel>();
- containerRegistry.RegisterSingleton<PlcPointParamsViewModel>();
- containerRegistry.RegisterSingleton<ProductParamsViewModel>();
- containerRegistry.RegisterSingleton<ProcedureParamsViewModel>();
- containerRegistry.RegisterSingleton<AfagFeederParamsViewModel>();
- //校准
- containerRegistry.RegisterSingleton<CalibrationAutoViewModel>();
- containerRegistry.RegisterSingleton<CalibrationBasicsViewModel>();
- containerRegistry.RegisterSingleton<CalibrationCameraParamsViewModel>();
- containerRegistry.RegisterSingleton<CalibrationEditVisionViewModel>();
- containerRegistry.RegisterSingleton<CalibrationHomeViewModel>();
- containerRegistry.RegisterSingleton<CalibrationResultViewModel>();
- containerRegistry.RegisterSingleton<CalibrationSelectToolViewModel>();
- containerRegistry.RegisterSingleton<CalibrationTeachCenterPointViewModel>();
- containerRegistry.RegisterSingleton<CalibrationVerificationViewModel>();
- containerRegistry.RegisterSingleton<FixedUpCameraFindP0ViewModel>();
- //**************************************************************************************
- //------------------------注册对话框------------------------------------------------
- containerRegistry.RegisterDialog<AddRobot>();
- containerRegistry.RegisterDialog<AddFeeder>();
- containerRegistry.RegisterDialog<AddPlc>();
- containerRegistry.RegisterDialog<AddScrewFeeder>();
- containerRegistry.RegisterDialog<AddCamera>();
- containerRegistry.RegisterDialog<EditCamera>();
- containerRegistry.RegisterDialog<PalletManage>();
- containerRegistry.RegisterDialog<UProgressBar>();
- containerRegistry.RegisterDialog<CalibTool>();
- containerRegistry.RegisterDialog<ShowCalibrationResult>();
- containerRegistry.RegisterDialog<FeederBlobParams>();
- containerRegistry.RegisterDialog<CalculateOffsetU>();
- containerRegistry.RegisterDialog<VisionScriptPage>();
- containerRegistry.RegisterDialog<SelectCameraBrand>();
- containerRegistry.RegisterDialog<AddLightController>();
- containerRegistry.RegisterDialog<LightChannelList>();
- containerRegistry.RegisterDialog<AutoCorrectLockPoint>();
- containerRegistry.RegisterDialog<ImageDisplay>();
- containerRegistry.RegisterDialog<VisionStaticAccuracyAnalyzer>();
- containerRegistry.RegisterDialog<VisionDynamicAccuracyAnalyzer>();
- containerRegistry.RegisterDialog<PlcPointOffserParams>();
- containerRegistry.RegisterDialog<ImagePreviewWindow>();
- //**************************************************************************************
- // 注册 SQLSugar 客户端(单例模式)
- containerRegistry.RegisterSingleton<ISqlSugarClient>(s =>
- {
- // 规范化数据库路径(使用绝对路径和平台分隔符)
- string relative = Path.Combine("..", "Database File", "System.db");
- string fullDbPath = Path.GetFullPath(relative); // 变为绝对路径
- Directory.CreateDirectory(Path.GetDirectoryName(fullDbPath)); // 确保目录存在
- string connectionString = $"Data Source={fullDbPath};Version=3;";
- //Scoped用SqlSugarClient
- SqlSugarClient sqlSugar = new SqlSugarClient(new ConnectionConfig()
- {
- DbType = SqlSugar.DbType.Sqlite,
- ConnectionString = connectionString,
- IsAutoCloseConnection = false,
- InitKeyType = InitKeyType.Attribute // 初始化主键和自增列信息的方式
- },
- db =>
- {
- db.Aop.OnLogExecuting = (sql, pars) =>
- {
- };
- });
- return sqlSugar;
- });
- }
- protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
- {
- base.ConfigureModuleCatalog(moduleCatalog);
- }
- protected override void OnStartup(StartupEventArgs e)
- {
- OpenCvSharp.Cv2.GetVersionString();
- var currentDomain = AppDomain.CurrentDomain;
- currentDomain.UnhandledException += UnhandledExceptionOccured;
- // 在异常由应用程序引发但未进行处理时发生。主要指的是UI线程。
- this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
- mutex = new System.Threading.Mutex(true, "Team-AAS-VM");
- if (mutex.WaitOne(0, false))
- {
- //var softKey = new SoftKey();
- //var ret = softKey.CheckKeyByReadEprom();
- //if (ret == 0)
- //{
- // LogHelper.WriteLogInfo(Lang.AASLicense正常使用);
- //}
- //else
- //{
- // LogHelper.WriteLogInfo(Lang.未检测到正确的AASlicenseusb);
- // MessageBox.Show(Lang.未检测到正确的AASlicenseusb, "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
- // this.Shutdown();
- // return;
- //}
- if (Cognex.VisionPro.CogMisc.GetLicensedFeatures(true).Count <= 0)
- {
- LogHelper.WriteLogInfo(Lang.未检测到正确的VisionProlicense);
- MessageBox.Show(Lang.未检测到正确的VisionProlicense, "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
- this.Shutdown();
- return;
- }
- var culture = new CultureInfo("zh-CN");
- App.Current.Dispatcher.Thread.CurrentCulture = culture;
- App.Current.Dispatcher.Thread.CurrentUICulture = culture;
- LocalizeDictionary.Instance.Culture = culture;
- base.OnStartup(e);
- LogHelper.WriteLogInfo("<<<=====================Team-AAS-VM Startup=====================");
- try
- {
- if (!RegeditHelper.IsFirstUse())
- {
- RegeditHelper.WriteFirstLog();
- }
- RegeditHelper.WriteAppVersion(System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
- }
- catch (Exception ex)
- {
- LogHelper.WriteLogError(Lang.操作注册表时出错, ex);
- }
- }
- else
- {
- MessageBox.Show(Lang.程序已经在运行, "AAS",MessageBoxButton.OK,MessageBoxImage.Asterisk);
- this.Shutdown();
- }
- }
- protected override void OnExit(ExitEventArgs e)
- {
- LogHelper.WriteLogInfo("=====================Team-AAS-VM End=====================>>>");
- base.OnExit(e);
- }
- void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
- {
- //可以记录日志并转向错误bug窗口友好提示用户
- e.Handled = true;
- LogHelper.WriteLogFatal("Application has crashed", e.Exception);
- MessageBox.Show("Error:" + e.Exception.Message + " " + e.Exception.StackTrace,"AAS",MessageBoxButton.OK,MessageBoxImage.Asterisk);
- }
- private static void UnhandledExceptionOccured(object sender, UnhandledExceptionEventArgs args)
- {
- //全局异常记录
- var e = (Exception)args.ExceptionObject;
- LogHelper.WriteLogFatal("Application has crashed", e);
- MessageBox.Show($"Error: something went wrong and the application must close:{e.ToString()} ", "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
- }
- protected override void OnInitialized()
- {
- base.OnInitialized();
- }
- }
- }
|