Пример #1
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);
        }
Пример #2
0
        public bool OtherAirControl(byte bAddr, OtherAirControlType controlType, byte btContent)
        {
            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]);

            //txt 发送
            string strContent = SerialPortUtil.ByteToStrHex(OtherAirSend);

            txtLog.WriteTxt("Air.txt", "OtherAir Send", strContent, false);

            byte[] bRece   = new byte[12];
            int    iRetLen = mainSerial.SendReceByte(OtherAirSend, ref bRece, 500);

            //txt 接受
            if (iRetLen > 0)
            {
                strContent = SerialPortUtil.ByteToStrHex(bRece);
                txtLog.WriteTxt("Air.txt", "OtherAir Rece", strContent, true);
            }

            if (iRetLen == 12)
            {
                byte ReceCheck = (byte)(bRece[5] ^ bRece[6] ^ bRece[7] ^ bRece[8]);
                if (bRece[0] == OtherAirSend[0] && bRece[1] == OtherAirSend[1] && bRece[2] == OtherAirSend[2] && bRece[3] == OtherAirSend[3] && bRece[4] == OtherAirSend[4] &&
                    bRece[5] == OtherAirSend[5] && bRece[6] == OtherAirSend[6] && bRece[7] == OtherAirSend[7] && bRece[8] == OtherAirSend[8] && bRece[9] == ReceCheck &&
                    bRece[10] == 0x01 && bRece[11] == OtherAirSend[11])
                {
                    blRet = true;
                }
            }
            return(blRet);
        }