Exemple #1
0
        /// <summary>
        /// 发送string数据命令
        /// </summary>
        /// <param name="strSend"></param>
        /// <param name="Overtime"></param>
        /// <returns></returns>
        //public string SendReceStr(string strSend, int Overtime)
        //{
        //    string strRece="";
        //    try
        //    {
        //        if (!(comPort.IsOpen)) comPort.Open();
        //        comPort.ReadExisting();
        //        comPort.Write(strSend);
        //        System.Threading.Thread.Sleep(Overtime);
        //        strRece = comPort.ReadExisting();
        //    }
        //    catch (Exception ex)
        //    {
        //        if (frmMain.blDebug)
        //            MessageUtil.ShowTips(ex.Message);
        //    }
        //    return strRece;
        //}

        public string SendReceStr(string strSend, int Overtime, IsWait isWait)
        {
            string strRece = "";

            try
            {
                if (!(comPort.IsOpen))
                {
                    comPort.Open();
                }
                comPort.ReadExisting();
                comPort.Write(strSend);
                for (int i = 0; i < Overtime; i++)
                {
                    if (isWait == IsWait.OnlyWait)
                    {
                        Thread.Sleep(100);
                    }
                    else if (isWait == IsWait.CanStop)
                    {
                        if (clsEnvirControl.blAskAir)
                        {
                            Thread.Sleep(100);
                        }
                        else
                        {
                            i = Overtime;
                        }
                    }
                }
                strRece = comPort.ReadExisting();
            }
            catch (Exception ex)
            {
                if (frmMain.blDebug)
                {
                    MessageUtil.ShowTips(ex.Message);
                }
            }
            return(strRece);
        }
Exemple #2
0
        /// <summary>
        /// 设置空调厂家
        /// </summary>
        /// <param name="bAddr"></param>
        /// <param name="bTemp"></param>
        public bool OtherAirSetType(byte bAddr, byte bFactory, int iCode, IsWait isWait)
        {
            bool blRet = false;

            if (bAddr >= 10)
            {
                Byte bHAddr = (byte)(bAddr % 10);
                OtherAirType[3] = (byte)(bHAddr + 0x30);//地址高位
            }
            else
            {
                OtherAirType[4] = (byte)(bAddr + 0x30); //地址低位
            }
            OtherAirType[5] = 0x02;                     //设置空调厂家
            OtherAirType[7] = bFactory;;
            OtherAirType[6] = 0x00;
            //校验
            OtherAirType[9]  = (byte)(OtherAirType[5] ^ OtherAirType[6] ^ OtherAirType[7] ^ OtherAirType[8]);
            OtherAirType[11] = (byte)iCode;
            OtherAirType[10] = (byte)(iCode >> 8);
            byte[] bRece    = new byte[14];
            int    iReceLen = serial.SendReceByte(OtherAirType, ref bRece, 10, isWait);

            //txt 发送 接受
            txtLog.TxtWriteByte("Air.txt", "OtherAirCode Send", OtherAirType, false);
            if (iReceLen > 0)
            {
                txtLog.TxtWriteByte("Air.txt", "OtherAirCode Rece", bRece, true);
            }
            if (iReceLen == 14)
            {
                byte ReceCheck = (byte)(bRece[5] ^ bRece[6] ^ bRece[7] ^ bRece[8]);
                if (bRece[0] == OtherAirType[0] && bRece[1] == OtherAirType[1] && bRece[2] == OtherAirType[2] && bRece[3] == OtherAirType[3] && bRece[4] == OtherAirType[4] &&
                    bRece[5] == 0x02 && bRece[9] == ReceCheck && bRece[13] == 0x0D)//&& bRece[12] == 0x01
                {
                    blRet = true;
                }
            }
            return(blRet);
        }
Exemple #3
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);
        }
Exemple #4
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);
        }
