private static JsonValue AnalogWaveformHelper <T>(ITimedWaveform waveform) { JsonObject value = new JsonObject(); if (waveform is ComplexWaveform <T> complexData) { value[NITypeFactory.WaveformYFieldName] = SerializeArray(complexData.GetRawData()); } else if (waveform is AnalogWaveform <T> analogData) { value[NITypeFactory.WaveformYFieldName] = SerializeArray(analogData.GetRawData()); } if (waveform.PrecisionTiming != null) { value[NITypeFactory.WaveformT0FieldName] = SerializePrecisionDateTime(waveform.PrecisionTiming.StartTime); value[NITypeFactory.WaveformDTFieldName] = SerializeDouble(waveform.PrecisionTiming.SampleInterval.TotalSeconds); } if (!string.IsNullOrEmpty(waveform.ChannelName)) { value["channelName"] = SerializeString(waveform.ChannelName); } return(value); }
/// <summary> /// Serializes the C# model representation of an AnalogWaveform /// </summary> /// <param name="waveform">The waveform value to serialize</param> /// <returns>The corresponding JavaScript representation. Will be a <see cref="JsonObject"/> with a field for each waveform field.</returns> public static JsonValue SerializeWaveform(ITimedWaveform waveform) { JsonValue result = null; if (waveform is AnalogWaveform <double> ) { result = AnalogWaveformHelper <double>(waveform); } else if (waveform is AnalogWaveform <float> ) { result = AnalogWaveformHelper <float>(waveform); } else if (waveform is AnalogWaveform <sbyte> ) { result = AnalogWaveformHelper <sbyte>(waveform); } else if (waveform is AnalogWaveform <byte> ) { result = AnalogWaveformHelper <byte>(waveform); } else if (waveform is AnalogWaveform <ushort> ) { result = AnalogWaveformHelper <ushort>(waveform); } else if (waveform is AnalogWaveform <short> ) { result = AnalogWaveformHelper <short>(waveform); } else if (waveform is AnalogWaveform <uint> ) { result = AnalogWaveformHelper <uint>(waveform); } else if (waveform is AnalogWaveform <int> ) { result = AnalogWaveformHelper <int>(waveform); } else if (waveform is ComplexWaveform <ComplexSingle> ) { result = AnalogWaveformHelper <ComplexSingle>(waveform); } else if (waveform is ComplexWaveform <ComplexDouble> ) { result = AnalogWaveformHelper <ComplexDouble>(waveform); } else { throw new ArgumentException($"Can't serialize this kind of analog waveform: {waveform.GetType()}", nameof(waveform)); } return(result); }