Esempio n. 1
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. 2
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);
        }