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 { /// /// 局部电源开关控制 /// 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 loglist { get; set; } = new ObservableCollection(); 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 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(index => { PaginationModel.PageIndex = int.Parse(index.ToString()); this.Refresh(); }); RelayCommand = new DelegateCommand(DoRelay); this.Refresh(); } /// /// 数据刷新 /// 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); } /// /// 通信连接 /// /// 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); 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); this.Refresh(); } else { logModel = new LogModel(); logModel.CreateTime = DateTime.Now; logModel.Remark = "连接客户端失败"; _logService.Insert(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); 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; } } } }