You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

223 lines
9.2 KiB

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}");
}
}
}
}