/// <summary> /// Encode the STA and LTA Status data. /// </summary> /// <param name="ens">Ensemble.</param> /// <param name="bs">Bin Selection.</param> /// <returns>String for STA and LTA Status data.</returns> private string EncodeStatusData(DataSet.Ensemble ens, BinSelection bs) { if (ens.IsEnsembleAvail) { StringBuilder sb = new StringBuilder(); sb.Append("5"); // 5 Header sb.Append("\t" + bs.NumBinsSelected.ToString()); // Number of bins selected sb.Append(" " + ens.EnsembleData.NumBeams.ToString()); // Number of beams sb.Append(" " + bs.MinBin.ToString()); // Minimum Bin sb.Append(" " + bs.MaxBin.ToString()); // Maximum bin sb.Append("\r\n"); for (int bin = bs.MinBin - 1; bin < bs.NumBinsSelected; bin++) { sb.Append("\t"); for (int beam = 0; beam < ens.EnsembleData.NumBeams; beam++) { sb.Append(" " + -32768); // Status } sb.Append("\r\n"); } return(sb.ToString()); } return(""); }
/// <summary> /// Encode the Amplitude data. /// </summary> /// <param name="ens">Ensemble.</param> /// <param name="bs">Bin Selection.</param> /// <returns>String for Amplitude data.</returns> private string EncodeAmpData(DataSet.Ensemble ens, BinSelection bs) { if (ens.IsAmplitudeAvail) { StringBuilder sb = new StringBuilder(); sb.Append("3"); // 3 Header sb.Append("\t" + bs.NumBinsSelected.ToString()); // Number of bins selected sb.Append(" " + ens.EnsembleData.NumBeams.ToString()); // Number of beams sb.Append(" " + bs.MinBin.ToString()); // Minimum Bin sb.Append(" " + bs.MaxBin.ToString()); // Maximum bin sb.Append("\r\n"); for (int bin = bs.MinBin - 1; bin < bs.NumBinsSelected; bin++) { sb.Append("\t"); for (int beam = 0; beam < ens.EnsembleData.NumBeams; beam++) { sb.Append(" " + (ens.AmplitudeData.AmplitudeData[bin, beam]).ToString("0")); // Amp } sb.Append("\r\n"); } return(sb.ToString()); } return(""); }
/// <summary> /// Encode the Percent Good data. /// </summary> /// <param name="ens">Ensemble.</param> /// <param name="bs">Bin Selection.</param> /// <returns>String for Amplitude data.</returns> private string EncodePgData(DataSet.Ensemble ens, BinSelection bs) { if (ens.IsEnsembleAvail) { int pingCount = ens.EnsembleData.ActualPingCount; StringBuilder sb = new StringBuilder(); sb.Append("4"); // 4 Header sb.Append("\t" + bs.NumBinsSelected.ToString()); // Number of bins selected sb.Append(" " + ens.EnsembleData.NumBeams.ToString()); // Number of beams sb.Append(" " + bs.MinBin.ToString()); // Minimum Bin sb.Append(" " + bs.MaxBin.ToString()); // Maximum bin sb.Append("\r\n"); for (int bin = bs.MinBin - 1; bin < bs.NumBinsSelected; bin++) { sb.Append("\t"); for (int beam = 0; beam < ens.EnsembleData.NumBeams; beam++) { sb.Append(" " + ((ens.GoodEarthData.GoodEarthData[bin, beam] / pingCount) * 100).ToString("0")); // PG } sb.Append("\r\n"); } return(sb.ToString()); } return(""); }
/// <summary> /// Encode the Correlation data. /// </summary> /// <param name="ens">Ensemble.</param> /// <param name="bs">Bin Selection</param> /// <returns>String for Correlation data.</returns> private string EncodeCorrData(DataSet.Ensemble ens, BinSelection bs) { if (ens.IsCorrelationAvail) { StringBuilder sb = new StringBuilder(); sb.Append("2"); // 2 Header sb.Append("\t" + bs.NumBinsSelected.ToString()); // Number of bins selected sb.Append(" " + ens.EnsembleData.NumBeams.ToString()); // Number of beams sb.Append(" " + bs.MinBin.ToString()); // Minimum Bin sb.Append(" " + bs.MaxBin.ToString()); // Maximum bin sb.Append("\r\n"); for (int bin = bs.MinBin - 1; bin < bs.NumBinsSelected; bin++) { sb.Append("\t"); for (int beam = 0; beam < ens.EnsembleData.NumBeams; beam++) { sb.Append(" " + (ens.CorrelationData.CorrelationData[bin, beam] * 100).ToString("0")); // Corr } sb.Append("\r\n"); } return(sb.ToString()); } return(""); }
/// <summary> /// Encode the data into the VmDas format. /// </summary> /// <param name="ens"></param> /// <param name="bs">Bin selection.</param> private string EncodeData(DataSet.Ensemble ens, BinSelection bs) { StringBuilder sb = new StringBuilder(); sb.Append('\u0002'); // STX sb.Append(" 0"); // 0 Header sb.Append("\t" + ens.EnsembleData.EnsembleNumber); // Ensemble number sb.Append(" " + (ens.EnsembleData.Year - 2000)); // Year sb.Append(" " + ens.EnsembleData.Month); // Month sb.Append(" " + ens.EnsembleData.Day); // Day sb.Append(" " + ens.EnsembleData.Hour); // Hour sb.Append(" " + ens.EnsembleData.Minute); // Minute sb.Append(" " + ens.EnsembleData.Second); // Second sb.Append("\r\n"); sb.Append(EncodeEnuData(ens, bs)); // 1 Header (ENU) sb.Append(EncodeCorrData(ens, bs)); // 2 Header (Corr) sb.Append(EncodeAmpData(ens, bs)); // 3 Header (Amp) sb.Append(EncodePgData(ens, bs)); // 4 Header (PG) sb.Append(EncodeStatusData(ens, bs)); // 5 Header (Status) sb.Append(EncodeLeaderData(ens)); // 6 Header (Leader) sb.Append(EncodeBtData(ens)); // 7 Header (BT) sb.Append(EncodeNavData(ens)); // 8 Header (NAV) sb.Append('\u0003'); // ETX return(sb.ToString()); }
/// <summary> /// Get the Bin Selection. This will verify the selections are correct. /// </summary> /// <param name="ens">Ensemble to get the number of bins.</param> /// <param name="minBin">Mininum Bin selected.</param> /// <param name="maxBin">Maximum bin selected.</param> /// <returns>Bin Selections.</returns> private BinSelection GetBinSelection(DataSet.Ensemble ens, int minBin, int maxBin) { BinSelection bs = new BinSelection(minBin, maxBin); // Verify min and max bin is possible if (minBin > maxBin) { minBin = maxBin - 1; if (minBin < 0) { minBin = 1; maxBin = 2; } } if (ens.IsEnsembleAvail) { if (maxBin > ens.EnsembleData.NumBins) { maxBin = ens.EnsembleData.NumBins; } } bs.MinBin = minBin; bs.MaxBin = maxBin; bs.NumBinsSelected = (maxBin - minBin) + 1; return(bs); }
// Start is called before the first frame update void Start() { convInfo = "Cost: $2\nThe Conveyer moves trash."; splitInfo = "Cost: $15\nRecyling goes UP, Trash goes DOWN"; binInfo = "Cost: $10\nBlue for Recyling, Green for Trash."; infoComponent = info.GetComponent <Info>(); phaseComponent = info.GetComponentInChildren <Phase>(); trashComponent = info.GetComponentInChildren <TrashInfo>(); bComponent = BinSelection.GetComponent <BinSelection>(); }
/// <summary> /// Encode the data into the ASCII output. /// </summary> /// <param name="ens">Ensemble data.</param> /// <param name="minBin">Minimum bin selected.</param> /// <param name="maxBin">Maximum bin selected.</param> /// <returns>The bin selection and ASCII output.</returns> public VmDasAsciiOutput Encode(DataSet.Ensemble ens, int minBin, int maxBin) { // Get the bin selection BinSelection bs = GetBinSelection(ens, minBin, maxBin); VmDasAsciiOutput output = new VmDasAsciiOutput(); output.BinSelected = bs; output.Ascii = EncodeData(ens, bs); return(output); }
/// <summary> /// Decode the Earth velocity data. /// </summary> /// <param name="ens">Ensemble data.</param> /// <param name="bs">Bin Selection</param> /// <returns>Strings for the Earth Velocity data.</returns> private string EncodeEnuData(DataSet.Ensemble ens, BinSelection bs) { if (ens.IsEarthVelocityAvail) { if (ens.IsBottomTrackAvail) { // Remove the ship speed RTI.ScreenData.RemoveShipSpeed.RemoveVelocity(ref ens, _prevBtEastVel, _prevBtNorthVel, _prevBtVertVel, true, true); // Store previous bottom track values if (ens.BottomTrackData.IsEarthVelocityGood()) { _prevBtEastVel = ens.BottomTrackData.EarthVelocity[0]; _prevBtNorthVel = ens.BottomTrackData.EarthVelocity[1]; _prevBtVertVel = ens.BottomTrackData.EarthVelocity[2]; } } StringBuilder sb = new StringBuilder(); sb.Append("1"); // 1 Header sb.Append("\t" + bs.NumBinsSelected.ToString()); // Number of bins selected sb.Append(" " + ens.EnsembleData.NumBeams.ToString()); // Number of beams sb.Append(" " + bs.MinBin.ToString()); // Minimum Bin sb.Append(" " + bs.MaxBin.ToString()); // Maximum bin sb.Append(" 0 0 0 0"); // Reference Layers sb.Append("\r\n"); for (int bin = bs.MinBin - 1; bin < bs.NumBinsSelected; bin++) { // Check for bad values and convert from m/s to mm/s sb.Append("\t"); // East if (ens.EnsembleData.NumBeams >= 1) { long east = -32768; if (ens.EarthVelocityData.EarthVelocityData[bin, 0] != DataSet.Ensemble.BAD_VELOCITY) { east = (long)Math.Round(ens.EarthVelocityData.EarthVelocityData[bin, 0]) * 1000; } sb.Append(" " + east); // East } // North if (ens.EnsembleData.NumBeams >= 2) { long north = -32768; if (ens.EarthVelocityData.EarthVelocityData[bin, 1] != DataSet.Ensemble.BAD_VELOCITY) { north = (long)Math.Round(ens.EarthVelocityData.EarthVelocityData[bin, 1]) * 1000; } sb.Append(" " + north); // North } // Vertical if (ens.EnsembleData.NumBeams >= 3) { long vert = -32768; if (ens.EarthVelocityData.EarthVelocityData[bin, 2] != DataSet.Ensemble.BAD_VELOCITY) { vert = (long)Math.Round(ens.EarthVelocityData.EarthVelocityData[bin, 2]) * 1000; } sb.Append(" " + vert); // Vertical } // Error if (ens.EnsembleData.NumBeams >= 4) { long error = -32768; if (ens.EarthVelocityData.EarthVelocityData[bin, 3] != DataSet.Ensemble.BAD_VELOCITY) { error = (long)Math.Round(ens.EarthVelocityData.EarthVelocityData[bin, 3]) * 1000; } sb.Append(" " + error); // Error } sb.Append("\r\n"); } return(sb.ToString()); } return(""); }