Exemple #1
0
        /// <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("");
        }
Exemple #2
0
        /// <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("");
        }
Exemple #3
0
        /// <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("");
        }
Exemple #4
0
        /// <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("");
        }
Exemple #5
0
        /// <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());
        }
Exemple #6
0
        /// <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>();
 }
Exemple #8
0
        /// <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);
        }
Exemple #9
0
        /// <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("");
        }