private byte[] AdjustCycleDataAngle(byte[] cycleData) { (float antennaAngle, int angleInt) = AzimuthCell.GetAngleFromCycleData(cycleData); antennaAngle = Tools.ReverAngleDirection(antennaAngle); antennaAngle = Tools.StandardAngle(antennaAngle - AzAdjustment); int angleI = (int)(antennaAngle * 65535 / 360); byte azHigh = (byte)((angleI >> 8) & 0xff); byte azLow = (byte)angleI; List <byte> newData = new List <byte>(cycleData) { [28] = azHigh, [29] = azLow, [44] = azHigh, [45] = azLow }; return(newData.ToArray()); }
public int CompareTo(object obj) { if (obj == null) { return(1); } AzimuthCell otherCell = (AzimuthCell)obj; if (Tools.FloatEquals(Angle, otherCell.Angle)) { return(0); } if (Angle > otherCell.Angle) { return(1); } return(-1); }
public AzimuthCell CreateAzimuthCell(byte[] data) { int index = 0; int pos = 0; //计算方位单元编号 for (int i = 0; i < AzimuthCell.HeadLength; i++) { index = index << 8; index += data[pos++]; } AzimuthCell azCell = new AzimuthCell(index); for (int i = 0; i < AzimuthCell.ElevationCellsCount; i++) { ElevationCell elCell = CreateElevationCell(data, pos); azCell.AddElevationCell(elCell); pos += ElevationCell.TotalLength; } return(azCell); }