/// <summary> /// 新增或编辑传感器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnOk_OnClick(object sender, RoutedEventArgs e) { if (GetControl()) { OperationResult result; if (_isInsert) { result = SensorApp.Insert(_sensor); message.Time = DateTime.Now; message.Messages = "新增传感器:" + _sensor.Name + " 类型:" + _sensor.Type + " 地址:" + _sensor.Address; } else { result = SensorApp.Update(_sensor); message.Time = DateTime.Now; message.Messages = "更改传感器:" + _sensor.Name + " 类型:" + _sensor.Type + " 地址:" + _sensor.Address; } if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } else { MessageApp.Insert(message); } DialogResult = true; } }
/// <summary> /// 检测传感器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnDetection_OnClick(object sender, RoutedEventArgs e) { ES.Domain.Coordinator coor = cboCoor.SelectedItem as ES.Domain.Coordinator; Sensor relay = new Sensor(); relay = cboRelay.SelectedItem as ES.Domain.Sensor; if (lblDetection.Content.ToString() == "检测") { threadPing = true; kvCoordinator.OpenSerialPort(coor.COM); Thread tStart = new Thread(new ThreadStart(tState)); tStart.IsBackground = true; tStart.Start(); OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "开始检测"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } else { lblDetection.Content = "取消"; } } else { OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "取消检测"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } else { byte[] Senddata = new byte[] { 0x00, 0x00, 0x00, 0x00, 0xFF }; kvCoordinator.SendData(relay.Type, (byte)relay.Address, Senddata); Thread.Sleep(100); threadPing = false; kvCoordinator.CloseSerialPort(); lblDetection.Content = "检测"; } } }
/// <summary> /// 确认新增/编辑协调器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnOk_OnClick(object sender, RoutedEventArgs e) { if (GetControl()) { OperationResult result; if (_isInsert) { result = CoordinatorApp.Insert(_coordinator); message.Time = DateTime.Now; message.Messages = "新增协调器:" + _coordinator.Name + " 串口号:" + _coordinator.COM + " PanID:" + _coordinator.PanID; } else { result = CoordinatorApp.Update(_coordinator); message.Time = DateTime.Now; message.Messages = "更改协调器:" + _coordinator.Name + " 串口号:" + _coordinator.COM + " PanID:" + _coordinator.PanID; } if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } else { MessageApp.Insert(message); } DialogResult = true; } }
/// <summary> /// 删除协调器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnDeleteCoor_OnClick(object sender, RoutedEventArgs e) { if (lstCoor.SelectedItem != null) { if (MessageBox.Show("是否删除该项", "询问", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { OperationResult result = null; if (GetListboxSelected() != null) { _coordinator = GetListboxSelected(); result = CoordinatorApp.Delete(_coordinator); Message message = new Message(); message.Time = DateTime.Now; message.Messages = "删除协调器:" + _coordinator.Name + " 串口号:" + _coordinator.COM + " PanID:" + _coordinator.PanID; if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); } else { MessageApp.Insert(message); SetListCoor(); } } else { MessageBox.Show("请选择要删除的协调器!"); } } } }
/// <summary> /// 智能控制 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnControl_OnClick(object sender, RoutedEventArgs e) { if (lblPort.Content.ToString() != "打开串口") { if (lblControl.Content.ToString() == "智能控制") { Thread tStart = new Thread(new ThreadStart(tState)); //开启智能控制线程 tStart.IsBackground = true; tStart.Start(); lblControl.Content = "取消"; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "开始智能控制"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { Sensor relay = new Sensor(); relay = GetListboxSelected(); lblControl.Content = "智能控制"; byte[] Senddata = new byte[] { 0x00, 0x00, 0x00, 0x00, 0xFF }; //关闭继电器 kvCoordinator.SendData(relay.Type, (byte)relay.Address, Senddata); threadPing = false; //取消Ping线程 OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "取消智能控制"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } kvCoordinator.CloseSerialPort(); } } else { MessageBox.Show("请先打开串口"); } }
/// <summary> /// 打开串口 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnOpenPortSensor_OnClick(object sender, RoutedEventArgs e) { if (lstCoor.SelectedItem != null) { if (lblPort.Content.ToString() == "打开串口") { if (lstCoor != null) { _coordinator = GetListboxSelected(); kvCoordinator.OpenSerialPort(_coordinator.COM); lblPort.Content = "关闭串口"; OperationResult result; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "打开串口:" + _coordinator.COM; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } } else { if (lblPing.Content.ToString() != "取消") { kvCoordinator.CloseSerialPort(); lblPort.Content = "打开串口"; OperationResult result; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "关闭串口:" + _coordinator.COM; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { MessageBox.Show("请先取消Ping"); } } } else { MessageBox.Show("请先选择协调器!"); } }
/// <summary> /// 保存阈值 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnSave_OnClick(object sender, RoutedEventArgs e) { SaveScheme(); //保存阈值 OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "设置智能控制阈值"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } }
/// <summary> /// 获取默认值 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnDefault_OnClick(object sender, RoutedEventArgs e) { ReadScheme(); //获取默认值 OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "获取智能控制默认值"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } }
/// <summary> /// 删除传感器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnDeleteSebsor_OnClick(object sender, RoutedEventArgs e) { if (lstCoor.SelectedItem != null) { OperationResult result = null; ShowSensorData showSensorData = GetListviewSelected(); if (showSensorData != null) { if (MessageBox.Show("是否删除该项", "询问", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { Sensor sensor; sensor = SensorApp.GetList().Where(p => p.Name == showSensorData.Name).First(); result = SensorApp.Delete(sensor); Message message = new Message(); message.Time = DateTime.Now; message.Messages = "删除" + sensor.Coordinator.Name + "协调器下" + "传感器:" + sensor.Name + " 类型:" + sensor.Type + " 地址:" + sensor.Address; if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); } else { MessageApp.Insert(message); _coordinator = GetListboxSelected(); lvSensorList.ItemsSource = ShowSensorData.ShowSensorDatasList(_coordinator); lblSensorCount.Content = "数量:" + lvSensorList.Items.Count; } } } else { MessageBox.Show("请选择要删除的传感器!"); } } }
/// <summary> /// 获取传感器数据 /// </summary> /// <param name="sensor">传感器</param> private void GetSensorData(SensorBase sensor) { ShowSensorData showSensorData; _sensor = SensorApp.GetCoorList(_coordinator).Find(p => p.Type == sensor.Type && p.Address == sensor.Addr); OperationResult result; if (_sensor != null) { try { _sensorData.SensorID = _sensor.ID; _sensorData.Time = DateTime.Now; _sensorData.Data = sensor.GetData(); result = SensorDataApp.Insert(_sensorData); Message message = new Message(); message.Time = (DateTime)_sensorData.Time; message.Messages = "获取" + _sensor.Name + "数据:" + _sensorData.Data + " 状态:" + "已连接"; MessageApp.Insert(message); showSensorData = data.Where(p => p.Name == _sensor.Name).First(); showSensorData.Data = sensor.GetData(); showSensorData.State = "已连接"; showSensorData.Time = DateTime.Now.ToString(); } catch (Exception) { } } else { MessageBox.Show("传感器信息不符,请检查设备"); } }
/// <summary> /// 获取传感器数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnPingSensor_OnClick(object sender, RoutedEventArgs e) { if (lblPort.Content.ToString() == "关闭串口") { if (lblPing.Content.ToString() == "Ping") { threadPing = true; Thread tStart = new Thread(new ThreadStart(tState)); tStart.IsBackground = true; tStart.Start(); lblPing.Content = "取消"; } else { lblPing.Content = "Ping"; threadPing = false; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "取消获取传感器数据"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } } else { MessageBox.Show("请先打开串口!"); } }
/// <summary> /// 设置继电器的智能控制 /// </summary> private void SetRelay(SensorBase sensor, bool isRelayNum, ControlApp control) { _controlApp = control; byte bIlluminance = 0x00; byte bAirTemp = 0x00; byte bAirHumi = 0x00; byte bCO2 = 0x00; byte bPM25 = 0x00; byte bSmoke = 0x00; byte bRedinfrared = 0x00;//红外 if (Convert.ToDouble(_controlApp.AirTemp) < controlApp.MinAirTemp) { bAirTemp = 0x01; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测温度小于阈值,已自动打开温控系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else if (Convert.ToDouble(_controlApp.AirTemp) > controlApp.MaxAirTemp) { bAirTemp = 0x00; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测温度大于阈值,已自动打开温控系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } if (Convert.ToDouble(_controlApp.AirHumi) < controlApp.MinAirHumi) { bAirHumi = 0x01; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测湿度小于阈值,已自动打开湿控系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else if (Convert.ToDouble(_controlApp.AirHumi) > controlApp.MaxAirHumi) { bAirHumi = 0x00; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测湿度大于阈值,已自动打开湿控系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } if (Convert.ToDouble(_controlApp.PM25) < controlApp.MinPM25) { bPM25 = 0x01; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测PM25小于阈值,已自动打开净化系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else if (Convert.ToDouble(_controlApp.PM25) > controlApp.MaxPM25) { bPM25 = 0x00; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测PM25大于阈值,已自动打开净化系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } if (Convert.ToDouble(_controlApp.C02Thickness) < controlApp.MinC02Thickness) { bCO2 = 0x01; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测CO2小于阈值,已自动打开排风系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else if (Convert.ToDouble(_controlApp.C02Thickness) > controlApp.MaxC02Thickness) { bCO2 = 0x00; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测CO2大于阈值,已自动打开湿控系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } if (Convert.ToDouble(_controlApp.Illuminance) < controlApp.MinIlluminance) { bIlluminance = 0x01; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测光照强度小于阈值,已自动打开遮阳系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else if (Convert.ToDouble(_controlApp.Illuminance) > controlApp.MaxIlluminance) { bIlluminance = 0x00; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测光照强度大于阈值,已自动打开遮阳系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } if (Convert.ToDouble(_controlApp.Smoke) != 0) { bSmoke = 0x01; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测有烟,已自动打开排风系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } if (Convert.ToDouble(_controlApp.radInfrared) != 0) { bRedinfrared = 0x01; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "智能控制:检测有人,已自动打开监测系统!"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } if (isRelayNum == true) { Thread.Sleep(10); byte[] Senddata = sensor.Data; Senddata = new byte[] { bAirTemp, bAirHumi, bCO2, bIlluminance, Senddata[4] }; kvCoordinator.SendData(sensor.Type, sensor.Addr, Senddata); } else { Thread.Sleep(10); byte[] Senddata = sensor.Data; Senddata = new byte[] { bPM25, bSmoke, bRedinfrared, Senddata[2], Senddata[3], Senddata[4] }; kvCoordinator.SendData(sensor.Type, sensor.Addr, Senddata); } }
/// <summary> /// 显示的数据 /// </summary> private void ShowData(SensorBase sensorBase, bool isStrike) { ShowInterface showInterface; if (isStrike == true) { sensor = SensorApp.GetCoorList(cboCoor.SelectedItem as ES.Domain.Coordinator) .Find(p => p.Type == sensorBase.Type && p.Address == sensorBase.Addr); //查找对应的传感器 if (sensor != null) { showInterface = showInterfaces.First(p => p.Name == sensor.Name); showInterface.Time = DateTime.Now.ToLongTimeString(); showInterface.State = "已连接"; showInterface.Strike = "已触发"; showInterfaces.ToBindingList(); OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "检测:" + showInterface.Name + " " + showInterface.State + " " + showInterface.Strike + " 已开启警报"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } else { SetRelay(sensorBase); //设置警报的继电器 } } else { MessageBox.Show("请检查连接的设备是否正确"); } } else { sensor = SensorApp.GetCoorList(cboCoor.SelectedItem as ES.Domain.Coordinator) .Find(p => p.Type == sensorBase.Type && p.Address == sensorBase.Addr); //查找对应的传感器 if (sensor != null) { showInterface = showInterfaces.First(p => p.Name == sensor.Name); showInterface.Time = DateTime.Now.ToLongTimeString(); showInterface.State = "已连接"; showInterface.Strike = "未触发"; showInterfaces.ToBindingList(); OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "检测:" + showInterface.Name + " " + showInterface.State + " " + showInterface.Strike; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { MessageBox.Show("请检查设备连接是否正确"); } } }
/// <summary> /// Checked是否选中 /// </summary> private void IsChecked() { ///co2 if (chbCO2.IsChecked != true) { chbCO2.IsChecked = true; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "二氧化碳传感器已布防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { chbCO2.IsChecked = false; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "二氧化碳传感器已撤防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } ///光强 if (chbH.IsChecked != true) { chbH.IsChecked = true; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "光照强度传感器已布防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { chbH.IsChecked = false; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "光照强度传感器已撤防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } ///pm2.5 if (chbPM25.IsChecked != true) { chbPM25.IsChecked = true; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "PM2.5传感器已布防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { chbPM25.IsChecked = false; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "PM2.5传感器已撤防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } //烟雾 if (chbSmkoe.IsChecked != true) { chbSmkoe.IsChecked = true; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "烟雾传感器已布防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { chbSmkoe.IsChecked = false; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "烟雾传感器已撤防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } ///红外 if (chbradInfrared.IsChecked != true) { chbradInfrared.IsChecked = true; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "红外传感器已布防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { chbradInfrared.IsChecked = false; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "红外传感器已撤防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } ///温湿度 if (chbT.IsChecked != true) { chbT.IsChecked = true; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "温湿度传感器已布防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } else { chbT.IsChecked = false; OperationResult result = null; Message message = new Message(); message.Time = DateTime.Now; message.Messages = "温湿度传感器已撤防"; result = MessageApp.Insert(message); if (result.ResultType != OperationResultType.Success) { MessageBox.Show(result.Message); return; } } }