You are on page 1of 2

public void GenerateBitSync()

{
AnalogOutput7200bps = new Task();
double freq = 7200;
double samplesPerBuffer = 100;
double cyclesPerBuffer = 25;

string analogOut = CardName + "/ao0";


AnalogOutput7200bps.AOChannels.CreateVoltageChannel(analogOut, "", -1,
1, AOVoltageUnits.Volts);
AnalogOutput7200bps.Control(TaskAction.Verify);
SquareWave square = new SquareWave(AnalogOutput7200bps.Timing, freq,
samplesPerBuffer, cyclesPerBuffer);
AnalogOutput7200bps.Timing.ConfigureSampleClock("",
square.ResultingSampleClockRate, SampleClockActiveEdge.Rising,
SampleQuantityMode.ContinuousSamples, square.Data.Length);
AnalogSingleChannelWriter writer = new
AnalogSingleChannelWriter(AnalogOutput7200bps.Stream);
writer.WriteMultiSample(true, square.Data);
}

public class SquareWave


{
private double[] data;
private double desiredSampleClockRate;
private double resultingFrequency;
private double resultingSampleClockRate;
private double samplesPerCycle;

public SquareWave(Timing timingObject, double frequency, int


samplesPerBuffer, int cyclesPerBuffer)
{
timingObject.SampleTimingType = SampleTimingType.SampleClock;
desiredSampleClockRate = (frequency * samplesPerBuffer) /
cyclesPerBuffer;
samplesPerCycle = samplesPerBuffer / cyclesPerBuffer;
timingObject.SampleClockRate = desiredSampleClockRate;
resultingSampleClockRate = timingObject.SampleClockRate;
resultingFrequency = resultingSampleClockRate / (samplesPerBuffer /
cyclesPerBuffer);
data = GeneratePoints(resultingFrequency, resultingSampleClockRate,
samplesPerBuffer, samplesPerCycle);

public double[] Data


{
get
{
return data;
}
}

public double ResultingSampleClockRate


{
get
{
return resultingSampleClockRate;
}
}

public double[] GeneratePoints(double frequency, double sampleClockRate,


double samplesPerBuffer, double samplesPerCycle)
{
int i;
int j;
double deltaT = 1 / sampleClockRate;
int intSamplesPerBuffer = (int)samplesPerBuffer;
int mid = (int)samplesPerCycle / 2;
double[] dataVal = new double[intSamplesPerBuffer];

for (i = 0; i < intSamplesPerBuffer; i++)


{
j = i % (int)samplesPerCycle;

dataVal[i] = (1 - 2 * (j / mid));
}

return dataVal;

}
}
}

You might also like