Example #1
0
        public void Should_works_disconnected()
        {
            CreateEnvironmentNode("default");
            CreateApplicationNode("default", "application");
            CreateReplicaNode(new ReplicaInfo("default", "application", "https://github.com/vostok"));

            using (var storage = GetApplicationsStorage())
            {
                var properties = new Dictionary <string, string>
                {
                    { "key", "value" }
                };

                CreateApplicationNode("default", "application", properties);

                var expected = ServiceTopology.Build(new List <Uri> {
                    new Uri("https://github.com/vostok")
                }, properties);

                ShouldReturnImmediately(storage, "default", "application", expected);

                Ensemble.Stop();
                ShouldReturnImmediately(storage, "default", "application", expected);

                Ensemble.Start();
                ShouldReturnImmediately(storage, "default", "application", expected);
            }
        }
        public async Task Should_works_with_multiple_clients()
        {
            var clients = Enumerable.Range(0, 3).Select(_ => GetClient()).ToList();

            var path = "/multiple_clients";
            await client.CreateAsync(path, CreateMode.Persistent);

            var times = 0;

            foreach (var c in clients)
            {
                await c.SetDataAsync(path, new[] { (byte)++times });
                await KillSession(c, Ensemble.ConnectionString);

                await c.SetDataAsync(path, new[] { (byte)++times });
            }

            Ensemble.Stop();
            Ensemble.Start();

            foreach (var c in clients)
            {
                var data = await c.GetDataAsync(path);

                data.Data.Should().BeEquivalentTo(new[] { (byte)times });
            }
        }
