public static float CalDistanceByTele(LiteRange literange, TeleRange telerange) { if (telerange == null && literange == null) { return(float.Epsilon); } if (telerange.Crc == 0) { var distance = telerange.RecvDelay * Velocity + FixedOffset; return(distance < 0 ? 0 : distance); } else { return(CalDistanceByLite(literange)); } }
public static TeleRange ParseTeleRange(byte[] buffer, UInt16 msglength) { var range = new TeleRange() { SamplingStart = BitConverter.ToInt32(buffer, 0), RecvDelay = BitConverter.ToSingle(buffer, 4), ModemStyle = (byte)BitConverter.ToChar(buffer, 8), Crc = BitConverter.ToInt16(buffer, 9), Dopple = BitConverter.ToSingle(buffer, 11), //, MsgLength = msglength, Msg = new byte[msglength] }; range.ID = (byte)BitConverter.ToChar(buffer, 240); Buffer.BlockCopy(buffer, 17, range.Msg, 0, msglength); byte[] msghead = new byte[8]; Buffer.BlockCopy(range.Msg, 0, msghead, 0, 8); range.ba = new BitArray(msghead); return(range); }