/// <summary> /// Creates and initalizes a SamplePlot object /// </summary> /// <param name="Samples">Raw sampled data from the input device</param> /// <param name="Channels">The number of channels being sampled (when 4 or fewer, sample data is 'stacked')</param> /// <param name="StackedSamples">'true' if more than one sample is stacked in each byte</param> public SamplePlot(byte[] Samples, int Channels, bool StackedSamples) { if (StackedSamples) { // When the number of channels is 4 or fewer, samples are 'stacked'. So here // we define the number of samples per byte and shift needed to get to the next // sample. switch (Channels) { case 1: samplesPerByte = 8; sampleShift = 1; break; case 2: samplesPerByte = 4; sampleShift = 2; break; case 3: case 4: samplesPerByte = 2; sampleShift = 4; break; default: if (Channels < 1 || Channels > 8) { throw new Exception("Channels must be in the range 1 - 8"); } samplesPerByte = 1; sampleShift = 0; break; } } else { samplesPerByte = 1; sampleShift = 0; } this.Channels = Channels; this.SampleSignals = new List <SampleSignal> [Channels]; currentChannelSignal = new SampleSignal[Channels]; for (int c = 0; c < Channels; c++) { // Initialize each channel low, 0 duration. currentChannelSignal[c] = new SampleSignal(SampleSignal.State.Low, 0); this.SampleSignals[c] = new List <SampleSignal>(2048); } // Build the sample arrays... buildSampleSignals(Samples); }
/// <summary> /// Add a signal to the Channel's list. /// </summary> /// <param name="channel"></param> private void addSignal(int channel) { SampleSignal ss = currentChannelSignal[channel]; if (ss.Duration > 0) { SampleSignals[channel].Add(ss); // Create a new current signal on this channel with the opposite flavor. // Duration = 1. currentChannelSignal[channel] = new SampleSignal(ss.SampleState == SampleSignal.State.High ? SampleSignal.State.Low : SampleSignal.State.High, 1); } }
/// <summary> /// Creates and initalizes a SamplePlot object /// </summary> /// <param name="Samples">Raw sampled data from the input device</param> /// <param name="Channels">The number of channels being sampled (when 4 or fewer, sample data is 'stacked')</param> /// <param name="StackedSamples">'true' if more than one sample is stacked in each byte</param> public SamplePlot(byte[] Samples, int Channels, bool StackedSamples) { if (StackedSamples) { // When the number of channels is 4 or fewer, samples are 'stacked'. So here // we define the number of samples per byte and shift needed to get to the next // sample. switch (Channels) { case 1: samplesPerByte = 8; sampleShift = 1; break; case 2: samplesPerByte = 4; sampleShift = 2; break; case 3: case 4: samplesPerByte = 2; sampleShift = 4; break; default: if (Channels < 1 || Channels > 8) throw new Exception("Channels must be in the range 1 - 8"); samplesPerByte = 1; sampleShift = 0; break; } } else { samplesPerByte = 1; sampleShift = 0; } this.Channels = Channels; this.SampleSignals = new List<SampleSignal>[Channels]; currentChannelSignal = new SampleSignal[Channels]; for (int c = 0; c < Channels; c++) { // Initialize each channel low, 0 duration. currentChannelSignal[c] = new SampleSignal(SampleSignal.State.Low, 0); this.SampleSignals[c] = new List<SampleSignal>(2048); } // Build the sample arrays... buildSampleSignals(Samples); }