Example #3
0
        public void Similarity()
        {
            Console.WriteLine("start");
            double result = Ensemble.Similarity(SimilarityType.Euclidean, System.IO.Directory.GetFiles(@"U:\JICWork\ensemble\xrn4_kmeans_k_4_init_random\", "*labels.csv"));

            Console.WriteLine(result);
        }
Example #4
0
 static public void ClearEnsembles()
 {
     Ensemble.Clear();
     EnsemblePrep.Clear();
     EnsembleAnnul.Clear();
     EnsembleDone.Clear();
 }
Example #5
0
        public void AuditionModel_WhenGivenValidData_StoresValidData()
        {
            /* Arrange */
            // Create a Mocked IHostingEnviornment
            var mockHostEnv = new Mock <IHostingEnvironment>();

            //Create a Audition Model
            var model = new AuditionModel();

            //create valid data
            var ensemble = new Ensemble();
            var audition = new Audition();
            var view     = "profile";
            var profiles = new List <Profile>();


            /* Act */
            model.Ensemble = ensemble;
            model.Audition = audition;
            model.ViewType = view;
            model.Profiles = profiles;

            /* Assert */
            Assert.IsType <Ensemble>(model.Ensemble);
            Assert.IsType <Audition>(model.Audition);
            Assert.IsType <string>(model.ViewType);
            Assert.IsAssignableFrom <ICollection <Profile> >(model.Profiles);
        }
Example #6
0
        public void EnsembleDashModel_WhenGivenValidData_StoresValidData()
        {
            /* Arrange */
            // Create a Mocked IHostingEnviornment
            var mockHostEnv = new Mock <IHostingEnvironment>();

            //Create a Dash Model
            var model = new EnsembleDashModel();

            //create valid data
            var ensemble = new Ensemble();
            var members  = new List <ProfileEnsemble>();
            var auds     = new List <Audition>();
            var audnums  = new Dictionary <int, int>();

            /* Act */
            model.Ensemble        = ensemble;
            model.Members         = members;
            model.AuditionList    = auds;
            model.AuditionNumbers = audnums;

            /* Assert */
            Assert.IsType <Ensemble>(model.Ensemble);
            Assert.IsType <List <ProfileEnsemble> >(model.Members);
            Assert.IsType <List <Audition> >(model.AuditionList);
            Assert.IsType <Dictionary <int, int> >(model.AuditionNumbers);
        }
        // GET: Cart/Select
        //Given an ensemble, this matches every player with the parts they can play.
        public IActionResult Select(int id)
        {
            Ensemble ensemble = _context.Ensemble.Find(id);

            if (ensemble == null)
            {
                return(NotFound());
            }

            CheckOutSelect outSelect = new CheckOutSelect();

            //Find all musicians that are in the selected ensemble.
            outSelect.AddAllMusicians(from musician in _context.Musician
                                      where _context.EnsemblePlayers.Any(e => e.EnsembleId == id && e.MusicianId == musician.MusicianId)
                                      select musician);

            //Find all scores that are being checked out.
            outSelect.AddAllScores(Cart.ShoppingCart);

            //Find all pieces that are in some score being checked out.
            outSelect.AddAllPieces(from piece in _context.Piece
                                   where Cart.ShoppingCart.Any(e => e.ScoreId == piece.ScoreId)
                                   select piece);

            outSelect.MatchMusicians();

            return(View(outSelect));
        }
Example #8
0
        public void EnsembleModel_WhenGivenValidData_StoresValidData()
        {
            /* Arrange */
            // Create a Mocked IHostingEnviornment
            var mockHostEnv = new Mock <IHostingEnvironment>();

            //Create a Ensemble Model
            var model = new EnsembleModel();

            //create valid data
            var ensemble    = new Ensemble();
            var profiles    = new List <Profile>();
            var instruments = new List <SelectListItem>();
            var selected    = new List <string>();
            var auds        = new HashSet <Audition>();

            /* Act */
            model.Ensemble      = ensemble;
            model.Profiles      = profiles;
            model.Instruments   = instruments;
            model.SelectedInsId = selected;
            model.Audition      = auds;

            /* Assert */
            Assert.IsType <Ensemble>(model.Ensemble);
            Assert.IsType <List <Profile> >(model.Profiles);
            Assert.IsType <List <string> >(model.SelectedInsId);
            Assert.IsAssignableFrom <ICollection <Audition> >(model.Audition);
        }
Example #9
0
        public void EnsembleTable_WhenGivenValidData_StoresValidData()
        {
            /* Arrange */
            System.DateTime testdate = new System.DateTime(2019, 5, 2);

            /* Act */
            Ensemble ensemble = new Ensemble()
            {
                EnsembleId    = 21, UserId = 1,
                Ensemble_Name = "Test Venue",
                Formed_Date   = testdate,
                Type          = "Garage Band", Genre = "Jazz",
                Pic_Url       = "/uploads/image.png", Bio = "I am a test ensemble",
                City          = "Chicago", State = "IL"
            };

            /* Assert */
            Assert.Equal(21, ensemble.EnsembleId);
            Assert.Equal(1, ensemble.UserId);
            Assert.Equal("Test Venue", ensemble.Ensemble_Name);
            Assert.Equal(testdate, ensemble.Formed_Date);
            Assert.Equal("Garage Band", ensemble.Type);
            Assert.Equal("Jazz", ensemble.Genre);
            Assert.Equal("/uploads/image.png", ensemble.Pic_Url);
            Assert.Equal("I am a test ensemble", ensemble.Bio);
            Assert.Equal("Chicago", ensemble.City);
            Assert.Equal("IL", ensemble.State);
        }
Example #10
0
        internal override InternalRegressionTree TrainingIteration(IChannel ch, bool[] activeFeatures)
        {
            Contracts.CheckValue(ch, nameof(ch));
            AgdScoreTracker trainingScores = TrainingScores as AgdScoreTracker;
            //First Let's make XK=YK as we want to fit YK and LineSearch YK
            // and call base class that uses fits XK (in our case will fir YK thanks to the swap)
            var xk = trainingScores.XK;

            trainingScores.XK = trainingScores.YK;
            trainingScores.YK = null;

            //Invoke standard gradient descent on YK rather than XK(Scores)
            InternalRegressionTree tree = base.TrainingIteration(ch, activeFeatures);

            //Reverse the XK/YK swap
            trainingScores.YK = trainingScores.XK;
            trainingScores.XK = xk;

            if (tree == null)
            {
                return(null); // No tree was actually learnt. Give up.
            }
            // ... and update the training scores that we omitted from update
            // in AcceleratedGradientDescent.UpdateScores
            // Here we could use faster way of comuting train scores taking advantage of scores precompited by LineSearch
            // But that would make the code here even more difficult/complex
            trainingScores.AddScores(tree, TreeLearner.Partitioning, 1.0);

            //Now rescale all previous trees based on ratio of new_desired_tree_scale/previous_tree_scale
            for (int t = 0; t < Ensemble.NumTrees - 1; t++)
            {
                Ensemble.GetTreeAt(t).ScaleOutputsBy(AgdScoreTracker.TreeMultiplier(t, Ensemble.NumTrees) / AgdScoreTracker.TreeMultiplier(t, Ensemble.NumTrees - 1));
            }
            return(tree);
        }
Example #11
0
        public List <ServiceDetails> GetMultiplexInformation()
        {
            IntPtr data;

            while (true)
            {
                var result = filterInterface.GetMultiplexInformation(out data);
                if ((int)result == 2)
                {
                    Thread.Sleep(50);
                }
                else
                {
                    break;
                }
            }

            var ensemble         = Ensemble.FromIntPtr(data);
            var abbreviatedLabel = ensemble.ShortLabel;
            var date             = ensemble.DateTime.Time;
            var serviceDetails   = new List <ServiceDetails>();

            foreach (var service in ensemble.Services)
            {
                foreach (var audioNode in service.AudioNodes)
                {
                    if (audioNode.ServiceType == AudioType.AacAudio)
                    {
                        continue;
                    }
                    serviceDetails.Add(new ServiceDetails(service.Label, audioNode));
                }
            }
            return(serviceDetails);
        }
Example #12
0
        public async Task <IActionResult> Edit(int id, [Bind("EnsembleId,Type")] Ensemble ensemble)
        {
            if (id != ensemble.EnsembleId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(ensemble);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!EnsembleExists(ensemble.EnsembleId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(ensemble));
        }
Example #13
0
        public void GetConnectedClient_should_return_new_after_disconnect_and_timeout()
        {
            var holder   = GetClientHolder(Ensemble.ConnectionString);
            var observer = GetObserver(holder);

            WaitForNewConnectedClient(holder);

            Ensemble.Stop();
            WaitForDisconnectedState(holder);

            Thread.Sleep(DefaultTimeout + 1.Seconds());
            holder.SessionId.Should().Be(0);

            Ensemble.Start();
            WaitForNewConnectedClient(holder);
            var sid = holder.SessionId;

            holder.SessionId.Should().NotBe(0);

            Thread.Sleep(DefaultTimeout + 1.Seconds());
            holder.SessionId.Should().Be(sid);

            VerifyObserverMessages(
                observer,
                ConnectionState.Disconnected,
                ConnectionState.Connected,
                ConnectionState.Disconnected,
                ConnectionState.Connected
                );
        }
Example #14
0
            /// <summary>
            /// Screen the data for any velocities above the surface.
            /// This will check if Range Track data exist.  If it does not,
            /// then we do not know the surface range.  It will then check that a
            /// Range track range is given.  If all the range values are bad,
            /// then we do not know the surface.  If they are good, take the average
            /// of the range.  Then determine which bin is located at and surface the water.
            /// Then mark all the velocities at and above the surface bad.
            /// </summary>
            /// <param name="ensemble">Ensemble to screen.</param>
            /// <param name="prevSurface">Previous Good range.</param>
            /// <returns>True = Screen could be done.</returns>
            public static bool Screen(ref DataSet.Ensemble ensemble, double prevSurface = DataSet.Ensemble.BAD_RANGE)
            {
                if (ensemble != null)
                {
                    // Ensure bottom track data exist
                    if (ensemble.IsRangeTrackingAvail &&        // Needed for Range Tracking Range
                        ensemble.IsAncillaryAvail &&            // Needed for Blank and Bin Size
                        ensemble.IsEnsembleAvail                // Needed for number of bins
                        )
                    {
                        // Get the bottom
                        double surface = ensemble.RangeTrackingData.GetAverageRange();

                        // Ensure we found a bottom
                        if (surface == DataSet.Ensemble.BAD_RANGE && prevSurface == DataSet.Ensemble.BAD_RANGE)
                        {
                            return(false);
                        }
                        else if (surface == DataSet.Ensemble.BAD_RANGE && prevSurface != DataSet.Ensemble.BAD_RANGE)
                        {
                            // PrevBottom is good, so use it
                            surface = prevSurface;
                        }

                        // Get the bottom bin
                        int bottomBin = Ensemble.GetBottomBin(ensemble, surface);

                        // Check if the bottom bin is at or beyond
                        // the number of bins
                        if (bottomBin < 0 || bottomBin >= ensemble.EnsembleData.NumBins)
                        {
                            return(true);
                        }

                        // Set all the velocities bad
                        // for the bins below the bottom.
                        // This will also set the Good Pings bad
                        for (int bin = bottomBin; bin < ensemble.EnsembleData.NumBins; bin++)
                        {
                            // Set the velocities bad
                            EnsembleHelper.SetVelocitiesBad(ref ensemble, bin);

                            // Set the Correlation bad
                            EnsembleHelper.SetCorelationBad(ref ensemble, bin);

                            // Set the Amplitude bad
                            EnsembleHelper.SetAmplitudeBad(ref ensemble, bin);
                        }


                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                return(false);
            }
        /// <inheritdoc />
        public SabberStoneAction Act(SabberStoneState state)
        {
            var timer     = System.Diagnostics.Stopwatch.StartNew();
            var gameState = (SabberStoneState)state.Copy();

            if (_debug)
            {
                Console.WriteLine();
            }
            if (_debug)
            {
                Console.WriteLine(Name());
            }
            if (_debug)
            {
                Console.WriteLine($"Starting a NMCTS search in turn {(gameState.Game.Turn + 1) / 2}");
            }

            // Setup and start the ensemble-search
            EnsembleSolutions = new List <SabberStoneAction>();
            var search  = (NMCTS <List <SabberStoneAction>, SabberStoneState, SabberStoneAction, object, SabberStoneAction>)Builder.Build();
            var context = SearchContext <List <SabberStoneAction>, SabberStoneState, SabberStoneAction, object, SabberStoneAction> .GameSearchSetup(GameLogic, EnsembleSolutions, gameState, null, search);

            Ensemble.EnsembleSearch(context, Searcher.Search, EnsembleSize);
            IterationsSpent = EnsembleSolutions.Sum(i => i.BudgetUsed);

            // Determine the best tasks to play based on the ensemble search, or just take the one in case of a single search.
            var solution = EnsembleSize > 1 ? Searcher.VoteForSolution(EnsembleSolutions, state) : EnsembleSolutions.First();

            if (_debug)
            {
                Console.WriteLine();
            }
            if (_debug)
            {
                Console.WriteLine($"NMCTS returned with solution: {solution}");
            }
            if (_debug)
            {
                Console.WriteLine($"My total calculation time was: {timer.ElapsedMilliseconds} ms.");
            }

            // Check if the solution is a complete action.
            if (!solution.IsComplete())
            {
                // Otherwise add an End-Turn task before returning.
                if (_debug)
                {
                    Console.WriteLine("Solution was an incomplete action; adding End-Turn task.");
                }
                solution.Tasks.Add((SabberStonePlayerTask)EndTurnTask.Any(Player));
            }

            if (_debug)
            {
                Console.WriteLine();
            }
            return(solution);
        }
        public async Task Should_return_NotConnected()
        {
            Ensemble.Stop();
            WaitForDisconnectedState(client);
            var result = await client.CreateAsync("/return_connection_loss", CreateMode.Persistent);

            result.Status.Should().Be(ZooKeeperStatus.NotConnected);
        }
Example #17
0
        internal override InternalRegressionTree TrainingIteration(IChannel ch, bool[] activeFeatures)
        {
            Contracts.CheckValue(ch, nameof(ch));
            // Fit a regression tree to the gradient using least squares.
            InternalRegressionTree tree = TreeLearner.FitTargets(ch, activeFeatures, AdjustTargetsAndSetWeights(ch));

            if (tree == null)
            {
                return(null); // Could not learn a tree. Exit.
            }
            // Adjust output values of tree by performing a Newton step.

            // REVIEW: This should be part of OptimizingAlgorithm.
            using (Timer.Time(TimerEvent.TreeLearnerAdjustTreeOutputs))
            {
                double[] backupScores = null;
                // when doing dropouts we need to replace the TrainingScores with the scores without the dropped trees
                if (DropoutRate > 0)
                {
                    backupScores          = TrainingScores.Scores;
                    TrainingScores.Scores = _scores;
                }

                if (AdjustTreeOutputsOverride != null)
                {
                    AdjustTreeOutputsOverride.AdjustTreeOutputs(ch, tree, TreeLearner.Partitioning, TrainingScores);
                }
                else if (ObjectiveFunction is IStepSearch)
                {
                    (ObjectiveFunction as IStepSearch).AdjustTreeOutputs(ch, tree, TreeLearner.Partitioning, TrainingScores);
                }
                else
                {
                    throw ch.Except("No AdjustTreeOutputs defined. Objective function should define IStepSearch or AdjustTreeOutputsOverride should be set");
                }
                if (DropoutRate > 0)
                {
                    // Returning the original scores.
                    TrainingScores.Scores = backupScores;
                }
            }
            if (Smoothing != 0.0)
            {
                SmoothTree(tree, Smoothing);
                UseFastTrainingScoresUpdate = false;
            }
            if (DropoutRate > 0)
            {
                // Don't do shrinkage if you do dropouts.
                double scaling = (1.0 / (1.0 + _numberOfDroppedTrees));
                tree.ScaleOutputsBy(scaling);
                _treeScores.Add(tree.GetOutputs(TrainingScores.Dataset));
            }
            UpdateAllScores(ch, tree);
            Ensemble.AddTree(tree);
            return(tree);
        }
        public void OnConnectionStateChanged_should_observe_disconnected()
        {
            var holder   = GetClientHolder(Ensemble.ConnectionString);
            var observer = GetObserver(holder);

            WaitForNewConnectedClient(holder);
            Ensemble.Stop();
            VerifyObserverMessages(observer, ConnectionState.Disconnected, ConnectionState.Connected, ConnectionState.Disconnected);
        }
        public void OnConnectionStateChanged_should_observe_disconnected_as_initial_state()
        {
            Ensemble.Stop();

            var holder   = GetClientHolder(Ensemble.ConnectionString, 1.Seconds());
            var observer = GetObserver(holder);

            VerifyObserverMessages(observer, ConnectionState.Disconnected);
        }
        //GET: Score/Details
        //Returns a page displaying all the information about a score.
        public async Task <IActionResult> Details(int id)
        {
            Ensemble ensemble = await _context.Ensemble.FindAsync(id);

            if (ensemble == null)
            {
                return(NotFound());
            }
            return(View(ensemble));
        }
        public async Task Should_reconnect()
        {
            Ensemble.Stop();
            WaitForDisconnectedState(client);
            Ensemble.Start();

            var result = await client.CreateAsync("/reconnect", CreateMode.Persistent);

            result.EnsureSuccess();
        }
Example #22
0
        public Predictors <TOutput> Train(Datasets data
                                          , Func <int, double> learningRateSchedule = null  // optional: learning rate as a function of iteration (zero-based)
                                          )
        {
            // For multi class, the number of labels is required.
            if (!(PredictionKind != PredictionKind.MultiClassClassification || Objective.NumClass > 1))
            {
                throw new Exception("LightGBM requires the number of classes to be specified in the parameters for multi-class classification.");
            }

            if (PredictionKind == PredictionKind.Ranking)
            {
                if (data.Training.GetGroups() == null)
                {
                    throw new Exception("Require Groups training data for ObjectiveType.LambdaRank");
                }
                if (data.Validation != null && data.Validation.GetGroups() == null)
                {
                    throw new Exception("Require Groups validation data for ObjectiveType.LambdaRank");
                }
            }

            TrainMetrics.Clear();
            ValidMetrics.Clear();
            Booster?.Dispose();
            Booster = null;

            Datasets = data;

            var args = GetParameters(data);

            Booster = Train(args, data.Training, data.Validation, TrainMetrics, ValidMetrics, learningRateSchedule);

            (var model, var argsout) = Booster.GetModel();
            TrainedEnsemble          = model;
            FeatureCount             = data.Training.NumFeatures;

            // check parameter strings
            if (learningRateSchedule != null)
            {
                argsout.Learning.LearningRate = args.Learning.LearningRate;
            }
            var strIn  = args.ToString();
            var strOut = argsout.ToString();

            if (strIn != strOut)
            {
                throw new Exception($"Parameters differ:\n{strIn}\n{strOut}");
            }

            var managed = CreateManagedPredictor();
            var native  = CreateNativePredictor();

            return(new Predictors <TOutput>(managed, native));
        }
Example #23
0
        private Ensemble GetBinaryEnsemble(int classID)
        {
            var      numClass = Objective.NumClass;
            Ensemble res      = new Ensemble();

            for (int i = classID; i < TrainedEnsemble.NumTrees; i += numClass)
            {
                res.AddTree(TrainedEnsemble.GetTreeAt(i));
            }
            return(res);
        }
Example #24
0
        public async Task <IActionResult> Create([Bind("EnsembleId,Type")] Ensemble ensemble)
        {
            if (ModelState.IsValid)
            {
                _context.Add(ensemble);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(ensemble));
        }
        public void GetConnectedClient_should_be_null_after_timeout()
        {
            Ensemble.Stop();

            var holder = GetClientHolder(Ensemble.ConnectionString, 1.Seconds());

            holder.GetConnectedClient().ShouldCompleteIn(1.5.Seconds());

            holder.ConnectionState.Should().Be(ConnectionState.Disconnected);
            holder.SessionId.Should().Be(0);
        }
Example #26
0
        private async Task EnsembleThread(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                await SleepRandom();

                Ensemble.Stop();
                await SleepRandom();

                Ensemble.Start();
            }
        }
        private void calculateButton_Click(object sender, EventArgs e)
        {
            string[] items = new string[fileListBox.Items.Count];
            for (int i = 0; i < items.Length; i++)
            {
                items[i] = fileListBox.Items[i].ToString();
            }
            SimilarityType type = SimilarityType.Euclidean;

            Enum.TryParse <SimilarityType>(similarityTypeComboBox.SelectedValue.ToString(), out type);
            resultTextBox.Text = Ensemble.Similarity(type, items).ToString("0.00000");
        }
Example #28
0
 public override void FinalizeLearning(int bestIteration)
 {
     if (bestIteration != Ensemble.NumTrees)
     {
         // Restore multiplier for each tree as it was set during bestIteration
         for (int t = 0; t < bestIteration; t++)
         {
             Ensemble.GetTreeAt(t).ScaleOutputsBy(AgdScoreTracker.TreeMultiplier(t, bestIteration) / AgdScoreTracker.TreeMultiplier(t, Ensemble.NumTrees));
         }
     }
     base.FinalizeLearning(bestIteration);
 }
        public async Task <IActionResult> EditEnsemble(int id, string button, [Bind("EnsembleId", "EnsembleName", "Year", "Conductor")] Ensemble ensemble)
        {
            if (button != null)
            {
                //Delete the ensemble from the database.
                if (button.Equals("Delete"))
                {
                    var toDelete = await _context.Ensemble.FindAsync(id);

                    _context.Remove(toDelete);
                    IEnumerable <EnsemblePlayers> eps = _context.EnsemblePlayers
                                                        .Where(s => s.EnsembleId == id).ToList();
                    foreach (EnsemblePlayers ep in eps)
                    {
                        System.Diagnostics.Debug.WriteLine("DELETING");
                        System.Diagnostics.Debug.WriteLine(ep);
                        _context.EnsemblePlayers.Remove(ep);
                        await _context.SaveChangesAsync();

                        System.Diagnostics.Debug.WriteLine("AFTER DELETE");
                    }
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
            }

            //Update the ensemble
            if (ModelState.IsValid)
            {
                try
                {
                    ensemble.EnsembleId = id;
                    _context.Update(ensemble);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!EnsembleExists(ensemble.EnsembleId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                //Success
                return(RedirectToAction(nameof(Index)));
            }
            return(View(ensemble));
        }
        // GET: Ensemble/Musicians
        //Given an ensemble id, return a list of all musicians who play in that ensemble.
        public IActionResult Musicians(int id)
        {
            //Nested query. Select any musician whose id is in an ensemble player record where the ensemble id for that record matches the id supplied.
            IEnumerable <Musician> musicians = from musician in _context.Musician
                                               where (from ensemblePlayer in _context.EnsemblePlayers
                                                      where ensemblePlayer.EnsembleId == id
                                                      select ensemblePlayer).Any(e => e.MusicianId == musician.MusicianId)
                                               select musician;
            Ensemble             ensemble = _context.Ensemble.Find(id);
            EnsembleAndMusicians eAndM    = new EnsembleAndMusicians(ensemble, musicians);

            return(View(eAndM));
        }
Example #31
0
        /// <summary>
        /// Output the System Setup dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>System Setup DataSet data in CSV format.</returns>
        public static string WriteSystemSetupData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsSystemSetupAvail)
            {
                sb.Append(ensemble.SystemSetupData.BtSamplesPerSecond);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.BtSystemFreqHz);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.BtCPCE);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.BtNCE);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.BtRepeatN);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.WpSamplesPerSecond);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.WpSystemFreqHz);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.WpCPCE);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.WpNCE);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.WpRepeatN);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.WpLagSamples);
                sb.Append(",");
                sb.Append(ensemble.SystemSetupData.Voltage);
            }
            else
            {
                sb.Append(",,,,,,,,,,,");
            }

            return sb.ToString();
        }