Exemple #5
0
        /// <summary>
        /// 开启关闭 设备 空调、加热、除湿、新风
        /// </summary>
        /// <param name="Addr">板地址</param>
        /// <param name="bOnOff">开启关闭4</param>
        /// <param name="bHotDehumi">继电器序号 加热为0 除湿为1 即继电器0 继电器1 </param>
        public bool OnOffDevice(int Addr, OnOffRelay bOnOff, DeviceRelayNo bRelayNo, string area, DeviceRunModel runModel, bool blRecord, IsWait isWait)
        {
            bool blRet = false;

            SendRelay[0] = (byte)Addr;
            SendRelay[1] = 0x05;
            SendRelay[2] = 0x00;
            SendRelay[3] = (byte)bRelayNo;
            SendRelay[4] = (byte)bOnOff;
            SendRelay[5] = 0x00;
            ushort crc = crc16.CalculateCrc16(SendRelay, 6);

            SendRelay[7] = (byte)(crc);
            SendRelay[6] = (byte)(crc >> 8);

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

            //txt 发送 接受
            txtLog.TxtWriteByte("Io.txt", "OnOff Send", SendRelay, false);
            if (iReceLen > 0)
            {
                txtLog.TxtWriteByte("Io.txt", "OnOff Rece", bRece, true);
            }
            if (iReceLen == 8 && bRece[0] == SendRelay[0] && bRece[1] == SendRelay[1] && bRece[2] == SendRelay[2] && bRece[3] == SendRelay[3] &&
                bRece[4] == SendRelay[4] && bRece[5] == SendRelay[5] && bRece[6] == SendRelay[6] && bRece[7] == SendRelay[7])
            {
                blRet = true;

                if (blRecord)
                {
                    EventType eventType = EventType.初值;
                    switch (bRelayNo)
                    {
                    case DeviceRelayNo.除湿:
                        eventType = EventType.除湿;
                        break;

                    case DeviceRelayNo.烘干:
                        eventType = EventType.烘干;
                        break;

                    case DeviceRelayNo.警灯:
                        eventType = EventType.警灯;
                        break;

                    case DeviceRelayNo.新风:
                        eventType = EventType.新风;
                        break;
                    }
                    string strContent = bOnOff.ToString();
                    if (eventType != EventType.初值)
                    {
                        NewEventRecord(eventType, area, runModel, strContent);
                        //commonCls.NewEnvirEventRecord(eventType, area, runModel, strContent);
                        //if (NewEventShowEvent != null)
                        //{
                        //    NewEventShowEvent(new NewEventEventArgs(eventType, area, strContent, "", ""));
                        //}
                    }
                }
            }
            return(blRet);
        }
