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); }
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); }