Example #32
0
        /// <summary>
        /// Output the Range Tracking dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Range Tracking DataSet data in CSV format.</returns>
        public static string WriteRangeTrackingData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsRangeTrackingAvail)
            {
                if (ensemble.RangeTrackingData.SNR.Length >= 1)
                {
                    sb.Append(ensemble.RangeTrackingData.SNR[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.SNR.Length >= 2)
                {
                    sb.Append(ensemble.RangeTrackingData.SNR[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.SNR.Length >= 3)
                {
                    sb.Append(ensemble.RangeTrackingData.SNR[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.SNR.Length >= 4)
                {
                    sb.Append(ensemble.RangeTrackingData.SNR[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }

                if (ensemble.RangeTrackingData.Range.Length >= 1)
                {
                    sb.Append(ensemble.RangeTrackingData.Range[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.Range.Length >= 2)
                {
                    sb.Append(ensemble.RangeTrackingData.Range[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.Range.Length >= 3)
                {
                    sb.Append(ensemble.RangeTrackingData.Range[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.Range.Length >= 4)
                {
                    sb.Append(ensemble.RangeTrackingData.Range[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }

                if (ensemble.RangeTrackingData.Pings.Length >= 1)
                {
                    sb.Append(ensemble.RangeTrackingData.Pings[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.Pings.Length >= 2)
                {
                    sb.Append(ensemble.RangeTrackingData.Pings[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.Pings.Length >= 3)
                {
                    sb.Append(ensemble.RangeTrackingData.Pings[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.RangeTrackingData.Pings.Length >= 4)
                {
                    sb.Append(ensemble.RangeTrackingData.Pings[3].ToString(new CultureInfo("en-US")));
                    //sb.Append(",");
                }
                else
                {
                    //sb.Append(",");
                }
            }
            else
            {
                sb.Append(",,,,,,,,,,,");
            }

            return sb.ToString();
        }
Example #33
0
        /// <summary>
        /// Output the Amplitude dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <param name="options">Export Options.</param>
        /// <returns>Amplitude DataSet data in CSV format.</returns>
        public static string WriteAmplitudeData(Ensemble ensemble, ExportOptions options)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsAmplitudeAvail)
            {
                for (int bin = options.AmplitudeMinBin; bin < options.AmplitudeMaxBin + 1; bin++)
                {
                    for (int beam = 0; beam < ensemble.AmplitudeData.AmplitudeData.GetLength(1); beam++)
                    {
                        sb.Append(string.Format("{0},", ensemble.AmplitudeData.AmplitudeData[bin, beam].ToString(new CultureInfo("en-US"))));
                    }

                    // If a vertical beam
                    if (ensemble.AmplitudeData.AmplitudeData.GetLength(1) <= 1)
                    {
                        sb.Append(",,,");
                    }
                }
            }
            else
            {
                // Put blank data
                for (int bin = options.AmplitudeMinBin; bin < options.AmplitudeMaxBin + 1; bin++)
                {
                    sb.Append(",,,,");
                }
            }

            return sb.ToString();
        }
Example #34
0
        /// <summary>
        /// Output the Gage Height dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Gage Height DataSet data in CSV format.</returns>
        public static string WriteGageHeightData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsGageHeightAvail)
            {
                sb.Append(ensemble.GageHeightData.Status);
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.AvgRange.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.StdDev.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.AvgSN.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.N.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.Salinity.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.Pressure.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.Depth.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.WaterTemp.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.SystemTemp.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.SoS.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.Heading.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.Pitch.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.GageHeightData.Roll.ToString(new CultureInfo("en-US")));
            }
            else
            {
                sb.Append(",,,,,,,,,,,,,");
            }

            return sb.ToString();
        }
Example #35
0
        /// <summary>
        /// Output the Bottom Track dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Bottom Track DataSet data in CSV format.</returns>
        public static string WriteBottomTrackData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsBottomTrackAvail)
            {
                sb.Append(ensemble.BottomTrackData.FirstPingTime.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.LastPingTime.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Heading.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Pitch.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Roll.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.WaterTemp.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.SystemTemp.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Salinity.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Pressure.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.TransducerDepth.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.SpeedOfSound.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Status.ToString().Replace(",", ";"));        // Replace the , with ; so it does not mess up the seperation
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.NumBeams.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.ActualPingCount.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                #region Range Tracking
                if (ensemble.BottomTrackData.Range.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.Range[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Range.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.Range[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Range.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.Range[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Range.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.Range[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region SNR
                if (ensemble.BottomTrackData.SNR.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.SNR[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.SNR.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.SNR[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.SNR.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.SNR[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.SNR.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.SNR[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region Amplitude
                if (ensemble.BottomTrackData.Amplitude.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.Amplitude[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Amplitude.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.Amplitude[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Amplitude.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.Amplitude[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Amplitude.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.Amplitude[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region Correlation
                if (ensemble.BottomTrackData.Correlation.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.Correlation[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Correlation.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.Correlation[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Correlation.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.Correlation[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.Correlation.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.Correlation[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region Beam Velocity
                if (ensemble.BottomTrackData.BeamVelocity.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.BeamVelocity[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.BeamVelocity.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.BeamVelocity[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.BeamVelocity.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.BeamVelocity[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.BeamVelocity.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.BeamVelocity[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region BeamGood
                if (ensemble.BottomTrackData.BeamGood.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.BeamGood[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.BeamGood.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.BeamGood[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.BeamGood.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.BeamGood[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.BeamGood.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.BeamGood[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region Instrument Velocity
                if (ensemble.BottomTrackData.InstrumentVelocity.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.InstrumentVelocity[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.InstrumentVelocity.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.InstrumentVelocity[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.InstrumentVelocity.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.InstrumentVelocity[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.InstrumentVelocity.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.InstrumentVelocity[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region Instrument Good
                if (ensemble.BottomTrackData.InstrumentGood.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.InstrumentGood[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.InstrumentGood.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.InstrumentGood[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.InstrumentGood.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.InstrumentGood[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.InstrumentGood.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.InstrumentGood[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region Earth Velocity
                if (ensemble.BottomTrackData.EarthVelocity.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.EarthVelocity[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.EarthVelocity.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.EarthVelocity[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.EarthVelocity.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.EarthVelocity[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.EarthVelocity.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.EarthVelocity[3].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                #endregion
                #region Earth Good
                if (ensemble.BottomTrackData.EarthGood.Length >= 1)
                {
                    sb.Append(ensemble.BottomTrackData.EarthGood[0].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.EarthGood.Length >= 2)
                {
                    sb.Append(ensemble.BottomTrackData.EarthGood[1].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.EarthGood.Length >= 3)
                {
                    sb.Append(ensemble.BottomTrackData.EarthGood[2].ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
                if (ensemble.BottomTrackData.EarthGood.Length >= 4)
                {
                    sb.Append(ensemble.BottomTrackData.EarthGood[3].ToString(new CultureInfo("en-US")));
                    //sb.Append(",");
                }
                else
                {
                    //sb.Append(",");
                }
                #endregion

            }
            else
            {
                sb.Append(",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,");
            }

            return sb.ToString();
        }
Example #36
0
        /// <summary>
        /// Output the Bottom Track dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Bottom Track DataSet data in CSV format.</returns>
        public static string WriteBottomTrackData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsBottomTrackAvail)
            {
                sb.Append(ensemble.BottomTrackData.FirstPingTime);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.LastPingTime);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Heading);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Pitch);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Roll);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.WaterTemp);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.SystemTemp);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Salinity);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Pressure);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.TransducerDepth);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.SpeedOfSound);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Status.ToString().Replace(",", ";"));        // Replace the , with ; so it does not mess up the seperation
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.NumBeams);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.ActualPingCount);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Range[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Range[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Range[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Range[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.SNR[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.SNR[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.SNR[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.SNR[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Amplitude[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Amplitude[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Amplitude[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Amplitude[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Correlation[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Correlation[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Correlation[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.Correlation[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.BeamVelocity[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.BeamVelocity[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.BeamVelocity[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.BeamVelocity[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.BeamGood[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.BeamGood[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.BeamGood[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.BeamGood[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.InstrumentVelocity[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.InstrumentVelocity[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.InstrumentVelocity[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.InstrumentVelocity[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.InstrumentGood[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.InstrumentGood[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.InstrumentGood[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.InstrumentGood[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.EarthVelocity[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.EarthVelocity[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.EarthVelocity[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.EarthVelocity[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.EarthGood[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.EarthGood[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.EarthGood[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackData.EarthGood[3]);

            }
            else
            {
                sb.Append(",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,");
            }

            return sb.ToString();
        }
Example #37
0
        /// <summary>
        /// Output the Bottom Track Engineering dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Bottom Track Engineering DataSet data in CSV format.</returns>
        public static string WriteBottomTrackEngineeringData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsBottomTrackEngineeringAvail)
            {
                sb.Append(ensemble.BottomTrackEngineeringData.SamplesPerSecond);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.SystemFreqHz);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.LagSamples);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.CPCE);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.NCE);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.RepeatN);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbHz[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbHz[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbHz[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbHz[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbVel[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbVel[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbVel[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbVel[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbAmp[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbAmp[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbAmp[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbAmp[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbCor[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbCor[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbCor[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbCor[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbSNR[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbSNR[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbSNR[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.AmbSNR[3]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.LagUsed[0]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.LagUsed[1]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.LagUsed[2]);
                sb.Append(",");
                sb.Append(ensemble.BottomTrackEngineeringData.LagUsed[3]);

            }
            else
            {
                sb.Append(",,,,,,,,,,,,,,,,,,,,,,,,,,,,,");
            }

            return sb.ToString();
        }
Example #38
0
        /// <summary>
        /// Output the Ancillary dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Ancillary DataSet data in CSV format.</returns>
        public static string WriteAncillaryData(Ensemble ensemble)
        {
            if (ensemble.IsAncillaryAvail)
            {
                StringBuilder sb = new StringBuilder();

                sb.Append(ensemble.AncillaryData.FirstBinRange.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.BinSize.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.FirstPingTime.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.LastPingTime.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Heading.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Pitch.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Roll.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.WaterTemp.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.SystemTemp.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Salinity.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Pressure.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.TransducerDepth.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.SpeedOfSound.ToString(new CultureInfo("en-US")));

                return sb.ToString();
            }

            return ",,,,,,,,,,,,";
        }
Example #39
0
        /// <summary>
        /// Output the Beam Velocity dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <param name="options">Export Options.</param>
        /// <returns>Beam Velocity DataSet data in CSV format.</returns>
        public static string WriteBeamVelocityData(Ensemble ensemble, ExportOptions options)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsBeamVelocityAvail)
            {
                for (int bin = options.BeamMinBin; bin < options.BeamMaxBin + 1; bin++)
                {
                    for (int beam = 0; beam < ensemble.BeamVelocityData.BeamVelocityData.GetLength(1); beam++)
                    {
                        sb.Append(string.Format("{0},", ensemble.BeamVelocityData.BeamVelocityData[bin, beam]));
                    }

                    // If a vertical beam
                    if (ensemble.BeamVelocityData.BeamVelocityData.GetLength(1) <= 1)
                    {
                        sb.Append(",,,");
                    }
                }
            }
            else
            {
                // Put blank data
                for (int bin = options.BeamMinBin; bin < options.BeamMaxBin + 1; bin++)
                {
                    sb.Append(",,,,");
                }
            }

            return sb.ToString();
        }
Example #40
0
        /// <summary>
        /// Output the Profile Engineering dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Profile Engineering DataSet data in CSV format.</returns>
        public static string WriteProfileEngineeringData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsProfileEngineeringAvail)
            {
                sb.Append(ensemble.ProfileEngineeringData.SamplesPerSecond.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.SystemFreqHz.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.LagSamples.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.CPCE.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.NCE.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.RepeatN.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingGap.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingNCE.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingRepeatN.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingLagSamples.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.TRHighGain.ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingVel.Length > 0)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingVel[0].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingVel.Length > 1)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingVel[1].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingVel.Length > 2)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingVel[2].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingVel.Length > 3)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingVel[3].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingCor.Length > 0)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingCor[0].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingCor.Length > 1)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingCor[1].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingCor.Length > 2)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingCor[2].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingCor.Length > 3)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingCor[3].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingAmp.Length > 0)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingAmp[0].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingAmp.Length > 1)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingAmp[1].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingAmp.Length > 2)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingAmp[2].ToString(new CultureInfo("en-US")));
                sb.Append(",");
                if (ensemble.ProfileEngineeringData.PrePingAmp.Length > 3)
                    sb.Append(ensemble.ProfileEngineeringData.PrePingAmp[3].ToString(new CultureInfo("en-US")));
            }
            else
            {
                sb.Append(",,,,,,,,,,,,,,,,,,,,,,");
            }

            return sb.ToString();
        }
Example #41
0
        /// <summary>
        /// Parse the incoming packet for all the Data Sets.
        /// Add the data to a AdcpDataSet variable and 
        /// return the filled variable when complete.
        /// </summary>
        /// <param name="binaryEnsemble">Byte array containing data from an ADCP.</param>
        /// <returns>Object holding decoded ADCP data.</returns>
        private Ensemble DecodeAdcpData(byte[] binaryEnsemble)
        {
            Ensemble ensemble = new Ensemble();

            #region DataSets

            if(!ensemble.IsEnsembleAvail)
            {
                ensemble.EnsembleData = new EnsembleDataSet();
                ensemble.IsEnsembleAvail = true;
            }

            if (!ensemble.IsAncillaryAvail)
            {
                ensemble.AncillaryData = new AncillaryDataSet();
                ensemble.IsAncillaryAvail = true;
            }

            // Add Bottom Track data
            if (!ensemble.IsBottomTrackAvail)
            {
                ensemble.BottomTrackData = new BottomTrackDataSet();
                ensemble.IsBottomTrackAvail = true;
            }

            // Add DVL dataset
            if (!ensemble.IsDvlDataAvail)
            {
                ensemble.DvlData = new DvlDataSet();
                ensemble.IsDvlDataAvail = true;
            }

            #endregion

            #region System Config

            // Data Flow Bit
            byte data = binaryEnsemble[1];

            SystemConfig sysCfg = new SystemConfig();

            //sysCfg.VelTransform = GetTransform(value);
            //sysCfg.IsTiltUsed = GetTilt(value);
            //sysCfg.Is3BeamSolution = Get3BeamSolution(value);
            //sysCfg.Frequency = GetFreq(value);

            // Set the serial number
            ensemble.EnsembleData.SysSerialNumber = SerialNumber.DVL;
            ensemble.EnsembleData.SysSerialNumber.RemoveSubsystem(SerialNumber.DVL_Subsystem);
            ensemble.EnsembleData.SysSerialNumber.AddSubsystem(sysCfg.Frequency);

            #endregion

            //#region Speed of Sound

            //// Speed of Sound
            ////ensemble.AncillaryData.SpeedOfSound = MathHelper.LsbMsbUShort(binaryEnsemble[41], binaryEnsemble[42]);
            ////ensemble.BottomTrackData.SpeedOfSound = MathHelper.LsbMsbUShort(binaryEnsemble[41], binaryEnsemble[42]);
            ////ensemble.DvlData.SpeedOfSound = MathHelper.LsbMsbUShort(binaryEnsemble[41], binaryEnsemble[42]);

            ////// Temperature
            ////ensemble.AncillaryData.WaterTemp = MathHelper.LsbMsbUShort(binaryEnsemble[43], binaryEnsemble[44]) * 0.01f;
            ////ensemble.BottomTrackData.WaterTemp = MathHelper.LsbMsbUShort(binaryEnsemble[43], binaryEnsemble[44]) * 0.01f;
            ////ensemble.DvlData.WaterTemp = MathHelper.LsbMsbUShort(binaryEnsemble[43], binaryEnsemble[44]) * 0.01f;

            //#endregion

            //#region Bottom Track Velcocity

            //// X
            //if (MathHelper.LsbMsbShort(binaryEnsemble[2], binaryEnsemble[3]) == PD0.BAD_VELOCITY)
            //{
            //    ensemble.BottomTrackData.BeamVelocity[Ensemble.BEAM_0_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.InstrumentVelocity[Ensemble.BEAM_X_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.EarthVelocity[Ensemble.BEAM_EAST_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.BeamGood[Ensemble.BEAM_0_INDEX] = 0.0f;
            //    ensemble.BottomTrackData.EarthGood[Ensemble.BEAM_EAST_INDEX] = 0.0f;
            //    ensemble.BottomTrackData.InstrumentGood[Ensemble.BEAM_X_INDEX] = 0.0f;

            //    ensemble.DvlData.BtEastVelocity = Ensemble.BAD_VELOCITY;
            //    ensemble.DvlData.BtXVelocity = Ensemble.BAD_VELOCITY;
            //    ensemble.DvlData.BtTransverseVelocity = Ensemble.BAD_VELOCITY;
            //    ensemble.DvlData.BtEarthIsGoodVelocity = false;
            //    ensemble.DvlData.BtInstrumentIsGoodVelocity = false;
            //    ensemble.DvlData.BtShipIsGoodVelocity = false;
            //}
            //else
            //{
            //    // Beam velocity
            //    if (config.VelTransform == Core.Commons.Transforms.BEAM)
            //    {
            //        ensemble.BottomTrackData.BeamVelocity[Ensemble.BEAM_X_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[2], binaryEnsemble[3]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.BeamGood[Ensemble.BEAM_X_INDEX] = 1.0f;
            //    }

            //    // Earth velocity
            //    if (config.VelTransform == Core.Commons.Transforms.EARTH)
            //    {
            //        ensemble.BottomTrackData.EarthVelocity[Ensemble.BEAM_EAST_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[2], binaryEnsemble[3]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.EarthGood[Ensemble.BEAM_EAST_INDEX] = 1.0f;

            //        ensemble.DvlData.BtEastVelocity = MathHelper.LsbMsbShort(binaryEnsemble[2], binaryEnsemble[3]) * 0.001f;        // mm/s to m/s
            //        ensemble.DvlData.BtEarthIsGoodVelocity = true;
            //    }

            //    // Instrument velocity
            //    if (config.VelTransform == Core.Commons.Transforms.INSTRUMENT)
            //    {
            //        ensemble.BottomTrackData.InstrumentVelocity[Ensemble.BEAM_X_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[5], binaryEnsemble[6]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.InstrumentGood[Ensemble.BEAM_X_INDEX] = 1.0f;

            //        ensemble.DvlData.BtXVelocity = MathHelper.LsbMsbShort(binaryEnsemble[5], binaryEnsemble[6]) * 0.001f;        // mm/s to m/s
            //        ensemble.DvlData.BtInstrumentIsGoodVelocity = true;
            //    }

            //    // Ship velocity
            //    if (config.VelTransform == Core.Commons.Transforms.SHIP)
            //    {
            //        ensemble.DvlData.BtTransverseVelocity = MathHelper.LsbMsbShort(binaryEnsemble[5], binaryEnsemble[6]) * 0.001f;        // mm/s to m/s
            //        ensemble.DvlData.BtShipIsGoodVelocity = true;
            //    }
            //}

            //// Y
            //if (MathHelper.LsbMsbShort(binaryEnsemble[7], binaryEnsemble[8]) == PD0.BAD_VELOCITY)
            //{
            //    ensemble.BottomTrackData.BeamVelocity[Ensemble.BEAM_1_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.InstrumentVelocity[Ensemble.BEAM_Y_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.EarthVelocity[Ensemble.BEAM_NORTH_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.BeamGood[Ensemble.BEAM_1_INDEX] = 0.0f;
            //    ensemble.BottomTrackData.EarthGood[Ensemble.BEAM_NORTH_INDEX] = 0.0f;
            //    ensemble.BottomTrackData.InstrumentGood[Ensemble.BEAM_Y_INDEX] = 0.0f;

            //    ensemble.DvlData.BtEastVelocity = Ensemble.BAD_VELOCITY;
            //    ensemble.DvlData.BtXVelocity = Ensemble.BAD_VELOCITY;
            //    ensemble.DvlData.BtLongitudinalVelocity = Ensemble.BAD_VELOCITY;
            //}
            //else
            //{
            //    // Beam velocity
            //    if (config.VelTransform == Core.Commons.Transforms.BEAM)
            //    {
            //        ensemble.BottomTrackData.BeamVelocity[Ensemble.BEAM_1_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[7], binaryEnsemble[8]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.BeamGood[Ensemble.BEAM_1_INDEX] = 1.0f;
            //    }

            //    // Earth velocity
            //    if (config.VelTransform == Core.Commons.Transforms.EARTH)
            //    {
            //        ensemble.BottomTrackData.EarthVelocity[Ensemble.BEAM_NORTH_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[7], binaryEnsemble[8]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.EarthGood[Ensemble.BEAM_NORTH_INDEX] = 1.0f;

            //        ensemble.DvlData.BtNorthVelocity = MathHelper.LsbMsbShort(binaryEnsemble[7], binaryEnsemble[8]) * 0.001f;        // mm/s to m/s
            //    }

            //    // Instrument velocity
            //    if (config.VelTransform == Core.Commons.Transforms.INSTRUMENT)
            //    {
            //        ensemble.BottomTrackData.InstrumentVelocity[Ensemble.BEAM_Y_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[7], binaryEnsemble[8]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.InstrumentGood[Ensemble.BEAM_Y_INDEX] = 1.0f;

            //        ensemble.DvlData.BtYVelocity = MathHelper.LsbMsbShort(binaryEnsemble[7], binaryEnsemble[8]) * 0.001f;        // mm/s to m/s
            //    }

            //    // Ship velocity
            //    if (config.VelTransform == Core.Commons.Transforms.SHIP)
            //    {
            //        ensemble.DvlData.BtLongitudinalVelocity = MathHelper.LsbMsbShort(binaryEnsemble[7], binaryEnsemble[8]) * 0.001f;        // mm/s to m/s
            //    }
            //}

            //// Z
            //if (MathHelper.LsbMsbShort(binaryEnsemble[9], binaryEnsemble[10]) == PD0.BAD_VELOCITY)
            //{
            //    ensemble.BottomTrackData.BeamVelocity[Ensemble.BEAM_2_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.InstrumentVelocity[Ensemble.BEAM_Z_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.EarthVelocity[Ensemble.BEAM_VERTICAL_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.BeamGood[Ensemble.BEAM_2_INDEX] = 0.0f;
            //    ensemble.BottomTrackData.EarthGood[Ensemble.BEAM_VERTICAL_INDEX] = 0.0f;
            //    ensemble.BottomTrackData.InstrumentGood[Ensemble.BEAM_Z_INDEX] = 0.0f;

            //    ensemble.DvlData.BtUpwardVelocity = Ensemble.BAD_VELOCITY;
            //    ensemble.DvlData.BtZVelocity = Ensemble.BAD_VELOCITY;
            //    ensemble.DvlData.BtNormalVelocity = Ensemble.BAD_VELOCITY;
            //}
            //else
            //{
            //    // Beam velocity
            //    if (config.VelTransform == Core.Commons.Transforms.BEAM)
            //    {
            //        ensemble.BottomTrackData.BeamVelocity[Ensemble.BEAM_2_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[9], binaryEnsemble[10]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.BeamGood[Ensemble.BEAM_2_INDEX] = 1.0f;
            //    }

            //    // Earth velocity
            //    if (config.VelTransform == Core.Commons.Transforms.EARTH)
            //    {
            //        ensemble.BottomTrackData.EarthVelocity[Ensemble.BEAM_VERTICAL_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[9], binaryEnsemble[10]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.EarthGood[Ensemble.BEAM_VERTICAL_INDEX] = 1.0f;

            //        ensemble.DvlData.BtUpwardVelocity = MathHelper.LsbMsbShort(binaryEnsemble[9], binaryEnsemble[10]) * 0.001f;        // mm/s to m/s
            //    }

            //    // Instrument velocity
            //    if (config.VelTransform == Core.Commons.Transforms.INSTRUMENT)
            //    {
            //        ensemble.BottomTrackData.InstrumentVelocity[Ensemble.BEAM_Z_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[9], binaryEnsemble[10]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.InstrumentGood[Ensemble.BEAM_Z_INDEX] = 1.0f;

            //        ensemble.DvlData.BtZVelocity = MathHelper.LsbMsbShort(binaryEnsemble[9], binaryEnsemble[10]) * 0.001f;        // mm/s to m/s
            //    }

            //    // Ship velocity
            //    if (config.VelTransform == Core.Commons.Transforms.SHIP)
            //    {
            //        ensemble.DvlData.BtNormalVelocity = MathHelper.LsbMsbShort(binaryEnsemble[9], binaryEnsemble[10]) * 0.001f;        // mm/s to m/s
            //    }
            //}

            //// Q
            //if (MathHelper.LsbMsbShort(binaryEnsemble[11], binaryEnsemble[12]) == PD0.BAD_VELOCITY)
            //{
            //    ensemble.BottomTrackData.BeamVelocity[Ensemble.BEAM_3_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.InstrumentVelocity[Ensemble.BEAM_Q_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.EarthVelocity[Ensemble.BEAM_Q_INDEX] = Ensemble.BAD_VELOCITY;
            //    ensemble.BottomTrackData.BeamGood[Ensemble.BEAM_Q_INDEX] = 0.0f;
            //    ensemble.BottomTrackData.EarthGood[Ensemble.BEAM_Q_INDEX] = 0.0f;
            //    ensemble.BottomTrackData.InstrumentGood[Ensemble.BEAM_Q_INDEX] = 0.0f;

            //    ensemble.DvlData.BtErrorVelocity = Ensemble.BAD_VELOCITY;
            //}
            //else
            //{
            //    // Beam velocity
            //    if (config.VelTransform == Core.Commons.Transforms.BEAM)
            //    {
            //        ensemble.BottomTrackData.BeamVelocity[Ensemble.BEAM_3_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[11], binaryEnsemble[12]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.BeamGood[Ensemble.BEAM_3_INDEX] = 1.0f;
            //    }

            //    // Earth velocity
            //    if (config.VelTransform == Core.Commons.Transforms.EARTH)
            //    {
            //        ensemble.BottomTrackData.EarthVelocity[Ensemble.BEAM_Q_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[11], binaryEnsemble[12]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.EarthGood[Ensemble.BEAM_Q_INDEX] = 1.0f;

            //        ensemble.DvlData.BtErrorVelocity = MathHelper.LsbMsbShort(binaryEnsemble[11], binaryEnsemble[12]) * 0.001f;        // mm/s to m/s
            //    }

            //    // Instrument velocity
            //    if (config.VelTransform == Core.Commons.Transforms.INSTRUMENT)
            //    {
            //        ensemble.BottomTrackData.InstrumentVelocity[Ensemble.BEAM_Q_INDEX] = MathHelper.LsbMsbShort(binaryEnsemble[11], binaryEnsemble[12]) * 0.001f;        // mm/s to m/s
            //        ensemble.BottomTrackData.InstrumentGood[Ensemble.BEAM_Q_INDEX] = 1.0f;

            //        ensemble.DvlData.BtErrorVelocity = MathHelper.LsbMsbShort(binaryEnsemble[11], binaryEnsemble[12]) * 0.001f;        // mm/s to m/s
            //    }

            //    // Ship velocity
            //    if (config.VelTransform == Core.Commons.Transforms.SHIP)
            //    {

            //    }
            //}

            //// Range
            //ensemble.BottomTrackData.Range[Ensemble.BEAM_0_INDEX] = MathHelper.LsbMsbUShort(binaryEnsemble[13], binaryEnsemble[14]) * 0.01f;        // cm to m
            //ensemble.BottomTrackData.Range[Ensemble.BEAM_1_INDEX] = MathHelper.LsbMsbUShort(binaryEnsemble[15], binaryEnsemble[16]) * 0.01f;        // cm to m
            //ensemble.BottomTrackData.Range[Ensemble.BEAM_2_INDEX] = MathHelper.LsbMsbUShort(binaryEnsemble[17], binaryEnsemble[18]) * 0.01f;        // cm to m
            //ensemble.BottomTrackData.Range[Ensemble.BEAM_3_INDEX] = MathHelper.LsbMsbUShort(binaryEnsemble[19], binaryEnsemble[20]) * 0.01f;        // cm to m

            //ensemble.DvlData.RangeBeam0 = MathHelper.LsbMsbUShort(binaryEnsemble[13], binaryEnsemble[14]) * 0.01f;        // cm to m
            //ensemble.DvlData.RangeBeam1 = MathHelper.LsbMsbUShort(binaryEnsemble[15], binaryEnsemble[16]) * 0.01f;        // cm to m
            //ensemble.DvlData.RangeBeam2 = MathHelper.LsbMsbUShort(binaryEnsemble[17], binaryEnsemble[18]) * 0.01f;        // cm to m
            //ensemble.DvlData.RangeBeam3 = MathHelper.LsbMsbUShort(binaryEnsemble[19], binaryEnsemble[20]) * 0.01f;        // cm to m

            //#endregion

            //#region Ensemble Time

            //// Ensemble time
            //int hour = binaryEnsemble[35];
            //int min = binaryEnsemble[36];
            //int sec = binaryEnsemble[37];
            //int hun = binaryEnsemble[38];
            //ensemble.EnsembleData.Hour = hour;
            //ensemble.EnsembleData.Minute = min;
            //ensemble.EnsembleData.Second = sec;
            //ensemble.EnsembleData.HSec = hun;

            //ensemble.DvlData.Hour = hour;
            //ensemble.DvlData.Minute = min;
            //ensemble.DvlData.Second = sec;
            //ensemble.DvlData.HSec = hun;

            //// Time of first ping
            //float currTime = (hour * 3600.0f) + (min * 60.0f) + sec + (hun * 0.01f);
            //ensemble.AncillaryData.FirstPingTime = currTime - _prevTime;
            //ensemble.AncillaryData.LastPingTime = currTime - _prevTime;
            //ensemble.BottomTrackData.FirstPingTime = currTime - _prevTime;
            //ensemble.BottomTrackData.LastPingTime = currTime - _prevTime;

            //// Set the prev time if it has not been set
            //if (_prevTime == 0)
            //{
            //    _prevTime = currTime;
            //}

            //#endregion

            //#region Reference Layer Data

            //#region Earth

            //// Add the proper DataSet
            //if(config.VelTransform == Core.Commons.Transforms.EARTH)
            //{
            //    // Add Earth Water Mass
            //    if (!ensemble.IsEarthWaterMassAvail)
            //    {
            //        ensemble.EarthWaterMassData = new EarthWaterMassDataSet();
            //        ensemble.IsEarthWaterMassAvail = true;
            //    }

            //    // East
            //    if (MathHelper.LsbMsbShort(binaryEnsemble[22], binaryEnsemble[23]) == PD0.BAD_VELOCITY)
            //    {
            //        ensemble.EarthWaterMassData.VelocityEast = Ensemble.BAD_VELOCITY;
            //        ensemble.DvlData.WmEastVelocity = Ensemble.BAD_VELOCITY;
            //    }
            //    else
            //    {
            //        ensemble.EarthWaterMassData.VelocityEast = MathHelper.LsbMsbShort(binaryEnsemble[22], binaryEnsemble[23]) * 0.001f;         // mm/s to m/s
            //        ensemble.DvlData.WmEastVelocity = MathHelper.LsbMsbShort(binaryEnsemble[22], binaryEnsemble[23]) * 0.001f;                  // mm/s to m/s
            //    }

            //    // North
            //    if (MathHelper.LsbMsbShort(binaryEnsemble[24], binaryEnsemble[25]) == PD0.BAD_VELOCITY)
            //    {
            //        ensemble.EarthWaterMassData.VelocityNorth = Ensemble.BAD_VELOCITY;
            //        ensemble.DvlData.WmNorthVelocity = Ensemble.BAD_VELOCITY;
            //    }
            //    else
            //    {
            //        ensemble.EarthWaterMassData.VelocityNorth = MathHelper.LsbMsbShort(binaryEnsemble[24], binaryEnsemble[25]) * 0.001f;        // mm/s to m/s
            //        ensemble.DvlData.WmNorthVelocity = MathHelper.LsbMsbShort(binaryEnsemble[24], binaryEnsemble[25]) * 0.001f;                 // mm/s to m/s
            //    }

            //    // Vertical
            //    if (MathHelper.LsbMsbShort(binaryEnsemble[26], binaryEnsemble[27]) == PD0.BAD_VELOCITY)
            //    {
            //        ensemble.EarthWaterMassData.VelocityVertical = Ensemble.BAD_VELOCITY;
            //        ensemble.DvlData.WmUpwardVelocity = Ensemble.BAD_VELOCITY;
            //    }
            //    else
            //    {
            //        ensemble.EarthWaterMassData.VelocityVertical = MathHelper.LsbMsbShort(binaryEnsemble[26], binaryEnsemble[27]) * 0.001f;     // mm/s to m/s
            //        ensemble.DvlData.WmUpwardVelocity = MathHelper.LsbMsbShort(binaryEnsemble[26], binaryEnsemble[27]) * 0.001f;                // mm/s to m/s
            //    }

            //    // Depth layer
            //    ensemble.EarthWaterMassData.WaterMassDepthLayer = MathHelper.LsbMsbShort(binaryEnsemble[30], binaryEnsemble[31]) * 0.1f;        // dm to m
            //    ensemble.DvlData.RefLayerMin = (int)(MathHelper.LsbMsbUShort(binaryEnsemble[30], binaryEnsemble[31]) * 0.1f);                   // dm to m
            //    ensemble.DvlData.RefLayerMax = (int)(MathHelper.LsbMsbUShort(binaryEnsemble[32], binaryEnsemble[33]) * 0.1f);                   // dm to m

            //}

            //#endregion

            //#region Instrument

            //if (config.VelTransform == Core.Commons.Transforms.INSTRUMENT)
            //{
            //    // Add Instrument Water Mass
            //    if (!ensemble.IsInstrumentWaterMassAvail)
            //    {
            //        ensemble.InstrumentWaterMassData = new InstrumentWaterMassDataSet();
            //        ensemble.IsInstrumentWaterMassAvail = true;
            //    }

            //    // X
            //    if (MathHelper.LsbMsbShort(binaryEnsemble[22], binaryEnsemble[23]) == PD0.BAD_VELOCITY)
            //    {
            //        ensemble.InstrumentWaterMassData.VelocityX = Ensemble.BAD_VELOCITY;
            //        ensemble.DvlData.WmXVelocity = Ensemble.BAD_VELOCITY;
            //    }
            //    else
            //    {
            //        ensemble.InstrumentWaterMassData.VelocityX = MathHelper.LsbMsbShort(binaryEnsemble[22], binaryEnsemble[23]) * 0.001f;               // mm/s to m/s
            //        ensemble.DvlData.WmXVelocity = MathHelper.LsbMsbShort(binaryEnsemble[22], binaryEnsemble[23]) * 0.001f;                             // mm/s to m/s
            //    }

            //    // Y
            //    if (MathHelper.LsbMsbShort(binaryEnsemble[24], binaryEnsemble[25]) == PD0.BAD_VELOCITY)
            //    {
            //        ensemble.InstrumentWaterMassData.VelocityY = Ensemble.BAD_VELOCITY;
            //        ensemble.DvlData.WmYVelocity = Ensemble.BAD_VELOCITY;
            //    }
            //    else
            //    {
            //        ensemble.InstrumentWaterMassData.VelocityY = MathHelper.LsbMsbShort(binaryEnsemble[24], binaryEnsemble[25]) * 0.001f;               // mm/s to m/s
            //        ensemble.DvlData.WmYVelocity = MathHelper.LsbMsbShort(binaryEnsemble[24], binaryEnsemble[25]) * 0.001f;                             // mm/s to m/s
            //    }

            //    // Z
            //    if (MathHelper.LsbMsbShort(binaryEnsemble[26], binaryEnsemble[27]) == PD0.BAD_VELOCITY)
            //    {
            //        ensemble.InstrumentWaterMassData.VelocityZ = Ensemble.BAD_VELOCITY;
            //        ensemble.DvlData.WmZVelocity = Ensemble.BAD_VELOCITY;
            //    }
            //    else
            //    {
            //        ensemble.InstrumentWaterMassData.VelocityZ = MathHelper.LsbMsbShort(binaryEnsemble[26], binaryEnsemble[27]) * 0.001f;               // mm/s to m/s
            //        ensemble.DvlData.WmZVelocity = MathHelper.LsbMsbShort(binaryEnsemble[26], binaryEnsemble[27]) * 0.001f;                             // mm/s to m/s
            //    }

            //    // Error
            //    if (MathHelper.LsbMsbShort(binaryEnsemble[28], binaryEnsemble[29]) == PD0.BAD_VELOCITY)
            //    {
            //        ensemble.InstrumentWaterMassData.VelocityQ = Ensemble.BAD_VELOCITY;
            //    }
            //    else
            //    {
            //        ensemble.InstrumentWaterMassData.VelocityQ = MathHelper.LsbMsbShort(binaryEnsemble[28], binaryEnsemble[29]) * 0.001f;               // mm/s to m/s
            //    }

            //    // Depth layer
            //    ensemble.InstrumentWaterMassData.WaterMassDepthLayer = MathHelper.LsbMsbShort(binaryEnsemble[30], binaryEnsemble[31]) * 0.1f;           // dm to m
            //    ensemble.DvlData.RefLayerMin = (int)(MathHelper.LsbMsbUShort(binaryEnsemble[30], binaryEnsemble[31]) * 0.1f);                           // dm to m
            //    ensemble.DvlData.RefLayerMax = (int)(MathHelper.LsbMsbUShort(binaryEnsemble[32], binaryEnsemble[33]) * 0.1f);                           // dm to m

            //}

            //#endregion

            //#endregion

            //#region PD5

            //// If PD5
            //// PD5 will have more bytes than PD4
            //if(binaryEnsemble.Length >= PD5_ENS_SIZE)
            //{
            //    // Decode PD5 values

            //    // Salinity
            //    ensemble.AncillaryData.Salinity = binaryEnsemble[45];
            //    ensemble.BottomTrackData.Salinity = binaryEnsemble[45];
            //    ensemble.DvlData.Salinity = binaryEnsemble[45];

            //    // Tranducer Depth
            //    ensemble.AncillaryData.TransducerDepth = MathHelper.LsbMsbUShort(binaryEnsemble[46], binaryEnsemble[47]) * 0.1f;
            //    ensemble.BottomTrackData.TransducerDepth = MathHelper.LsbMsbUShort(binaryEnsemble[46], binaryEnsemble[47]) * 0.1f;
            //    ensemble.DvlData.TransducerDepth = MathHelper.LsbMsbUShort(binaryEnsemble[46], binaryEnsemble[47]) * 0.1f;

            //    // Heading
            //    ensemble.AncillaryData.Heading = MathHelper.LsbMsbUShort(binaryEnsemble[52], binaryEnsemble[53]) * 0.01f;
            //    ensemble.BottomTrackData.Heading = MathHelper.LsbMsbUShort(binaryEnsemble[52], binaryEnsemble[53]) * 0.01f;
            //    ensemble.DvlData.Heading = MathHelper.LsbMsbUShort(binaryEnsemble[52], binaryEnsemble[53]) * 0.01f;

            //    // Pitch
            //    ensemble.AncillaryData.Pitch = MathHelper.LsbMsbShort(binaryEnsemble[48], binaryEnsemble[49]) * 0.01f;
            //    ensemble.BottomTrackData.Pitch = MathHelper.LsbMsbShort(binaryEnsemble[48], binaryEnsemble[49]) * 0.01f;
            //    ensemble.DvlData.Pitch = MathHelper.LsbMsbShort(binaryEnsemble[48], binaryEnsemble[49]) * 0.01f;

            //    // Roll
            //    ensemble.AncillaryData.Roll = MathHelper.LsbMsbShort(binaryEnsemble[50], binaryEnsemble[51]) * 0.01f;
            //    ensemble.BottomTrackData.Roll = MathHelper.LsbMsbShort(binaryEnsemble[50], binaryEnsemble[51]) * 0.01f;
            //    ensemble.DvlData.Roll = MathHelper.LsbMsbShort(binaryEnsemble[50], binaryEnsemble[51]) * 0.01f;

            //    // DMG
            //    ensemble.DvlData.DmgEast = MathHelper.ByteArrayToInt32(binaryEnsemble, 54) * 0.1f;                                      // dm to m
            //    ensemble.DvlData.DmgNorth = MathHelper.ByteArrayToInt32(binaryEnsemble, 58) * 0.1f;                                     // dm to m
            //    ensemble.DvlData.DmgUpward = MathHelper.ByteArrayToInt32(binaryEnsemble, 62) * 0.1f;                                    // dm to m
            //    ensemble.DvlData.DmgError = MathHelper.ByteArrayToInt32(binaryEnsemble, 66) * 0.1f;                                     // dm to m

            //    // DMG Ref Layer
            //    ensemble.DvlData.DmgRefEast = MathHelper.ByteArrayToInt32(binaryEnsemble, 70) * 0.1f;                                   // dm to m
            //    ensemble.DvlData.DmgRefNorth = MathHelper.ByteArrayToInt32(binaryEnsemble, 74) * 0.1f;                                  // dm to m
            //    ensemble.DvlData.DmgRefUpward = MathHelper.ByteArrayToInt32(binaryEnsemble, 78) * 0.1f;                                 // dm to m
            //    ensemble.DvlData.DmgRefError = MathHelper.ByteArrayToInt32(binaryEnsemble, 82) * 0.1f;                                  // dm to m

            //}

            //#endregion

            // Send an event that data was processed
            // in this format
            if (ProcessDataEvent != null)
            {
                ProcessDataEvent(binaryEnsemble, ensemble);
            }

            return ensemble;
        }
Example #42
0
        /// <summary>
        /// Output the Profile Engineering dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Profile Engineering DataSet data in CSV format.</returns>
        public static string WriteProfileEngineeringData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsProfileEngineeringAvail)
            {
                sb.Append(ensemble.ProfileEngineeringData.SamplesPerSecond);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.SystemFreqHz);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.LagSamples);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.CPCE);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.NCE);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.RepeatN);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingGap);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingNCE);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingRepeatN);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingLagSamples);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.TRHighGain);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingVel[0]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingVel[1]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingVel[2]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingVel[3]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingCor[0]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingCor[1]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingCor[2]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingCor[3]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingAmp[0]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingAmp[1]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingAmp[2]);
                sb.Append(",");
                sb.Append(ensemble.ProfileEngineeringData.PrePingAmp[3]);

            }
            else
            {
                sb.Append(",,,,,,,,,,,,,,,,,,,,,,");
            }

            return sb.ToString();
        }
Example #43
0
        /// <summary>
        /// Output the Instrument Water Mass dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Instrument Water Mass DataSet data in CSV format.</returns>
        public static string WriteInstrumentWaterMassData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsInstrumentWaterMassAvail)
            {
                sb.Append(ensemble.InstrumentWaterMassData.WaterMassDepthLayer);
                sb.Append(",");
                sb.Append(ensemble.InstrumentWaterMassData.VelocityX);
                sb.Append(",");
                sb.Append(ensemble.InstrumentWaterMassData.VelocityY);
                sb.Append(",");
                sb.Append(ensemble.InstrumentWaterMassData.VelocityZ);
            }
            else
            {
                // Put blank data
                sb.Append(",,,,");
            }

            return sb.ToString();
        }
Example #44
0
        /// <summary>
        /// Output the Ensemble dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Ensemble DataSet data in CSV format.</returns>
        public static string WriteEnsembleData(Ensemble ensemble)
        {
            if (ensemble.IsEnsembleAvail)
            {
                StringBuilder sb = new StringBuilder();

                sb.Append(ensemble.EnsembleData.EnsembleNumber);
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.EnsDateTime.ToString());
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.NumBins);
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.NumBeams);
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.DesiredPingCount);
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.ActualPingCount);
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.SysSerialNumber.ToString());
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.SysFirmware.ToString());
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.SubsystemConfig.SubSystem.CodeToString());
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.SubsystemConfig.SubSystem.Index);
                sb.Append(",");
                sb.Append(ensemble.EnsembleData.Status.ToString().Replace(",", ";"));        // Replace the , with ; so it does not mess up the seperation);

                return sb.ToString();
            }

            return ",,,,,,,,,,";
        }
Example #45
0
        /// <summary>
        /// Output the Earth Water Mass dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Earth Water Mass DataSet data in CSV format.</returns>
        public static string WriteEarthWaterMassData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsEarthWaterMassAvail)
            {
                sb.Append(ensemble.EarthWaterMassData.WaterMassDepthLayer);
                sb.Append(",");
                sb.Append(ensemble.EarthWaterMassData.VelocityEast);
                sb.Append(",");
                sb.Append(ensemble.EarthWaterMassData.VelocityNorth);
                sb.Append(",");
                sb.Append(ensemble.EarthWaterMassData.VelocityVertical);
            }
            else
            {
                // Put blank data
                sb.Append(",,,,");
            }

            return sb.ToString();
        }
Example #46
0
        /// <summary>
        /// Output the NMEA dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>NMEA DataSet data in CSV format.</returns>
        public static string WriteNmeaData(Ensemble ensemble)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsNmeaAvail)
            {
                if (ensemble.NmeaData.IsGpggaAvail())
                {
                    sb.Append(ensemble.NmeaData.GPGGA.Position.Latitude.DecimalDegrees.ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                    sb.Append(ensemble.NmeaData.GPGGA.Position.Longitude.DecimalDegrees.ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                    sb.Append(ensemble.NmeaData.GPGGA.Altitude.ToMeters().ToString("g", new CultureInfo("en-US")));
                    sb.Append(",");
                    sb.Append(ensemble.NmeaData.GPGGA.UtcTime);
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",,,,");
                }
                if(ensemble.NmeaData.IsGphdtAvail())
                {
                    sb.Append(ensemble.NmeaData.GPHDT.Heading.DecimalDegrees.ToString(new CultureInfo("en-US")));
                    sb.Append(",");
                }
                else
                {
                    sb.Append(",");
                }
            }
            else
            {
                sb.Append(",,,,,");
            }

            return sb.ToString();
        }
Example #47
0
 /// <summary>
 /// Write the Ensemble number, Ensemble date and time, the velocity data, the pressure, heading pitch and roll
 /// to the file.
 /// </summary>
 /// <param name="ensemble">Ensemble to get the data.</param>
 /// <param name="isMultipleFiles">Set if each ensemble should be a seperate file.  Default to FALSE.</param>
 public void Write(Ensemble ensemble, bool isMultipleFiles = false)
 {
     // Encode the ensemble to a string and write it to the file
     _writer.WriteLine(EncodeCSV(ensemble, _options));
 }
Example #48
0
        /// <summary>
        /// Output the Ancillary dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <returns>Ancillary DataSet data in CSV format.</returns>
        public static string WriteAncillaryData(Ensemble ensemble)
        {
            if (ensemble.IsAncillaryAvail)
            {
                StringBuilder sb = new StringBuilder();

                sb.Append(ensemble.AncillaryData.FirstBinRange);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.BinSize);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.FirstPingTime);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.LastPingTime);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Heading);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Pitch);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Roll);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.WaterTemp);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.SystemTemp);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Salinity);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.Pressure);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.TransducerDepth);
                sb.Append(",");
                sb.Append(ensemble.AncillaryData.SpeedOfSound);

                return sb.ToString();
            }

            return ",,,,,,,,,,,,";
        }
Example #49
0
        /// <summary>
        /// Parse the incoming packet for all the Data Sets.
        /// Add the data to a AdcpDataSet variable and 
        /// return the filled variable when complete.
        /// </summary>
        /// <param name="binaryEnsemble">Byte array containing data from an ADCP.</param>
        /// <returns>Object holding decoded ADCP data.</returns>
        private Ensemble DecodeAdcpData(byte[] binaryEnsemble)
        {
            // Keep track where in the packet
            // we are currently decoding
            int packetPointer = DataSet.Ensemble.ENSEMBLE_HEADER_LEN;
            int type = 0;
            int numElements = 0;
            int elementMultiplier = 0;
            int imag = 0;
            int nameLen = 0;
            string name = "";
            int dataSetSize = 0;

            Ensemble ensemble = new Ensemble();

            for (int i = 0; i < DataSet.Ensemble.MAX_NUM_DATA_SETS; i++)
            {
                //Debug.Print("binaryEnsemble: " + binaryEnsemble.Length + " packetPointer: " + packetPointer + "\n");
                type = MathHelper.ByteArrayToInt32(binaryEnsemble, packetPointer + (DataSet.Ensemble.BYTES_IN_INT32 * 0));
                numElements = MathHelper.ByteArrayToInt32(binaryEnsemble, packetPointer + (DataSet.Ensemble.BYTES_IN_INT32 * 1));
                elementMultiplier = MathHelper.ByteArrayToInt32(binaryEnsemble, packetPointer + (DataSet.Ensemble.BYTES_IN_INT32 * 2));
                imag = MathHelper.ByteArrayToInt32(binaryEnsemble, packetPointer + (DataSet.Ensemble.BYTES_IN_INT32 * 3));
                nameLen = MathHelper.ByteArrayToInt32(binaryEnsemble, packetPointer + (DataSet.Ensemble.BYTES_IN_INT32 * 4));
                name = MathHelper.ByteArrayToString(binaryEnsemble, 8, packetPointer + (DataSet.Ensemble.BYTES_IN_FLOAT * 5));

                // Verify the data is good
                if (string.IsNullOrEmpty(name))
                {
                    break;
                }

                //Debug.Print("name: " + name + "\n");
                //Debug.Print("numElements: " + numElements + "\n");
                //Debug.Print("elementMultiplier" + elementMultiplier + "\n");

                // Get the size of this data set
                dataSetSize = BaseDataSet.GetDataSetSize(type, nameLen, numElements, elementMultiplier);

                if (Ensemble.BeamVelocityID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] velData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddBeamVelocityData(type, numElements, elementMultiplier, imag, nameLen, name, velData);
                    //Debug.WriteLine(adcpData.BeamVelocityData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.InstrumentVelocityID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] velData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddInstrumentVelocityData(type, numElements, elementMultiplier, imag, nameLen, name, velData);
                    //Debug.WriteLine(adcpData.InstrVelocityData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.EarthVelocityID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] velData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddEarthVelocityData(type, numElements, elementMultiplier, imag, nameLen, name, velData);
                    //Debug.WriteLine(adcpData.EarthVelocityData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.AmplitudeID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] ampData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddAmplitudeData(type, numElements, elementMultiplier, imag, nameLen, name, ampData);
                    //Debug.WriteLine(adcpData.AmplitudeData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.CorrelationID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] corrData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddCorrelationData(type, numElements, elementMultiplier, imag, nameLen, name, corrData);
                    //Debug.WriteLine(adcpData.CorrelationData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.GoodBeamID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] goodBeamData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddGoodBeamData(type, numElements, elementMultiplier, imag, nameLen, name, goodBeamData);
                    //Debug.WriteLine(adcpData.GoodBeamData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.GoodEarthID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] goodEarthData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddGoodEarthData(type, numElements, elementMultiplier, imag, nameLen, name, goodEarthData);
                    //Debug.WriteLine(adcpData.GoodEarthData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.EnsembleDataID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] ensembleData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddEnsembleData(type, numElements, elementMultiplier, imag, nameLen, name, ensembleData);
                    //Debug.WriteLine(adcpData.EnsembleData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.AncillaryID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] ancillaryData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddAncillaryData(type, numElements, elementMultiplier, imag, nameLen, name, ancillaryData);
                    //Debug.WriteLine(adcpData.AncillaryData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.BottomTrackID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] bottomTrackData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddBottomTrackData(type, numElements, elementMultiplier, imag, nameLen, name, bottomTrackData);
                    //Debug.WriteLine(adcpData.BottomTrackData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.NmeaID.Equals(name, StringComparison.Ordinal))
                {
                    // List of all data read
                    byte[] nmeaData = new byte[dataSetSize];

                    // Scan through the data set and store all the data
                    for (int x = 0; x < dataSetSize; x++)
                    {
                        nmeaData[x] = binaryEnsemble[packetPointer++];
                    }

                    // Add the data
                    ensemble.AddNmeaData(type, numElements, elementMultiplier, imag, nameLen, name, nmeaData);
                    //Debug.WriteLine(adcpData.NmeaData.ToString());
                }
                else if (Ensemble.ProfileEngineeringID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] peData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddProfileEngineeringData(type, numElements, elementMultiplier, imag, nameLen, name, peData);
                    //Debug.WriteLine(adcpData.BottomTrackData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.BottomTrackEngineeringID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] bteData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddBottomTrackEngineeringData(type, numElements, elementMultiplier, imag, nameLen, name, bteData);
                    //Debug.WriteLine(adcpData.BottomTrackData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.SystemSetupID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] ssData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddSystemSetupData(type, numElements, elementMultiplier, imag, nameLen, name, ssData);
                    //Debug.WriteLine(adcpData.BottomTrackData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.RangeTrackingID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] rtData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddRangeTrackingData(type, numElements, elementMultiplier, imag, nameLen, name, rtData);
                    //Debug.WriteLine(adcpData.RangeTrackingData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.GageHeightID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] ghData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddGageHeightData(type, numElements, elementMultiplier, imag, nameLen, name, ghData);
                    //Debug.WriteLine(adcpData.GageHeightData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else if (Ensemble.Adcp2InfoID.Equals(name, StringComparison.Ordinal))
                {
                    // Create a sub array of just this data set data
                    byte[] adcp2InfoData = MathHelper.SubArray<byte>(binaryEnsemble, packetPointer, dataSetSize);

                    // Add the data
                    ensemble.AddAdcp2InfoData(type, numElements, elementMultiplier, imag, nameLen, name, adcp2InfoData);
                    //Debug.WriteLine(adcpData.GageHeightData.ToString());

                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }
                else
                {
                    // Advance the packet pointer
                    packetPointer += dataSetSize;
                }

                //Debug.Print("DataSetSize: " + dataSetSize + "\n");
                //Debug.Print(" packetPointer: " + packetPointer + "\n");
                if (packetPointer + 4 >= binaryEnsemble.Length || packetPointer < 0)
                    break;
            }

            // If NMEA data is available, add it to the dataset
            // Add it to both the binary data and ensemble object
            if (_nmeaBuffer.Count > 0)
            {
                // Create a NMEA dataset
                MergeNmeaDataSet(ref ensemble);

                // Add the NMEA binary data to binary data
                if (ensemble.IsNmeaAvail)
                {
                    MergeNmeaBinary(ref binaryEnsemble, ensemble.NmeaData);
                }
            }

            // Send an event that data was processed
            // in this format
            if (ProcessDataEvent != null)
            {
                ProcessDataEvent(binaryEnsemble, ensemble);
            }

            return ensemble;
        }
Example #50
0
        /// <summary>
        /// Output the Beam Velocity dataset to CSV format.
        /// </summary>
        /// <param name="ensemble">Data.</param>
        /// <param name="options">Export Options.</param>
        /// <returns>Beam Velocity DataSet data in CSV format.</returns>
        public static string WriteBeamVelocityData(Ensemble ensemble, ExportOptions options)
        {
            StringBuilder sb = new StringBuilder();

            if (ensemble.IsBeamVelocityAvail)
            {
                //// Check values
                //int minBin = options.BeamMinBin;
                //if (minBin >= ensemble.BeamVelocityData.BeamVelocityData.GetLength(0))
                //{
                //    minBin = 0;
                //}
                //int maxBin = options.BeamMaxBin;
                //if (maxBin >= ensemble.BeamVelocityData.BeamVelocityData.GetLength(0))
                //{
                //    maxBin = ensemble.BeamVelocityData.BeamVelocityData.GetLength(0) - 1;
                //}

                for (int bin = options.BeamMinBin; bin < options.BeamMaxBin + 1; bin++)
                {
                    for (int beam = 0; beam < ensemble.BeamVelocityData.BeamVelocityData.GetLength(1); beam++)
                    {
                        sb.Append(string.Format("{0},", ensemble.BeamVelocityData.BeamVelocityData[bin, beam].ToString(new CultureInfo("en-US"))));
                    }

                    // If a vertical beam
                    if (ensemble.BeamVelocityData.BeamVelocityData.GetLength(1) <= 1)
                    {
                        sb.Append(",,,");
                    }
                }
            }
            else
            {
                // Put blank data
                for (int bin = options.BeamMinBin; bin < options.BeamMaxBin + 1; bin++)
                {
                    sb.Append(",,,,");
                }
            }

            return sb.ToString();
        }