Exemple #6
0
        /// <summary>
        /// 发送 接受 byte数据命令
        /// </summary>
        /// <param name="SendData">发送数据</param>
        /// <param name="ReceiveData">接收数据</param>
        /// <param name="Overtime">重复次数</param>
        /// <returns></returns>
        public int SendReceByte(byte[] SendData, ref byte[] ReceiveData, int Overtime, IsWait isWait)
        {
            int ret = 0;

            try
            {
                //OpenPort();
                if (!(comPort.IsOpen))
                {
                    comPort.Open();
                }
                comPort.ReadExisting();
                comPort.Write(SendData, 0, SendData.Length);
                for (int i = 0; i < Overtime; i++)
                {
                    if (isWait == IsWait.OnlyWait)
                    {
                        Thread.Sleep(100);
                    }
                    else if (isWait == IsWait.CanStop)
                    {
                        if (clsEnvirControl.blAskIo)
                        {
                            Thread.Sleep(100);
                        }
                        else
                        {
                            i = Overtime;
                        }
                    }
                }
                int iRecelen = comPort.BytesToRead;
                if (iRecelen >= ReceiveData.Length)
                {
                    ReceiveData = new byte[iRecelen];
                    ret         = comPort.Read(ReceiveData, 0, ReceiveData.Length);
                }
            }
            catch (Exception ex)
            {
                if (frmMain.blDebug)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            return(ret);
        }
Exemple #7
0
        public bool OperDevice(int Addr, OnOffRelay bOnOff, string area, DeviceRunModel runModel, bool blRecord, IsWait isWait)
        {
            bool isok = false;

            try
            {
                bool blRet = false;
                bytOperXF[0] = (byte)Addr;
                bytOperXF[1] = 0x05;
                bytOperXF[2] = 0x00;
                bytOperXF[4] = (byte)bOnOff;
                bytOperXF[5] = 0x00;
                ushort crc = crc16.CalculateCrc16(bytOperXF, 6);
                bytOperXF[7] = (byte)(crc);
                bytOperXF[6] = (byte)(crc >> 8);

                byte[] bRece    = new byte[8];
                int    iReceLen = serial.SendReceByte(bytOperXF, ref bRece, 10, isWait);
                //txt 发送 接受
                txtLog.TxtWriteByte("XF.txt", "OnOff Send", bytOperXF, false);
                if (iReceLen > 0)
                {
                    txtLog.TxtWriteByte("XF.txt", "OnOff Rece", bRece, true);
                }
                if (iReceLen == 8 && bRece[0] == bytOperXF[0] && bRece[1] == bytOperXF[1] && bRece[2] == bytOperXF[2] && bRece[3] == bytOperXF[3] &&
                    bRece[4] == bytOperXF[4] && bRece[5] == bytOperXF[5] && bRece[6] == bytOperXF[6] && bRece[7] == bytOperXF[7])
                {
                    blRet = true;

                    if (blRecord)
                    {
                        EventType eventType  = EventType.新风;
                        string    strContent = bOnOff.ToString();
                        if (eventType != EventType.初值)
                        {
                            NewEventRecord(eventType, area, runModel, strContent);
                        }
                    }
                }
                return(blRet);
            }
            catch (Exception ex)
            { }
            return(isok);
        }
Exemple #8
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);
        }
Exemple #9
0
        public bool OtherAirControl(byte bAddr, OtherAirControlType controlType, byte btContent, IsWait isWait)
        {
            bool blRet = false;

            if (bAddr >= 10)
            {
                Byte bHAddr = (byte)(bAddr % 10);
                OtherAirSend[3] = (byte)(bHAddr + 0x30);//地址高位
            }
            else
            {
                OtherAirSend[4] = (byte)(bAddr + 0x30); //地址低位
            }
            OtherAirSend[5] = (byte)controlType;        //控制类型
            OtherAirSend[6] = btContent;
            //校验
            OtherAirSend[9] = (byte)(OtherAirSend[5] ^ OtherAirSend[6] ^ OtherAirSend[7] ^ OtherAirSend[8]);
            byte[] bRece    = new byte[12];
            int    iReceLen = serial.SendReceByte(OtherAirSend, ref bRece, 10, isWait);

            //txt 发送
            txtLog.TxtWriteByte("Air.txt", "OtherAir Send", OtherAirSend, false);
            if (bRece != null && bRece.Length >= 12)
            {
                int index = bRece.FindIndex(p => p == 0x49);
                if (index >= 0)
                {
                    byte[] retdata = new byte[12];
                    Array.Copy(bRece, index, retdata, 0, 12);
                    // 接受
                    if (iReceLen > 0)
                    {
                        txtLog.TxtWriteByte("Air.txt", "OtherAir Rece", retdata, true);
                    }
                    if (retdata != null && retdata.Length == 12)
                    {
                        byte ReceCheck = (byte)(retdata[5] ^ retdata[6] ^ retdata[7] ^ retdata[8]);
                        if (retdata[0] == OtherAirSend[0] && retdata[1] == OtherAirSend[1] && retdata[2] == OtherAirSend[2] && retdata[3] == OtherAirSend[3] && retdata[4] == OtherAirSend[4] &&
                            retdata[5] == OtherAirSend[5] && retdata[6] == OtherAirSend[6] && retdata[7] == OtherAirSend[7] && retdata[8] == OtherAirSend[8] && retdata[9] == ReceCheck &&
                            retdata[11] == OtherAirSend[11])//&&bRece[10] == 0x01
                        {
                            blRet = true;
                        }
                    }
                }
            }
            return(blRet);
        }