/// <summary>
        /// 综合用户设置的状态与设备本身的状态,获取要写入数据库的状态(现在bz4暂时不用,值为0)
        /// </summary>
        /// <param name="state">设备本身状态</param>
        /// <param name="bz4">用户定义的状态</param>
        /// <returns></returns>
        public static short GetState(DeviceRunState state, int bz4)
        {
            short myState = (short)state;

            if ((bz4 & 0x02) == 0x02)
            {
                myState = (short)DeviceRunState.EquipmentSleep;
            }
            else if ((bz4 & 0x04) == 0x04)
            {
                myState = (short)DeviceRunState.EquipmentDebugging;
            }
            else if ((bz4 & 0x08) == 0x08)
            {
                myState = (short)DeviceRunState.EquipmentAdjusting;
            }

            return(myState);
        }
Esempio n. 2
0
        /// <summary>
        /// 更新和记录 继电器 控制设备 运行或关闭
        /// </summary>
        public void DeviceNewAndRecord(int iRoomIndex, EventType eventType, DeviceRunState onOrOff, DeviceRunModel handOrAuto, bool blRecord)
        {
            EventContent eventContent = EventContent.开启;

            if (onOrOff == DeviceRunState.运行)
            {
                eventContent = EventContent.开启;
                if (eventType == EventType.烘干)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomHot.State = DeviceRunState.运行;
                    }
                }
                else if (eventType == EventType.除湿)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomDehumi.State = DeviceRunState.运行;
                    }
                }
                else if (eventType == EventType.新风)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomFan.State = DeviceRunState.运行;
                    }
                }
            }
            else if (onOrOff == DeviceRunState.停止)
            {
                eventContent = EventContent.关闭;
                if (eventType == EventType.烘干)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomHot.State = DeviceRunState.停止;
                    }
                }
                else if (eventType == EventType.除湿)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomDehumi.State = DeviceRunState.停止;
                    }
                }
                else if (eventType == EventType.新风)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomFan.State = DeviceRunState.停止;
                    }
                }
            }
            if (handOrAuto == DeviceRunModel.手动)
            {
                if (eventType == EventType.烘干)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomHot.HandOrAuto = DeviceRunModel.手动;
                        clsEnvirControl.listRoom[iRoomIndex].roomHot.TimeHand   = DateTime.Now;
                    }
                }
                else if (eventType == EventType.除湿)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomDehumi.HandOrAuto = DeviceRunModel.手动;
                        clsEnvirControl.listRoom[iRoomIndex].roomDehumi.TimeHand   = DateTime.Now;
                    }
                }
                else if (eventType == EventType.新风)
                {
                    lock (clsEnvirControl.listRoom)
                    {
                        clsEnvirControl.listRoom[iRoomIndex].roomFan.HandOrAuto = DeviceRunModel.手动;
                        clsEnvirControl.listRoom[iRoomIndex].roomFan.TimeHand   = DateTime.Now;
                    }
                }
            }
            if (blRecord)
            {
                string strSql = "insert into tb_EnviriEvent (Type,Area,Reason,EventContent,Time)values " +
                                "('" + eventType.ToString() + "','" + clsEnvirControl.listRoom[iRoomIndex].StrName + "','" + handOrAuto.ToString() + "'," +
                                "'" + eventContent.ToString() + "','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')";
                datalogic.SqlComNonQuery(strSql);

                //if (NewEventShowEvent != null)
                //{
                //    string strPoint = strArea;
                //    if (blMoreAir)
                //        strPoint += btAddr.ToString();
                //    if (content == EventContent.设置温度)
                //    {
                //        NewEventShowEvent(new NewEventEventArgs(EventType.空调, strPoint, content.ToString() + btSetTemp.ToString(), "", ""));
                //    }
                //    else
                //    {
                //        NewEventShowEvent(new NewEventEventArgs(EventType.空调, strPoint, content.ToString(), "", ""));
                //    }
                //}
            }
        }
Esempio n. 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;
        }
