Example #1
0
        /// <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;
                    }
                }
            }
        }
Example #2
0
        ///// <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);
        }
Example #3
0
        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;
        }
Example #4
0
 public clsAir(int iAddr, AirFactoryType type)
 {
     intAddr = iAddr;
     airType = type;
 }