05-23-2011 06:07 AM
Hi,
Currently I am using NI PXI 4461 for one of my project. I was trying to generate different frequency signals in ao0 and ao1 simultaneously. Using C# 2008 I have developed a sample application for testing it. Everything works fine except that both the ao0 and ao1 delivering different amplitude signal but same in the frequency. I have tested it with different frequency setting, but the result was the same. Both channels having same frequency. I could not figure out the problem exactly. I have given the code below.
Task l_objTask = new Task();
FunctionGenerator l_objFunGenerator = null;
FunctionGenerator l_objFunGenerator2 = null;
AnalogMultiChannelWriter l_objWriter;
l_objTask.AOChannels.CreateVoltageChannel("PXI1Slot2" + "/ao0", "ao0Channel", -10, 10, AOVoltageUnits.Volts);
l_objTask.Control(TaskAction.Verify);
l_objTask.AOChannels.CreateVoltageChannel("PXI1Slot2" + "/ao1", "ao1Channel", -10, 10, AOVoltageUnits.Volts);
l_objTask.Control(TaskAction.Verify);
l_objFunGenerator = new FunctionGenerator(l_objTask.Timing, "1000", "250", "5", WaveformType.SineWave.ToString(),"2.0");
l_objFunGenerator2 = new FunctionGenerator(l_objTask.Timing, "2000", "250", "5",WaveformType.SineWave.ToString(),"5.0");
l_objTask.Timing.ConfigureSampleClock("OnboardClock", l_objFunGenerator.ResultingSampleClockRate, SampleClockActiveEdge.Rising,
SampleQuantityMode.ContinuousSamples, 50);
l_objTask.Timing.ConfigureSampleClock("OnboardClock", l_objFunGenerator2.ResultingSampleClockRate, SampleClockActiveEdge.Rising,
SampleQuantityMode.ContinuousSamples, 50);
l_objWriter = new AnalogMultiChannelWriter(l_objTask.Stream);
double[,] l_nData = new double[2, l_objFunGenerator2.Data.Length];
int l_Count = 0;
for (int l_nTemp = 0; l_nTemp < l_objFunGenerator.Data.Length; l_nTemp++)
l_nData[0, l_Count++] = l_objFunGenerator.Data[l_nTemp];
l_Count = 0;
for (int l_nTemp = l_objFunGenerator.Data.Length; l_nTemp < l_nData.Length; l_nTemp++)
l_nData[1, l_Count++] = l_objFunGenerator2.Data[l_nTemp - 250];
l_objWriter.WriteMultiSample(false, l_nData);
l_objTask.Start();