Esempio n. 4
0
        /// <summary>
        /// 读大金空调运行状态
        /// </summary>
        public CommuniState DjAirReadData(byte bAddr, ref DeviceRunState state, ref AirRunModel model, ref int iSetTemp)
        {
            CommuniState CommuniState = CommuniState.无回复;

            DjAirState[1] = bAddr;
            DjAirState[2] = 0x01;
            DjAirState[3] = 0x05;
            byte bCheck = 0;

            for (int i = 1; i < 4; i++)
            {
                bCheck += DjAirState[i];
            }
            DjAirState[4] = bCheck;
            byte[] bRece    = new byte[22];
            int    iReceLen = serial.SendReceByte(DjAirState, ref bRece, 10, IsWait.CanStop);

            //txt 发送 接受
            txtLog.TxtWriteByte("Air.txt", "DjState Send", DjAirState, false);
            if (iReceLen > 0)
            {
                txtLog.TxtWriteByte("Air.txt", "DjState Rece", bRece, true);
            }
            if (iReceLen == 22)
            {
                bCheck = 0;
                for (int i = 1; i < 20; i++)
                {
                    bCheck += bRece[i];
                }
                if (bRece[0] == 0x7e && bRece[1] == bAddr && bRece[2] == 0x11 && bRece[3] == 0x05 && bRece[20] == bCheck && bRece[21] == 0x0d)
                {
                    bool blPBoard = false;//P板和空调不通信
                    for (int i = 4; i < 20; i++)
                    {
                        if (bRece[i] != 0)
                        {
                            blPBoard = true;
                            break;
                        }
                    }
                    if (blPBoard)
                    {
                        CommuniState = CommuniState.正常;
                        iSetTemp     = bRece[4];
                        if (bRece[10] == 0x00)
                        {
                            state = DeviceRunState.停止;
                        }
                        else if (bRece[10] == 0x01)
                        {
                            state = DeviceRunState.运行;
                        }
                        // 60H:送风、61H:制热、62H:制冷、63H:自动、67H:除湿
                        if (bRece[11] == 0x60)
                        {
                            model = AirRunModel.送风;
                        }
                        else if (bRece[11] == 0x61)
                        {
                            model = AirRunModel.制热;
                        }
                        else if (bRece[11] == 0x62)
                        {
                            model = AirRunModel.制冷;
                        }
                        else if (bRece[11] == 0x63)
                        {
                            model = AirRunModel.自动;
                        }
                        else if (bRece[11] == 0x67)
                        {
                            model = AirRunModel.除湿;
                        }
                    }
                    else
                    {
                        CommuniState = CommuniState.错误;
                    }
                }
            }
            return(CommuniState);
        }
        /// <summary>
        /// 生成报警记录
        /// </summary>
        /// <param name="defInfo"></param>
        /// <param name="sTime"></param>
        /// <param name="dataState"></param>
        /// <param name="state"></param>
        public static void CreateJC_BInfo(Jc_DefInfo defInfo, DateTime sTime, DeviceDataState dataState, DeviceRunState state)
        {
            Jc_BInfo alarmInfo   = new Jc_BInfo();
            string   controlport = string.Empty;

            alarmInfo.Cs      = "";
            alarmInfo.PointID = defInfo.PointID;
            alarmInfo.ID      = IdHelper.CreateLongId().ToString();
            alarmInfo.Devid   = defInfo.Devid;
            alarmInfo.Fzh     = defInfo.Fzh;
            alarmInfo.Kh      = defInfo.Kh;
            alarmInfo.Dzh     = defInfo.Dzh;
            alarmInfo.Kzk     = controlport;
            alarmInfo.Point   = defInfo.Point;

            alarmInfo.Ssz     = EnumHelper.GetEnumDescription(state);
            alarmInfo.Isalarm = (short)defInfo.Alarm;

            alarmInfo.Stime  = sTime;
            alarmInfo.Etime  = new DateTime(1900, 1, 1, 0, 0, 0);
            alarmInfo.Type   = (short)dataState;
            alarmInfo.State  = GetState((DeviceRunState)state, defInfo.Bz4);
            alarmInfo.Upflag = "0";
            alarmInfo.Wzid   = defInfo.Wzid;

            InsertJC_BInfo(alarmInfo);
        }