using IOTContainer.Common; using IOTContainer.Communication; using IOTContainer.MvvmBase; using IOTContainer.View; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Threading; namespace IOTContainer.ViewModel { public class InitialViewModel: ViewModelBase { [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr FindWindow(string IpClassName, string IpWindowName); DispatcherTimer timer = new DispatcherTimer(); private string _message; public string Message { get { return _message; } set { base.SetProperty(ref _message, value, "Message"); } } public InitialViewModel(bool isRegister) { ////导视屏保监测 //timer.Tick += new EventHandler(timer_Tick); //timer.Interval = TimeSpan.FromSeconds(60); Task.Run(() => { Init(isRegister); }); } private void timer_Tick(object sender, EventArgs e) { switch (ComParameters.Parameters.devType) { case "导视": case "会议室": IntPtr Win = FindWindow(null, "EdgeWindow"); if(Win == null || Win == IntPtr.Zero) { var web = new EdgeWindow(); web.Show(); } break; case "信发": { IntPtr Win1 = FindWindow(null, "ScreenWindowNew"); if (Win1 == null || Win1 == IntPtr.Zero) { ComParameters.Parameters.IsPlay = true; var scerrnview = new ScreenWindowNew(0); scerrnview.Show(); } break; } } } private void Init(bool isRegister) { try { var msg = ""; Message = "初始化中"; if (isRegister)//首次 { //设备激活api 获取mqtt地址和端口、开启mqtt Message = "设备激活中"; HttpComm.Http.Activate(out msg); if (!string.IsNullOrEmpty(msg)) { LocalStorage.DelPipRow("infos", ConfigKey.devCode); LocalStorage.DelPipRow("infos", ConfigKey.devName); Message = msg; ComParameters.Parameters.MainWindow.Dispatcher.Invoke(() => { var mess = new MessBoxWindow(msg, false) { Owner = Application.Current.MainWindow, WindowStartupLocation = WindowStartupLocation.CenterOwner }; mess.ShowDialog(); }); return; } } else { //上传前一天的日志文件 HttpComm.Http.UploadLogFile(-1); } Task.Run(() => { Message = "开启MQTT服务"; ComParameters.Parameters.MqttClient = new MqttClientCom(); ComParameters.Parameters.MqttClient.Start(ComParameters.Parameters.devCode); }); //拷贝人脸模型 var sourceDire = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "PreModel", "model"); var destDire = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); //if (Directory.Exists(sourceDire) && Directory.Exists(destDire)) //{ // Task.Run(() => // { // try // { // ComParameters.Parameters.MainWindow.Dispatcher.Invoke(() => // { // FaceWindow faceWindow = new FaceWindow(); // faceWindow.ClosedWin(); // }); // //FileManage.CopyDireToDire(sourceDire, destDire); // //FileManage.CopeReplace(sourceDire, destDire); // //Directory.Delete(destDire,true); // //File.Copy(sourceDire, AppDomain.CurrentDomain.BaseDirectory); // } // catch (Exception ex) // { // Log.MyLog.WriteLogFile($"拷贝人脸模型失败:{ex}"); // } // }); //} //检查是否有需要更新的APP和应用 Message = "检查有无更新版本"; HttpComm.Http.GetAppPackage(); //上传版本号 Message = "上传版本号"; HttpComm.Http.UploadVersion(); //获取下载地址 Message = "获取下载地址"; HttpComm.Http.GetDownloadUrl(); //重新获取一次屏保设置 Message = "获取屏保配置"; HttpComm.Http.GetProtectation(); //同步服务器时间 Message = "同步服务器时间"; HttpComm.Http.getCurrentTimestamp(); //下载分屏节目 Message = "下载分屏节目"; HttpComm.Http.DownResource(); //检查设备有无设置开关机时间 Message = "设置设备开关机时间"; HttpComm.Http.getMachineOnOffTime(); switch (ComParameters.Parameters.devType) { case "导视": case "会议室": { //下载离线接口文件 Message = "获取离线接口文件"; HttpComm.Http.GetInterfaceApi(); //下载离线资源文件 Message = "获取离线资源文件"; HttpComm.Http.GetFileSource(); break; } case "信发": { break; } default: break; } #region 添加进程守护 Task.Run(() => { //进程守护 ExternalCall.ContainerServiceLoader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "IOTContainer.exe")); //设置开机自启动 ExternalCall.SetContainerStart(); }); #endregion ComParameters.Parameters.MainWindow.Dispatcher.Invoke(() => { ComParameters.Parameters.MainViewModel.MainUserControl = new VersionInfoView(); switch (ComParameters.Parameters.devType) { case "导视": case "会议室": { if (!string.IsNullOrEmpty(ComParameters.Parameters.webVersion)) { //timer.Start(); var web = new EdgeWindow(); web.Show(); WinApi.FindSetTop(null, "EdgeWindow"); } break; } case "信发": { if (!ComParameters.Parameters.IsPlay) { //timer.Start(); ComParameters.Parameters.IsPlay = true; var scerrnview = new ScreenWindowNew(0); scerrnview.Show(); } break; } } }); //关闭桌面 ExternalCall.CloseExplorer(); Message = "完成"; } catch (Exception ex) { Log.MyLog.WriteLogFile($"设备启动失败:{ex}"); } } } }