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.AncillaryData); } watch.Stop(); long resultSerialize = watch.ElapsedMilliseconds; // Test Deserialize() string encodedd = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.AncillaryData); watch = new Stopwatch(); watch.Start(); for (int x = 0; x < 1000; x++) { DataSet.AncillaryDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.AncillaryDataSet>(encodedd); } watch.Stop(); long resultDeserialize = watch.ElapsedMilliseconds; Debug.WriteLine(String.Format("Serialize:{0} Deserialize:{1}", resultSerialize, resultDeserialize)); Debug.WriteLine("Complete"); }
public void TestJson() { // Generate an Ensemble DataSet.Ensemble ensemble = EnsembleHelper.GenerateEnsemble(30); // Modify the data ensemble.AncillaryData.FirstBinRange = 1.2f; ensemble.AncillaryData.BinSize = 2.3f; ensemble.AncillaryData.FirstPingTime = 3.4f; ensemble.AncillaryData.LastPingTime = 4.5f; ensemble.AncillaryData.Heading = 5.6f; ensemble.AncillaryData.Pitch = 6.7f; ensemble.AncillaryData.Roll = 7.8f; ensemble.AncillaryData.WaterTemp = 8.9f; ensemble.AncillaryData.SystemTemp = 9.10f; ensemble.AncillaryData.Salinity = 10.11f; ensemble.AncillaryData.Pressure = 11.12f; ensemble.AncillaryData.TransducerDepth = 12.13f; ensemble.AncillaryData.SpeedOfSound = 13.14f; string encoded = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.AncillaryData); // Serialize object to JSON DataSet.AncillaryDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.AncillaryDataSet>(encoded); // Deserialize the JSON // Verify the values are the same Assert.AreEqual(1.2f, decoded.FirstBinRange, "First Bin Range is incorrect."); Assert.AreEqual(2.3f, decoded.BinSize, "BinSize is incorrect."); Assert.AreEqual(3.4f, decoded.FirstPingTime, "FirstPingTime is incorrect."); Assert.AreEqual(4.5f, decoded.LastPingTime, "LastPingTime is incorrect."); Assert.AreEqual(5.6f, decoded.Heading, "Heading is incorrect."); Assert.AreEqual(6.7f, decoded.Pitch, "Pitch is incorrect."); Assert.AreEqual(7.8f, decoded.Roll, "Roll is incorrect."); Assert.AreEqual(8.9f, decoded.WaterTemp, "WaterTemp is incorrect."); Assert.AreEqual(9.10f, decoded.SystemTemp, "SystemTemp is incorrect."); Assert.AreEqual(10.11f, decoded.Salinity, "Salinity is incorrect."); Assert.AreEqual(11.12f, decoded.Pressure, "Pressure is incorrect."); Assert.AreEqual(12.13f, decoded.TransducerDepth, "TransducerDepth is incorrect."); Assert.AreEqual(13.14f, decoded.SpeedOfSound, "SpeedOfSound is incorrect."); }
public void DecodePd0Test() { Pd0FixedLeader fl = new Pd0FixedLeader(); Pd0VariableLeader vl = new Pd0VariableLeader(); fl.DepthCellLength = 23 * 100; vl.Heading = 223.3f; vl.Pitch = 123.45f; vl.Roll = 445.69f; vl.Temperature = 78.9f; vl.Pressure = 11; vl.DepthOfTransducer = 23 * 10; DataSet.AncillaryDataSet anc = new DataSet.AncillaryDataSet(); anc.DecodePd0Ensemble(fl, vl); Assert.AreEqual(23, anc.BinSize, "Bin size is incorrect."); Assert.AreEqual(223.3f, anc.Heading, "Heading is incorrect."); Assert.AreEqual(123.45f, anc.Pitch, "Pitch is incorrect."); Assert.AreEqual(445.69f, anc.Roll, "Roll is incorrect."); Assert.AreEqual(78.9f, anc.WaterTemp, "Water Temp is incorrect."); Assert.AreEqual(110000, anc.Pressure, "Pressure is incorrect."); Assert.AreEqual(23, anc.TransducerDepth, "Transducer Depth is incorrect."); }
/// <summary> /// Convert the RTI Ancillary and Ensemble data set to the PD0 Fixed Leader data type. /// </summary> /// <param name="ens">RTI Ensemble data set.</param> /// <param name="anc">RTI Ancillary data set.</param> /// <param name="sysSetup">SystemSetup data set.</param> /// <param name="xform">Coordinate Transform.</param> public void DecodeRtiEnsemble(DataSet.EnsembleDataSet ens, DataSet.AncillaryDataSet anc, DataSet.SystemSetupDataSet sysSetup, PD0.CoordinateTransforms xform) { // Ensure the values were given, or create default values if (ens == null) { ens = new DataSet.EnsembleDataSet(); } if (anc == null) { anc = new DataSet.AncillaryDataSet(); } if (sysSetup == null) { sysSetup = new DataSet.SystemSetupDataSet(); } CpuFirmwareVersion = (byte)ens.SysFirmware.FirmwareMinor; // Firmware Major CpuFirmwareRevision = (byte)ens.SysFirmware.FirmwareRevision; // Firmware Minor switch(ens.SubsystemConfig.SubSystem.GetSystemFrequency()) { case Subsystem.SystemFrequency.Freq_75kHz: SetSystemFrequency(SystemFrequency.Freq_75kHz); // 75 kHz Set30DegreeBeamAngle(); // 30 Degree Beam Angle SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus); // 4 Beam Janus SetConvex(); // Set Convex SetSensorConfig1(); // Set Sensor Config 1 SetHeadAttached(); // Set Head Attached break; case Subsystem.SystemFrequency.Freq_150kHz: SetSystemFrequency(SystemFrequency.Freq_150kHz); // 150 kHz Set30DegreeBeamAngle(); // 20 Degree Beam Angle SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus); // 4 Beam Janus SetConvex(); // Set Convex SetSensorConfig1(); // Set Sensor Config 1 SetHeadAttached(); // Set Head Attached break; case Subsystem.SystemFrequency.Freq_300kHz: SetSystemFrequency(SystemFrequency.Freq_300kHz); // 300 kHz Set20DegreeBeamAngle(); // 20 Degree Beam Angle SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus); // 4 Beam Janus SetConvex(); // Set Convex SetSensorConfig1(); // Set Sensor Config 1 SetHeadAttached(); // Set Head Attached break; case Subsystem.SystemFrequency.Freq_600kHz: SetSystemFrequency(SystemFrequency.Freq_600kHz); // 600 kHz Set20DegreeBeamAngle(); // 20 Degree Beam Angle SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus); // 4 Beam Janus SetConvex(); // Set Convex SetSensorConfig1(); // Set Sensor Config 1 SetHeadAttached(); // Set Head Attached break; case Subsystem.SystemFrequency.Freq_1200kHz: SetSystemFrequency(SystemFrequency.Freq_1200kHz); // 1200 kHz Set20DegreeBeamAngle(); // 20 Degree Beam Angle SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus); // 4 Beam Janus SetConvex(); // Set Convex SetSensorConfig1(); // Set Sensor Config 1 SetHeadAttached(); // Set Head Attached break; case Subsystem.SystemFrequency.Freq_2000kHz: SetSystemFrequency(SystemFrequency.Freq_2400kHz); // 2400 kHz Set20DegreeBeamAngle(); // 20 Degree Beam Angle SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus); // 4 Beam Janus SetConvex(); // Set Convex SetSensorConfig1(); // Set Sensor Config 1 SetHeadAttached(); // Set Head Attached break; case Subsystem.SystemFrequency.Freq_38kHz: default: break; } if (anc.Roll < 90 && anc.Roll > -90) { SetBeamsUpward(); // Set Beams Upward } else { SetBeamsDownward(); // Set Beams Downward } RealSimFlag = false; LagLength = 0; // Lag Length NumberOfBeams = (byte)ens.NumBeams; // Number of Beams NumberOfCells = (byte)ens.NumBins; // Number of bins PingsPerEnsemble = (ushort)ens.ActualPingCount; // Pings per ensemble DepthCellLength = (ushort)Math.Round(anc.BinSize * 100); // Depth Cell length BlankAfterTransmit = 0; // Blank - CWPBL - Do not have enough info ProfilingMode = 0; // Signal Processing Mode - CWPBB - Do not have enough info LowCorrThresh = 0; // Low Correlation Threshold - CWPCT - Do not have enough info NumCodeRepeats = (byte)sysSetup.WpRepeatN; // Number of Code Repeats PercentGoodMinimum = 0; // Percent Good Minimum - Do not have enough info ErrorVelMaximum = 0; // Error Velocity Maximum - Do not have enough info TimeBetweenPingMinutes = 0; // Time Between Pings Minutes - CWPTBP - Do not have enough info TimeBetweenPingSeconds = 0; // Time Between Pings Seconds - CWPTBP - Do not have enough info TimeBetweenPingHundredths = 0; // Time Between Pings Hundredths -CWPTBP - Do not have enough info SetCoordinateTransform(xform); // Set Coordinate Transform HeadingAlignment = 0; // Heading alignment HeadingBias = 0; // Heading Bias SensorSource = 0x5d; // Sensor Source SensorsAvailable = 0x5d; // Sensors Available Bin1Distance = (ushort)Math.Round(anc.FirstBinRange * 100); // Bin 1 distance XmitPulseLength = 0; // Transmit Pulse Length - Do not have enough info ReferenceLayerAverageStartCell = 0; // Reference Layer Average Start Cell - Do not have enough info ReferenceLayerAverageEndCell = 0; // Reference Layer Average End Cell - Do not have enough info FalseTargetThresh = 0; // False Target Threshold Spare_40 = 0xFE; // Spare TransmitLagDistance = 0; // Lag Distance - CWPLL - Do not have enough info CpuBoardSerialNumber = ens.SysSerialNumber.ToString(); // CPU Board Serial Number SystemBandwidth = 12; // System Bandwidth SystemPower = 0; // System Power BaseFrequencyIndex = 0; // Base Frequency Index BeamAngle = 0; // Beam Angle }