public void TestTiming() { // Generate an Ensemble DataSet.Ensemble ensemble = EnsembleHelper.GenerateEnsemble(30); Stopwatch watch = new Stopwatch(); // Test Serialize() watch = new Stopwatch(); watch.Start(); for (int x = 0; x < 1000; x++) { string encoded = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.GoodBeamData); } watch.Stop(); long resultSerialize = watch.ElapsedMilliseconds; // Test Deserialize() watch = new Stopwatch(); string encodedd = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.GoodBeamData); watch.Start(); for (int x = 0; x < 1000; x++) { DataSet.GoodBeamDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.GoodBeamDataSet>(encodedd); } watch.Stop(); long resultDeserialize = watch.ElapsedMilliseconds; Debug.WriteLine(String.Format("Serialize:{0} Deserialize:{1}", resultSerialize, resultDeserialize)); Debug.WriteLine("Complete"); }
/// <summary> /// Initialize the object. /// </summary> /// <param name="goodBeam">RTI Good Beam data set.</param> /// <param name="pingsPerEnsemble">Pings per Ensemble.</param> public Pd0PercentGood(DataSet.GoodBeamDataSet goodBeam, int pingsPerEnsemble) : base(ID_LSB, ID_MSB, Pd0ID.Pd0Types.PercentGood) { NumDepthCells = goodBeam.NumElements; NumBeams = goodBeam.ElementsMultiplier; DecodeRtiEnsemble(goodBeam, pingsPerEnsemble); }
/// <summary> /// Convert the RTI Good Beam data set to the PD0 Percent Good data type. /// </summary> /// <param name="goodBeam">RTI Good Beam data set.</param> /// <param name="pingsPerEnsemble">Pings per Ensemble.</param> public void DecodeRtiEnsemble(DataSet.GoodBeamDataSet goodBeam, int pingsPerEnsemble) { if (goodBeam.GoodBeamData != null) { PercentGood = new byte[goodBeam.GoodBeamData.GetLength(0), NumBeams]; for (int bin = 0; bin < goodBeam.GoodBeamData.GetLength(0); bin++) { // 4 Beam System if (goodBeam.GoodBeamData.GetLength(1) >= NumBeams) { for (int beam = 0; beam < goodBeam.GoodBeamData.GetLength(1); beam++) { // beam order 3,2,0,1; XYZ order 1,0,-2,3, ENU order 0,1,2,3 int newBeam = 0; switch (beam) { case 0: newBeam = 3; break; case 1: newBeam = 2; break; case 2: newBeam = 0; break; case 3: newBeam = 1; break; default: break; } PercentGood[bin, beam] = (byte)(Math.Round((goodBeam.GoodBeamData[bin, newBeam] * 100.0) / pingsPerEnsemble)); } } // Vertical Beam if (goodBeam.GoodBeamData.GetLength(1) == 1) { PercentGood[bin, 0] = (byte)(Math.Round((goodBeam.GoodBeamData[bin, 0] * 100.0) / pingsPerEnsemble)); } } } }
public void TestJson() { // Generate an Ensemble DataSet.Ensemble ensemble = EnsembleHelper.GenerateEnsemble(30); // Modify the data ensemble.GoodBeamData.GoodBeamData[0, DataSet.Ensemble.BEAM_0_INDEX] = 1; ensemble.GoodBeamData.GoodBeamData[0, DataSet.Ensemble.BEAM_1_INDEX] = 2; ensemble.GoodBeamData.GoodBeamData[0, DataSet.Ensemble.BEAM_2_INDEX] = 3; ensemble.GoodBeamData.GoodBeamData[0, DataSet.Ensemble.BEAM_3_INDEX] = 4; ensemble.GoodBeamData.GoodBeamData[3, DataSet.Ensemble.BEAM_0_INDEX] = 2; ensemble.GoodBeamData.GoodBeamData[3, DataSet.Ensemble.BEAM_1_INDEX] = 3; ensemble.GoodBeamData.GoodBeamData[3, DataSet.Ensemble.BEAM_2_INDEX] = 4; ensemble.GoodBeamData.GoodBeamData[3, DataSet.Ensemble.BEAM_3_INDEX] = 5; ensemble.GoodBeamData.GoodBeamData[5, DataSet.Ensemble.BEAM_0_INDEX] = 3; ensemble.GoodBeamData.GoodBeamData[5, DataSet.Ensemble.BEAM_1_INDEX] = 4; ensemble.GoodBeamData.GoodBeamData[5, DataSet.Ensemble.BEAM_2_INDEX] = 5; ensemble.GoodBeamData.GoodBeamData[5, DataSet.Ensemble.BEAM_3_INDEX] = 6; string encoded = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.GoodBeamData); // Serialize object to JSON DataSet.GoodBeamDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.GoodBeamDataSet>(encoded); // Deserialize the JSON // Verify the values are the same Assert.AreEqual(1, decoded.GoodBeamData[0, DataSet.Ensemble.BEAM_0_INDEX], "Good Beam Data 0 0 is incorrect."); Assert.AreEqual(2, decoded.GoodBeamData[0, DataSet.Ensemble.BEAM_1_INDEX], "Good Beam Data 0 1 is incorrect."); Assert.AreEqual(3, decoded.GoodBeamData[0, DataSet.Ensemble.BEAM_2_INDEX], "Good Beam Data 0 2 is incorrect."); Assert.AreEqual(4, decoded.GoodBeamData[0, DataSet.Ensemble.BEAM_3_INDEX], "Good Beam Data 0 3 is incorrect."); Assert.AreEqual(2, decoded.GoodBeamData[3, DataSet.Ensemble.BEAM_0_INDEX], "Good Beam Data 3 0 is incorrect."); Assert.AreEqual(3, decoded.GoodBeamData[3, DataSet.Ensemble.BEAM_1_INDEX], "Good Beam Data 3 1 is incorrect."); Assert.AreEqual(4, decoded.GoodBeamData[3, DataSet.Ensemble.BEAM_2_INDEX], "Good Beam Data 3 2 is incorrect."); Assert.AreEqual(5, decoded.GoodBeamData[3, DataSet.Ensemble.BEAM_3_INDEX], "Good Beam Data 3 3 is incorrect."); Assert.AreEqual(3, decoded.GoodBeamData[5, DataSet.Ensemble.BEAM_0_INDEX], "Good Beam Data 5 0 is incorrect."); Assert.AreEqual(4, decoded.GoodBeamData[5, DataSet.Ensemble.BEAM_1_INDEX], "Good Beam Data 5 1 is incorrect."); Assert.AreEqual(5, decoded.GoodBeamData[5, DataSet.Ensemble.BEAM_2_INDEX], "Good Beam Data 5 2 is incorrect."); Assert.AreEqual(6, decoded.GoodBeamData[5, DataSet.Ensemble.BEAM_3_INDEX], "Good Beam Data 5 3 is incorrect."); }