/// <summary> /// 加载房间设备 一个房间对应的温湿度、烟感、空调控制器地址等 /// </summary> public void LoadRooms() { clsEnvirControl.listRoom.Clear(); //string strSql = "select ID,RoomName,WsdAddr1,WsdAddr2,FireAddr1,FireAddr2,RelayAddr,AirAddr,AirFactory,AirAddr2,AirFactory2 from tb_RoomInfo "; //DataTable dtRoom = datalogic.GetDataTable(strSql); IList <TbRoominfo> list = TbRoominfo.FindAll("", "ID ASC", "", 0, 0); if (list != null && list.Count > 0) { foreach (TbRoominfo roominfo in list) { try { int iWsd1 = 0; int iWsd2 = 0; int iAir1 = 0; int iAir2 = 0; int iRelay = 0; RoomClass room = new RoomClass(roominfo.RoomName); room.YGCount = roominfo.YGCount; room.WSDCount = roominfo.WSDCount; room.KTCount = roominfo.KTCount; room.IsExistCSJ = roominfo.IsExistCsj == DeviceUsing.启用.ToString() ? true : false; room.IsExistJDQ = roominfo.IsExistRealy == DeviceUsing.启用.ToString() ? true : false; room.IsExistJRQ = roominfo.IsExistJrq == DeviceUsing.启用.ToString() ? true : false; room.IsExistXF = roominfo.IsExistXf == DeviceUsing.启用.ToString() ? true : false; //温湿度 if (!string.IsNullOrEmpty(roominfo.WsdAddr1)) { iWsd1 = Convert.ToInt32(roominfo.WsdAddr1); } if (!string.IsNullOrEmpty(roominfo.WsdAddr2)) { iWsd2 = Convert.ToInt32(roominfo.WsdAddr2); } if (roominfo.WSDCount > 0) { if (iWsd1 != 0) { clsWsd wsd = new clsWsd(iWsd1); room.listWsd.Add(wsd); } if (iWsd2 != 0) { clsWsd wsd = new clsWsd(iWsd2); room.listWsd.Add(wsd); } } //烟感 if (!string.IsNullOrEmpty(roominfo.FireAddr1)) { clsFire fire = new clsFire(roominfo.FireAddr1); room.listFire.Add(fire); } if (!string.IsNullOrEmpty(roominfo.FireAddr2)) { clsFire fire = new clsFire(roominfo.FireAddr2); room.listFire.Add(fire); } //空调控制器 if (roominfo.KTCount >= 2) {//2个空调 if (!string.IsNullOrEmpty(roominfo.AirAddr)) { iAir1 = Convert.ToInt32(roominfo.AirAddr); } if (!string.IsNullOrEmpty(roominfo.AirAddr2)) { iAir2 = Convert.ToInt32(roominfo.AirAddr2); } if (iAir1 != 0) { AirFactoryType airType = AirFactoryType.大金; if (roominfo.AirFactory != "大金") { airType = AirFactoryType.其他; } clsAir air = new clsAir(iAir1, airType); room.listAir.Add(air); } if (iAir2 != 0) { AirFactoryType airType = AirFactoryType.大金; if (roominfo.AirFactory2 != "大金") { airType = AirFactoryType.其他; } clsAir air = new clsAir(iAir2, airType); room.listAir.Add(air); } } else { if (!string.IsNullOrEmpty(roominfo.AirAddr)) { iAir1 = Convert.ToInt32(roominfo.AirAddr); } if (iAir1 != 0) { AirFactoryType airType = AirFactoryType.大金; if (roominfo.AirFactory != "大金") { airType = AirFactoryType.其他; } clsAir air = new clsAir(iAir1, airType); room.listAir.Add(air); } } //继电器板 if (!string.IsNullOrEmpty(roominfo.RelayAddr)) { iRelay = Convert.ToInt32(roominfo.RelayAddr); } if (iRelay != 0) { room.roomRelay = new clsRelay(iRelay); } clsEnvirControl.listRoom.Add(room); } catch (Exception ex) { if (frmMain.blDebug) { MessageUtil.ShowTips(ex.Message); } } } RoomClass roomrelay = clsEnvirControl.listRoom.Find(p => p.roomRelay != null); foreach (RoomClass room in clsEnvirControl.listRoom) { if (room.roomRelay == null) { room.roomRelay = roomrelay.roomRelay; } } } }
///// <summary> ///// 新告警显示 事件 ///// </summary> //public event NewEventShowEventHandler NewAlarmShowEvent; #endregion /// <summary> /// 空调控制 及SQL 存储 /// </summary> public bool AirControl(AirFactoryType factory, byte btAddr, EventContent content, byte btSetTemp, string strArea, DeviceRunModel runMode, bool blMoreAir, IsWait isWait) { bool blRet = false; string strContent = content.ToString(); #region 大金 空调控制 if (factory == AirFactoryType.大金) { if (content == EventContent.开启 || content == EventContent.关闭) { if (content == EventContent.开启) { blRet = DjAirControl(btAddr, DjControlType.开关, (byte)DjOnOff.开启, isWait); } else if (content == EventContent.关闭) { blRet = DjAirControl(btAddr, DjControlType.开关, (byte)DjOnOff.关闭, isWait); } } else if (content == EventContent.设置制冷 || content == EventContent.设置制热 || content == EventContent.设置除湿) { if (content == EventContent.设置制冷) { blRet = DjAirControl(btAddr, DjControlType.模式, (byte)DjModel.制冷, isWait); } else if (content == EventContent.设置制热) { blRet = DjAirControl(btAddr, DjControlType.模式, (byte)DjModel.制热, isWait); } else if (content == EventContent.设置除湿) { } } else if (content == EventContent.设置温度) { blRet = DjAirControl(btAddr, DjControlType.温度, btSetTemp, isWait); strContent = content.ToString() + btSetTemp.ToString(); } } #endregion #region 其他 空调控制 else if (factory == AirFactoryType.其他) { if (content == EventContent.开启 || content == EventContent.关闭) { if (content == EventContent.开启) { blRet = OtherAirControl(btAddr, OtherAirControlType.开关, (byte)OtherAirOnOff.开启, isWait); } else if (content == EventContent.关闭) { blRet = OtherAirControl(btAddr, OtherAirControlType.开关, (byte)OtherAirOnOff.关闭, isWait); } } else if (content == EventContent.设置制冷 || content == EventContent.设置制热 || content == EventContent.设置除湿) { if (content == EventContent.设置制冷) { blRet = OtherAirControl(btAddr, OtherAirControlType.模式, (byte)OtherAirModelType.制冷, isWait); } else if (content == EventContent.设置制热) { blRet = OtherAirControl(btAddr, OtherAirControlType.模式, (byte)OtherAirModelType.制热, isWait); } else if (content == EventContent.设置除湿) { } } else if (content == EventContent.设置温度) { blRet = OtherAirControl(btAddr, OtherAirControlType.温度, btSetTemp, isWait); strContent = content.ToString() + btSetTemp.ToString(); } } #endregion if (blRet) { commonCls.NewEnvirEventRecord(EventType.空调, strArea, runMode, strContent); if (NewEventShowEvent != null) { string strPoint = strArea + " "; if (blMoreAir) { strPoint += btAddr.ToString(); strPoint += "#空调"; } if (content == EventContent.设置温度) { NewEventShowEvent(new NewEventEventArgs(EventType.空调, strPoint, content.ToString() + btSetTemp.ToString(), "", "", DateTime.Now)); } else { NewEventShowEvent(new NewEventEventArgs(EventType.空调, strPoint, content.ToString(), "", "", DateTime.Now)); } } } return(blRet); }
private void sbtnAirSet_Click(object sender, EventArgs e) { string strOnOff = cbbAirOnOff.Text; string strMode = cbbModel.Text; string strTemp = tbAirTemp.Text; if (string.IsNullOrEmpty(strOnOff)) { MessageUtil.ShowError("空调启停不可为空!"); return; } if (string.IsNullOrEmpty(strMode)) { MessageUtil.ShowError("空调模式不可为空!"); return; } if (string.IsNullOrEmpty(strTemp)) { MessageUtil.ShowError("空调设置温度不可为空!"); return; } sbtnAirSet.Enabled = false; clsEnvirControl.blAskAir = false; iAirClick = 30; Thread.Sleep(600); #region 空调控制 DeviceRunState state = DeviceRunState.停止; EventContent OnOff = EventContent.关闭; if (cbbAirOnOff.Text == DeviceRunState.停止.ToString()) { OnOff = EventContent.关闭; state = DeviceRunState.停止; } else if (cbbAirOnOff.Text == DeviceRunState.运行.ToString()) { OnOff = EventContent.开启; state = DeviceRunState.运行; } AirRunModel airRunModel = AirRunModel.制冷; EventContent model = EventContent.设置制冷; if (cbbModel.Text == AirRunModel.制冷.ToString()) { airRunModel = AirRunModel.制冷; model = EventContent.设置制冷; } else if (cbbModel.Text == AirRunModel.制热.ToString()) { airRunModel = AirRunModel.制热; model = EventContent.设置制热; } byte bTemp = Convert.ToByte(tbAirTemp.Text); string strArea = clsEnvirControl.listRoom[iIndex].StrName; bool blMoreAir = false;//是否 为 一个房间多台空调 if (clsEnvirControl.listRoom[iIndex].listAir.Count > 1) { blMoreAir = true; } for (int iIndexAir = 0; iIndexAir < clsEnvirControl.listRoom[iIndex].listAir.Count; iIndexAir++)//房间内的 所有空调 { #region 启停 if (clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].State != state) { AirFactoryType factory = clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].AirType; byte addr = (byte)clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].IntAddr; bool blRet = serialAir.AirControl(factory, addr, OnOff, 26, strArea, DeviceRunModel.手动, blMoreAir, IsWait.OnlyWait); if (blRet) { lock (clsEnvirControl.listRoom) { clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].State = state; clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].HandOrAuto = DeviceRunModel.手动; clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].TimeHand = DateTime.Now; } } else { MessageUtil.ShowTips(addr.ToString() + "#空调启停设置失败!"); iAirClick = 0; clsEnvirControl.blAskAir = true; sbtnAirSet.Enabled = true; return; } } #endregion #region 模式 if (clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].Model != airRunModel) { AirFactoryType factory = clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].AirType; byte addr = (byte)clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].IntAddr; bool blRet = serialAir.AirControl(factory, addr, model, 26, strArea, DeviceRunModel.自动, blMoreAir, IsWait.OnlyWait); if (blRet) { lock (clsEnvirControl.listRoom) { clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].Model = airRunModel; clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].HandOrAuto = DeviceRunModel.手动; clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].TimeHand = DateTime.Now; } } else { MessageUtil.ShowTips(addr.ToString() + "# 空调模式设置失败!"); iAirClick = 0; clsEnvirControl.blAskAir = true; sbtnAirSet.Enabled = true; return; } } #endregion #region 温度 if (clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].IntTempSet != bTemp) { AirFactoryType factory = clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].AirType; byte addr = (byte)clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].IntAddr; bool blRet = serialAir.AirControl(factory, addr, EventContent.设置温度, bTemp, strArea, DeviceRunModel.自动, blMoreAir, IsWait.OnlyWait); if (blRet) { lock (clsEnvirControl.listRoom) { clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].IntTempSet = clsEnvirSet.intSetTempCool; clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].HandOrAuto = DeviceRunModel.手动; clsEnvirControl.listRoom[iIndex].listAir[iIndexAir].TimeHand = DateTime.Now; } } else { MessageUtil.ShowTips(addr.ToString() + "# 空调温度设置失败!"); iAirClick = 0; clsEnvirControl.blAskAir = true; sbtnAirSet.Enabled = true; return; } } #endregion } #endregion iAirClick = 0; clsEnvirControl.blAskAir = true; sbtnAirSet.Enabled = true; }
public clsAir(int iAddr, AirFactoryType type) { intAddr = iAddr; airType = type; }