|
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Configuration;
- using ModbusDemo.Device;
- using ModbusDemo.Model;
- using ModbusDemo.VIew;
- using ModbusDemo.VIewModel;
- using Prism.DryIoc;
- using Prism.Ioc;
- using System;
- using System.Configuration;
- using System.Data;
- using System.DirectoryServices;
- using System.IO;
- using System.IO.Ports;
- using System.Security.Cryptography;
- using System.Text;
- using System.Windows;
-
- namespace ModbusDemo
- {
- /// <summary>
- /// Interaction logic for App.xaml
- /// </summary>
- public partial class App : PrismApplication
- {
- /// <summary>
- /// 创建启动页面
- /// </summary>
- /// <returns>启动页面</returns>
- protected override Window CreateShell()
- {
- return Container.Resolve<MainWindow>();
- }
- /// <summary>
- /// 实现控制反转和依赖注入功能
- /// </summary>
- /// <param name="containerRegistry"></param>
- protected override void RegisterTypes(IContainerRegistry containerRegistry)
- {
- //将主页面和主页面的VM结合起来
- containerRegistry.RegisterForNavigation<MainWindow, MainWindowViewModel>();
- //将线圈操作页面和线圈操作页面的VM结合起来
- containerRegistry.RegisterForNavigation<CoilUC, CoilUCViewModel>();
- //将寄存器操作页面和寄存器操作页面的VM结合起来
- containerRegistry.RegisterForNavigation<RegisterUC, RegisterUCViewModel>();
- //将寄存器操作页面和寄存器操作页面的VM结合起来
- containerRegistry.RegisterForNavigation<SettingsUC, SettingsUCViewModel>();
- //将串口注册为全局唯一的单例
- containerRegistry.RegisterSingleton<SerialPort>();
- //将读线圈注册
- containerRegistry.Register<ModbusRTU>();
- //附加功能如何读取单数寄存器;
- containerRegistry.RegisterForNavigation<AttachUC, AttachUCViewModel>();
-
-
- // 1. 加载配置文件
- var configuration = new ConfigurationBuilder()
- .SetBasePath(Directory.GetCurrentDirectory())
- .AddJsonFile("appsettings.json")
- .Build();
- // 2.解密连接字符串
- string decryptedConnection = Decrypt(configuration.GetConnectionString("ConnStr"));
- // 3. 配置 DbContextOptions
- var options = new DbContextOptionsBuilder<ModbusDbContext>()
- .UseSqlServer(decryptedConnection)
- .Options;
-
- // 4. 注册 DbContext
- containerRegistry.Register<ModbusDbContext>(() => new ModbusDbContext(options));
- }
- /// <summary>
- /// 程序打开默认是设置界面,来设置串口的各个东西
- /// </summary>
- protected override void OnInitialized()
- {
- MainWindowViewModel mainWindowViewModel = App.Current.MainWindow.DataContext as MainWindowViewModel;
- mainWindowViewModel!.DefultNaigation();
- base.OnInitialized();
- }
- //硬编码
- private static readonly byte[] Key = Encoding.UTF8.GetBytes("8Jn3pQ7sV9y$B&E)"); // 16字节,AES-128
- private static readonly byte[] IV = Encoding.UTF8.GetBytes("2r5u8x/A?D*G-KaP"); // 16字节
-
- /// <summary>
- /// 解密字符串
- /// </summary>
- /// <param name="encryptedText">加密后的Base64字符串</param>
- /// <returns>解密后的原始字符串</returns>
- public static string Decrypt(string encryptedText)
- {
- if (string.IsNullOrEmpty(encryptedText))
- return string.Empty;
-
- using (Aes aes = Aes.Create())
- {
- aes.Key = Key;
- aes.IV = IV;
-
- // 创建解密器
- ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
-
- using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(encryptedText)))
- {
- using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
- {
- using (StreamReader sr = new StreamReader(cs))
- {
- return sr.ReadToEnd();
- }
- }
- }
- }
- }
- }
-
- }
|