App.xaml.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. using Prism.Ioc;
  2. using Prism.Modularity;
  3. using Prism.Services.Dialogs;
  4. using Prism.Unity;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Configuration;
  8. using System.Data;
  9. using System.Globalization;
  10. using System.IO;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading;
  14. using System.Threading.Tasks;
  15. using System.Web.UI.WebControls;
  16. using System.Windows;
  17. using System.Windows.Controls;
  18. using System.Windows.Media.Media3D;
  19. using Team.Utility;
  20. using TeamAAS_VP.Controls;
  21. using TeamAAS_VP.Core;
  22. using TeamAAS_VP.Properties;
  23. using TeamAAS_VP.Resources.Languages;
  24. using TeamAAS_VP.ViewModels;
  25. using TeamAAS_VP.ViewModels.Calibration;
  26. using TeamAAS_VP.ViewModels.DebugMod;
  27. using TeamAAS_VP.ViewModels.Home;
  28. using TeamAAS_VP.ViewModels.Product;
  29. using TeamAAS_VP.Views;
  30. using TeamAAS_VP.Views.Calibration;
  31. using TeamAAS_VP.Views.DebugMod;
  32. using TeamAAS_VP.Views.Product;
  33. using TeamAAS_VP.Views.Setting;
  34. using TeamAAS_VP.Views.User;
  35. using TeamAAS_VP;
  36. using WPFLocalizeExtension.Engine;
  37. [assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", ConfigFileExtension = "config", Watch = true)]
  38. namespace TeamAAS_VP
  39. {
  40. /// <summary>
  41. /// App.xaml 的交互逻辑
  42. /// </summary>
  43. public partial class App : PrismApplication
  44. {
  45. private static System.Threading.Mutex mutex;
  46. protected override Window CreateShell()
  47. {
  48. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
  49. return base.Container.Resolve<MainWindowView>();
  50. }
  51. protected override void RegisterTypes(IContainerRegistry containerRegistry)
  52. {
  53. //------------------------注册导航视图------------------------------------------------
  54. containerRegistry.RegisterForNavigation<HomeView>();
  55. containerRegistry.RegisterForNavigation<ProductsView>();
  56. containerRegistry.RegisterForNavigation<DebugView>();
  57. containerRegistry.RegisterForNavigation<SettingView>();
  58. containerRegistry.RegisterForNavigation<CalibrationView>();
  59. containerRegistry.RegisterForNavigation<StatisticsView>();
  60. containerRegistry.RegisterForNavigation<UserView>();
  61. containerRegistry.RegisterForNavigation<Views.User.LoginView>();
  62. containerRegistry.RegisterForNavigation<SignUpView>();
  63. containerRegistry.RegisterForNavigation<RobotManualStep>();
  64. containerRegistry.RegisterForNavigation<FeederManual>();
  65. containerRegistry.RegisterForNavigation<VisionSolution>();
  66. containerRegistry.RegisterForNavigation<InchingControl>();
  67. containerRegistry.RegisterForNavigation<ScriptHome>();
  68. containerRegistry.RegisterForNavigation<FeederClear>();
  69. containerRegistry.RegisterForNavigation<AfagFeederManual>();
  70. //产品
  71. containerRegistry.RegisterForNavigation<ProductHome>();
  72. containerRegistry.RegisterForNavigation<ProductDescription>();
  73. containerRegistry.RegisterForNavigation<ProductProcessManage>();
  74. containerRegistry.RegisterForNavigation<ProcessBasics>();
  75. containerRegistry.RegisterForNavigation<SimpleProcedure>();
  76. containerRegistry.RegisterForNavigation<AdvancedProcedure>();
  77. containerRegistry.RegisterForNavigation<CameraParams>();
  78. containerRegistry.RegisterForNavigation<FeederParams>();
  79. containerRegistry.RegisterForNavigation<ProcedureVisionOutput>();
  80. containerRegistry.RegisterForNavigation<RobotPointParams>();
  81. containerRegistry.RegisterForNavigation<ProductParams>();
  82. containerRegistry.RegisterForNavigation<ProcedureParams>();
  83. containerRegistry.RegisterForNavigation<AfagFeederParams>();
  84. //校准
  85. containerRegistry.RegisterForNavigation<CalibrationAuto>();
  86. containerRegistry.RegisterForNavigation<CalibrationBasics>();
  87. containerRegistry.RegisterForNavigation<CalibrationCameraParams>();
  88. containerRegistry.RegisterForNavigation<CalibrationEditVision>();
  89. containerRegistry.RegisterForNavigation<CalibrationHome>();
  90. containerRegistry.RegisterForNavigation<CalibrationResult>();
  91. containerRegistry.RegisterForNavigation<CalibrationSelectTool>();
  92. containerRegistry.RegisterForNavigation<CalibrationTeachCenterPoint>();
  93. containerRegistry.RegisterForNavigation<CalibrationVerification>();
  94. //**************************************************************************************
  95. //------------------------注册单类------------------------------------------------
  96. containerRegistry.RegisterSingleton<Management>();
  97. containerRegistry.RegisterSingleton<ShowVisionRenderViewModel>();
  98. containerRegistry.RegisterSingleton<InchingControlViewModel>();
  99. //containerRegistry.RegisterSingleton<ScriptHomeViewModel>();
  100. containerRegistry.RegisterSingleton<DebugViewModel>();
  101. containerRegistry.RegisterSingleton<FeederClearViewModel>();
  102. containerRegistry.RegisterSingleton<AfagFeederManual>();
  103. //产品
  104. containerRegistry.RegisterSingleton<ProductDescriptionViewModel>();
  105. containerRegistry.RegisterSingleton<ProductHomeViewModel>();
  106. containerRegistry.RegisterSingleton<ProductsViewModel>();
  107. containerRegistry.RegisterSingleton<ProductProcessManageViewModel>();
  108. containerRegistry.RegisterSingleton<ProcessBasicsViewModel>();
  109. containerRegistry.RegisterSingleton<SimpleProcedureViewModel>();
  110. containerRegistry.RegisterSingleton<AdvancedProcedureViewModel>();
  111. containerRegistry.RegisterSingleton<CameraParamsViewModel>();
  112. containerRegistry.RegisterSingleton<FeederParamsViewModel>();
  113. containerRegistry.RegisterSingleton<ProcedureVisionOutputViewModel>();
  114. containerRegistry.RegisterSingleton<RobotPointParamsViewModel>();
  115. containerRegistry.RegisterSingleton<ProductParamsViewModel>();
  116. containerRegistry.RegisterSingleton<ProcedureParamsViewModel>();
  117. containerRegistry.RegisterSingleton<AfagFeederParamsViewModel>();
  118. //校准
  119. containerRegistry.RegisterSingleton<CalibrationAutoViewModel>();
  120. containerRegistry.RegisterSingleton<CalibrationBasicsViewModel>();
  121. containerRegistry.RegisterSingleton<CalibrationCameraParamsViewModel>();
  122. containerRegistry.RegisterSingleton<CalibrationEditVisionViewModel>();
  123. containerRegistry.RegisterSingleton<CalibrationHomeViewModel>();
  124. containerRegistry.RegisterSingleton<CalibrationResultViewModel>();
  125. containerRegistry.RegisterSingleton<CalibrationSelectToolViewModel>();
  126. containerRegistry.RegisterSingleton<CalibrationTeachCenterPointViewModel>();
  127. containerRegistry.RegisterSingleton<CalibrationVerificationViewModel>();
  128. //**************************************************************************************
  129. //------------------------注册对话框------------------------------------------------
  130. containerRegistry.RegisterDialog<AddRobot>();
  131. containerRegistry.RegisterDialog<AddFeeder>();
  132. containerRegistry.RegisterDialog<AddPlc>();
  133. containerRegistry.RegisterDialog<AddCamera>();
  134. containerRegistry.RegisterDialog<EditCamera>();
  135. containerRegistry.RegisterDialog<PalletManage>();
  136. containerRegistry.RegisterDialog<UProgressBar>();
  137. containerRegistry.RegisterDialog<CalibTool>();
  138. containerRegistry.RegisterDialog<ShowCalibrationResult>();
  139. containerRegistry.RegisterDialog<FeederBlobParams>();
  140. containerRegistry.RegisterDialog<CalculateOffsetU>();
  141. containerRegistry.RegisterDialog<VisionScriptPage>();
  142. containerRegistry.RegisterDialog<SelectCameraBrand>();
  143. //**************************************************************************************
  144. }
  145. protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
  146. {
  147. base.ConfigureModuleCatalog(moduleCatalog);
  148. }
  149. protected override void OnStartup(StartupEventArgs e)
  150. {
  151. OpenCvSharp.Cv2.GetVersionString();
  152. var currentDomain = AppDomain.CurrentDomain;
  153. currentDomain.UnhandledException += UnhandledExceptionOccured;
  154. // 在异常由应用程序引发但未进行处理时发生。主要指的是UI线程。
  155. this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
  156. mutex = new System.Threading.Mutex(true, "Team-AAS-VM");
  157. if (mutex.WaitOne(0, false))
  158. {
  159. //var softKey = new SoftKey();
  160. //var ret = softKey.CheckKeyByReadEprom();
  161. //if (ret == 0)
  162. //{
  163. // LogHelper.WriteLogInfo(Lang.AASLicense正常使用);
  164. //}
  165. //else
  166. //{
  167. // LogHelper.WriteLogInfo(Lang.未检测到正确的AASlicenseusb);
  168. // MessageBox.Show(Lang.未检测到正确的AASlicenseusb, "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
  169. // this.Shutdown();
  170. // return;
  171. //}
  172. //if (Cognex.VisionPro.CogMisc.GetLicensedFeatures(true).Count <= 0)
  173. //{
  174. // LogHelper.WriteLogInfo(Lang.未检测到正确的VisionProlicense);
  175. // MessageBox.Show(Lang.未检测到正确的VisionProlicense, "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
  176. // this.Shutdown();
  177. // return;
  178. //}
  179. var culture = new CultureInfo("zh-CN");
  180. App.Current.Dispatcher.Thread.CurrentCulture = culture;
  181. App.Current.Dispatcher.Thread.CurrentUICulture = culture;
  182. LocalizeDictionary.Instance.Culture = culture;
  183. base.OnStartup(e);
  184. LogHelper.WriteLogInfo("<<<=====================Team-AAS-VM Startup=====================");
  185. try
  186. {
  187. if (!RegeditHelper.IsFirstUse())
  188. {
  189. if (File.Exists(FilePath.UserDbPath))
  190. {
  191. File.Delete(FilePath.UserDbPath);
  192. }
  193. if (File.Exists(FilePath.ProductionRecordsDbPath))
  194. {
  195. File.Delete(FilePath.ProductionRecordsDbPath);
  196. }
  197. RegeditHelper.WriteFirstLog();
  198. }
  199. RegeditHelper.WriteAppVersion(System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
  200. }
  201. catch (Exception ex)
  202. {
  203. LogHelper.WriteLogError(Lang.操作注册表时出错, ex);
  204. }
  205. }
  206. else
  207. {
  208. MessageBox.Show(Lang.程序已经在运行, "AAS",MessageBoxButton.OK,MessageBoxImage.Asterisk);
  209. this.Shutdown();
  210. }
  211. }
  212. protected override void OnExit(ExitEventArgs e)
  213. {
  214. LogHelper.WriteLogInfo("=====================Team-AAS-VM End=====================>>>");
  215. base.OnExit(e);
  216. }
  217. void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
  218. {
  219. //可以记录日志并转向错误bug窗口友好提示用户
  220. e.Handled = true;
  221. LogHelper.WriteLogFatal("Application has crashed", e.Exception);
  222. MessageBox.Show("Error:" + e.Exception.Message + " " + e.Exception.StackTrace,"AAS",MessageBoxButton.OK,MessageBoxImage.Asterisk);
  223. }
  224. private static void UnhandledExceptionOccured(object sender, UnhandledExceptionEventArgs args)
  225. {
  226. //全局异常记录
  227. var e = (Exception)args.ExceptionObject;
  228. LogHelper.WriteLogFatal("Application has crashed", e);
  229. MessageBox.Show($"Error: something went wrong and the application must close:{e.ToString()} ", "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
  230. }
  231. }
  232. }