예제 #1
0
        /// <summary>
        /// DKP 空调控制器 收发数据 判断接受数据 根据情况 多次或 等待发送
        /// </summary>
        /// <returns></returns>
        private CommuniState DkpDadaSendRece(IsWait isWait)
        {
            CommuniState CommuniState = CommuniState.无回复;

            byte[] bRece    = new byte[8];
            int    iReceLen = serial.SendReceByte(DjControl, ref bRece, 10, isWait);

            //txt 发送 接受
            txtLog.TxtWriteByte("Air.txt", "DjControl Send", DjControl, false);
            if (iReceLen > 0)
            {
                txtLog.TxtWriteByte("Air.txt", "DjControl Rece", bRece, true);
            }
            if (iReceLen == 8)
            {
                if (bRece[0] == DjControl[0] && bRece[1] == DjControl[1] && bRece[2] == DjControl[2] && bRece[3] == DjControl[3] &&
                    bRece[4] == DjControl[4] && bRece[5] == DjControl[5] && bRece[6] == DjControl[6] && bRece[7] == DjControl[7])
                {
                    CommuniState = CommuniState.正常;
                }
                else
                {
                    CommuniState = CommuniState.错误;
                }
            }
            else
            {
                if (iReceLen == 0)
                {
                    CommuniState = CommuniState.无回复;
                }
                else
                {
                    CommuniState = CommuniState.错误;
                }
            }
            return(CommuniState);
        }
예제 #2
0
        /// <summary>
        /// 控制大金空调 开关或模式
        /// </summary>
        public bool DjAirControl(byte bAddr, DjControlType type, byte bContent, IsWait isWiat)
        {
            bool blRet = false;

            DjControl[1] = bAddr;
            DjControl[2] = 0x03;
            DjControl[3] = 0x04;
            DjControl[4] = (byte)type;
            DjControl[5] = bContent;

            byte bCheck = 0;

            for (int i = 1; i < 6; i++)
            {
                bCheck += DjControl[i];
            }
            DjControl[6] = bCheck;
            CommuniState ret = DkpDadaSendRece(isWiat);

            if (ret == CommuniState.错误)
            {
                int iSend = 3;
                for (int i = 0; i < iSend; i++)
                {
                    Thread.Sleep(2000);
                    ret = DkpDadaSendRece(isWiat);
                    if (ret == CommuniState.正常)
                    {
                        break;
                    }
                }
            }
            if (ret == CommuniState.正常)
            {
                blRet = true;
            }
            return(blRet);
        }
예제 #3
0
        /// <summary>
        /// 连接 读写器  更新通信状态
        /// </summary>
        public void OpenRfidNewState()
        {
            if (stateNet == CommuniState.错误)
            {
                TimeSpan span = DateTime.Now - timeLinkErr;
                if (span.TotalMinutes < 1)
                {
                    return;
                }
            }
            bool blRet = OpenNetPort();

            if (blRet)
            {
                blConnent = true;
                iLinkErr  = 0;
                if (stateNet != CommuniState.正常)
                {
                    stateNet = CommuniState.正常;
                    //通信恢复正常
                }
            }
            else
            {
                iLinkErr++;
            }
            if (iLinkErr > 3)
            {
                if (stateNet != CommuniState.错误)
                {
                    stateNet = CommuniState.错误;
                    //通信异常
                }
                timeLinkErr = DateTime.Now;
            }
        }
예제 #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);
        }