251 lines
8.7 KiB
C#
251 lines
8.7 KiB
C#
using InSituLaboratory.Common;
|
|
using InSituLaboratory.Controls;
|
|
using InSituLaboratory.Entities;
|
|
using InSituLaboratory.Entities.Sensor;
|
|
using InSituLaboratory.IService;
|
|
using InSituLaboratory.IService.Sensor;
|
|
using InSituLaboratory.Models.Sendsor;
|
|
using InSituLaboratory.Service;
|
|
using InSituLaboratory.Service.Sensor;
|
|
using Prism.Commands;
|
|
using Prism.Regions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
|
|
|
namespace InSituLaboratory.ViewModels.Pages
|
|
{
|
|
/// <summary>
|
|
/// 局部电源开关控制
|
|
/// </summary>
|
|
public class RelayViewModel : ViewModelBase
|
|
{
|
|
#region Entity
|
|
public ClientModel clientModel { get; set; } = new ClientModel();
|
|
public SysSensorModel sysSensorModel { get; set; } = new SysSensorModel();
|
|
public SysSensorModels sysSensorModels { get; set; } = new SysSensorModels();
|
|
public LogModel logModel { get; set; }
|
|
public ObservableCollection<LogModel> loglist { get; set; } = new ObservableCollection<LogModel>();
|
|
public PaginationModel PaginationModel { get; set; } = new PaginationModel();
|
|
public static SocketInfo SocketInfo { get; set; } = new SocketInfo()
|
|
{
|
|
IP = tools.GetAppSetting("IP"),
|
|
Port = Convert.ToInt32(tools.GetAppSetting("Port")),
|
|
ConnectionMessage = "连接"
|
|
};
|
|
|
|
#endregion
|
|
|
|
public DelegateCommand<object> RelayCommand { get; set; }
|
|
|
|
|
|
ILogService _logService;
|
|
ISensorService _sensorService;
|
|
public RelayViewModel(IRegionManager regionManager, ILogService logService, ISensorService sensorService) : base(regionManager)
|
|
{
|
|
this.PageTitle = "通信与电源控制";
|
|
_logService = logService;
|
|
_sensorService = sensorService;
|
|
|
|
PaginationModel.NavCommand = new DelegateCommand<object>(index =>
|
|
{
|
|
PaginationModel.PageIndex = int.Parse(index.ToString());
|
|
this.Refresh();
|
|
});
|
|
RelayCommand = new DelegateCommand<object>(DoRelay);
|
|
|
|
this.Refresh();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 数据刷新
|
|
/// </summary>
|
|
public override void Refresh()
|
|
{
|
|
loglist.Clear();
|
|
var Loglist = _logService.GetLogData(SearchKey, PaginationModel.PageSize, PaginationModel.PageIndex, out int totalCount);
|
|
var SysSensorlist = _sensorService.GeSysSensor();
|
|
|
|
///列表清单数据
|
|
int index = 0;
|
|
foreach (var item in Loglist)
|
|
{
|
|
index++;
|
|
loglist.Add(new LogModel
|
|
{
|
|
DataIdNum = index + (PaginationModel.PageIndex - 1) * PaginationModel.PageSize,
|
|
CreateTime = item.CreateTime,
|
|
Remark = item.Remark
|
|
});
|
|
}
|
|
|
|
///状态监控
|
|
if (SysSensorlist.Count() != 0)
|
|
{
|
|
var data = _sensorService.GeSysSensor().FirstOrDefault();
|
|
sysSensorModel.Id = sysSensorModels.Id = data.Id;
|
|
sysSensorModel.CreateTime = sysSensorModels.CreateTime = data.CreateTime;
|
|
sysSensorModel.InComputer = sysSensorModels.InComputer = data.InComputer;
|
|
sysSensorModel.Light1 = sysSensorModels.Light1 = data.Light1;
|
|
sysSensorModel.Light2 = sysSensorModels.Light2 = data.Light2;
|
|
sysSensorModel.LightMachine = sysSensorModels.LightMachine = data.LightMachine;
|
|
sysSensorModel.ADCP = sysSensorModels.ADCP = data.ADCP;
|
|
sysSensorModel.CTD = sysSensorModels.CTD = data.CTD;
|
|
sysSensorModel.SP = sysSensorModels.SP = data.SP;
|
|
sysSensorModel.CH4 = sysSensorModels.CH4 = data.CH4;
|
|
sysSensorModel.CO2 = sysSensorModels.CO2 = data.CO2;
|
|
sysSensorModel.NetEquipment = sysSensorModels.NetEquipment = data.NetEquipment;
|
|
sysSensorModel.SerialPortServer = sysSensorModels.SerialPortServer = data.SerialPortServer;
|
|
sysSensorModel.RamanAnalyzer = sysSensorModels.RamanAnalyzer = data.RamanAnalyzer;
|
|
sysSensorModel.ZP = sysSensorModels.ZP = data.ZP;
|
|
sysSensorModel.AcousticPositioning = sysSensorModels.AcousticPositioning = data.AcousticPositioning;
|
|
sysSensorModel.Camera1 = sysSensorModels.Camera1 = data.Camera1;
|
|
sysSensorModel.Camera2 = sysSensorModels.Camera2 = data.Camera2;
|
|
sysSensorModel.ElectricSwitch2 = sysSensorModels.ElectricSwitch2 = data.ElectricSwitch2;
|
|
}
|
|
|
|
// 刷新分页组件的页码
|
|
PaginationModel.FillPageNumbers(totalCount);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 通信连接
|
|
/// </summary>
|
|
/// <param name="o"></param>
|
|
public override void DoConnection(object o)
|
|
{
|
|
if (clientModel.IsConnected)
|
|
{
|
|
clientModel.DisConnect();
|
|
SocketInfo.ConnectionMessage = "连接";
|
|
logModel = new LogModel();
|
|
logModel.CreateTime = DateTime.Now;
|
|
logModel.Remark = "客户端连接已关闭";
|
|
_logService.Insert<LogModel>(logModel);
|
|
this.Refresh();
|
|
}
|
|
else
|
|
{
|
|
if (clientModel.DoConnect(SocketInfo))
|
|
{
|
|
//更新下App.config中的配置信息
|
|
tools.UpdateAppSettings("IP", SocketInfo.IP);
|
|
tools.UpdateAppSettings("Port", SocketInfo.Port.ToString());
|
|
SocketInfo.ConnectionMessage = "断开";
|
|
|
|
logModel = new LogModel();
|
|
logModel.CreateTime = DateTime.Now;
|
|
logModel.Remark = "连接客户端成功";
|
|
_logService.Insert<LogModel>(logModel);
|
|
this.Refresh();
|
|
}
|
|
else
|
|
{
|
|
logModel = new LogModel();
|
|
logModel.CreateTime = DateTime.Now;
|
|
logModel.Remark = "连接客户端失败";
|
|
_logService.Insert<LogModel>(logModel);
|
|
this.Refresh();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public void DoRelay(object o)
|
|
{
|
|
string[] msg = o.ToString().Split(',');
|
|
int switchNum = msg[1].Equals("True") ? 1 : 0;
|
|
string MessageContent = "";
|
|
switch (msg[0])
|
|
{
|
|
//工控机
|
|
case "InComputer":
|
|
sysSensorModel.Id = sysSensorModels.Id;
|
|
sysSensorModel.InComputer = msg[1].Equals("True") ? "开" : "关";
|
|
sysSensorModel.CreateTime = DateTime.Now;
|
|
_sensorService.Update(sysSensorModel);
|
|
logModel = new LogModel();
|
|
logModel.CreateTime = DateTime.Now;
|
|
logModel.Remark = "工控机已" + sysSensorModel.InComputer;
|
|
_logService.Insert<LogModel>(logModel);
|
|
this.Refresh();
|
|
break;
|
|
//灯1
|
|
case "Light1":
|
|
|
|
break;
|
|
//灯2
|
|
case "Light2":
|
|
|
|
break;
|
|
//光通讯机
|
|
case "LightMachine":
|
|
|
|
break;
|
|
//ADCP
|
|
case "ADCP":
|
|
|
|
break;
|
|
//CTD
|
|
case "CTD":
|
|
|
|
break;
|
|
//气相色谱仪
|
|
case "SP":
|
|
|
|
break;
|
|
//甲烷传感器
|
|
case "CH4":
|
|
|
|
break;
|
|
//二氧化碳同位素分析仪
|
|
case "CO2":
|
|
|
|
break;
|
|
//备用网口设备
|
|
case "NetEquipment":
|
|
|
|
break;
|
|
//串口服务器
|
|
case "SerialPortServer":
|
|
|
|
break;
|
|
//显微拉曼分析仪
|
|
case "RamanAnalyzer":
|
|
|
|
break;
|
|
//质谱仪
|
|
case "ZP":
|
|
|
|
break;
|
|
// 声学定位
|
|
case "AcousticPositioning":
|
|
|
|
break;
|
|
//摄像1
|
|
case "Camera1":
|
|
|
|
break;
|
|
//摄像2
|
|
case "Camera2":
|
|
|
|
break;
|
|
//电交换机2
|
|
case "ElectricSwitch2":
|
|
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|