Hello,
I'm working on generating and acquiring data using the pci 6551 with visual c++.
Since I require a channel to go into high impedance during acquisition, im using writenamedwaveformwdt function. However , I don't quite understand what the 3rd parameter (samples to write) should be. According to the help file it is the number of channels multiplied by waveform size, but during debugging I get memory corruption error. Snippets of my code is as follows:
#define WAVEFORM_SIZE 100000
#define WDT_SIZE 100000
#define SAMPLES_TO_READ 50
ViRsrc deviceID = "Dev1";
ViConstString channelList = "0-3";
ViInt8 VoltageConfigurationSupported = 0;
ViReal64 sampleClockRate;
ViConstString triggerSource = "PFI2"; //generation trigger
ViInt32 triggerEdge = 12;
ViConstString triggerID = "ScriptTrigger0";
ViInt32 dataWidth = 4;
ViUInt8 waveformData[WAVEFORM_SIZE];
ViConstString waveformName = "myWfm";
for (bit = 0; bit < 1000 ;bit++)
{
waveformData[z] = 0;
z++;
waveformData[z] = 0;
z++;
waveformData[z] = 1;
z++;
waveformData[z] = 0;
z++;
bit++;
}
/* Note: waveform names are referenced in script */
ViConstString script =
"script myScript "
" repeat forever "
" wait until ScriptTrigger0 "
" repeat 1 "
" generate myWfm "
" end repeat "
" end repeat "
"end script";
/* Initialize generation session */
checkErr(niHSDIO_InitGenerationSession(
deviceID, VI_FALSE, VI_FALSE, VI_NULL, &gvi));
/* Reset Device */
checkErr(niHSDIO_ResetDevice (gvi));
/* Assign channels for dynamic generation */
checkErr(niHSDIO_AssignDynamicChannels (gvi, channelList));
/* Configure clocking parameters */
checkErr(niHSDIO_ConfigureSampleClock(
gvi, NIHSDIO_VAL_ON_BOARD_CLOCK_STR, sampleClockRate));
/* Configure hardware script trigger */
checkErr(niHSDIO_ConfigureDigitalEdgeScriptTrigger(
gvi, triggerID, triggerSource, triggerEdge));
/* Configure generation mode for scripted generation */
checkErr(niHSDIO_ConfigureGenerationMode(gvi, NIHSDIO_VAL_SCRIPTED));
checkErr(niHSDIO_WriteNamedWaveformWDT(gvi,waveformName,WDT_SIZE,NIHSDIO_VAL_GROUP_BY_SAMPLE,waveformData));
/* Write script to device */
checkErr(niHSDIO_WriteScript(gvi, script));
/* Initiate generation */
checkErr(niHSDIO_Initiate(gvi));
There isn't any error code, the program just terminates, unless running in debug mode.
When I reduce wdt_size to 8 the data isn't what im expecting...
Any suggestions?
Thanks,
Arifa