04-01-2008 05:46 PM
Error 0xfffcf19c - Some or all of the samples to write could not be written to the buffer yet. More space will free up as samples currently in the buffer are generated.
04-02-2008 11:26 AM
Generating the same data more than once is called regeneration. You can configure NI-DAQmx to allow or disallow regeneration by setting the Regeneration Mode attribute/property. By default, NI-DAQmx allows regeneration for sample clock timing and disallows it for handshaking or burst handshaking timing. When regeneration is disallowed, new data must be continuously written to the device.
When the Use Only Onboard Memory attribute/property is true, NI-DAQmx transfers data only once to the device and that data is continually regenerated from there. Attempting to write new data to the device after starting the task returns an error. In addition, the amount of data written to the device before staring the task must fit in the onboard memory of the device.
When the Use Only Onboard Memory attribute/property is false, NI-DAQmx continuously transfers data from the host memory buffer to the device even though this data is not changing. Thus, if you write new data to the device after starting the task, that new data is generated and regenerated until you write more new data. This type of regeneration is sometimes called PC memory or user buffer regeneration.
When this attribute/property is false, you can also set the
Data Transfer Request Condition attribute/property to specify
when to transfer data from the host buffer to the device."
My example is attached and is called Cont Gen Voltage Wfm-Int
Clk-Regeneration_Modified.vi. There are more notes in the VI itself
regarding each function used, but basically this example takes an
update from the user through the Front Panel and writes the value on
the analog output. You could easily modify this example to calculate
the update based on a formula or equation that better suits your needs.
I hope this helps, let us know if you have any other questions.
04-02-2008 12:55 PM
Matt,
Thanks for your reply.
I am not using Labview ( I'm using C++ in Visual Studio 6.0 ), so unfortunately I am not able to view your sample.
If I understand the regeneration documentation properly, I should be able to:
This will result in the device getting constantly updated with the contents of my data buffer, which I can update while the Task is running using the standard write() functions.
Is this correct?
I have some questions about the "UseOnlyOnBrdMem" configuration function ( see declaration below )
DAQmxSetAOUseOnlyOnBrdMem(TaskHandle taskHandle, const char channel[], bool32 data)
The channel[] parameter surprises me!
Thanks,
Anson
04-02-2008 05:32 PM
04-04-2008 12:39 PM
Matt,
I seem to be unable to configure regeneration and onboard memory usage for my PXI-6723.
Here is the configuration seqence I am performing
Steps 3 and 4 are generating the following errors:
3) DAQmxSetWriteRegenMode( DAQmxTaskHandle, 1 );
Error 0xfffcf273 - Requested value is not a supported value for this property.
4) DAQmxSetDOUseOnlyOnBrdMem(DAQmxTaskHandle, NULL, 0);
Error 0xfffcf0fc - Specified property is not supported by the device or is not applicable to the task.
Any ideas why I am receiving these errors?
Thanks,
Anson
04-07-2008 08:41 AM - edited 04-07-2008 08:43 AM
04-10-2008 02:32 PM
Matt,
Thanks for your patience. I should have caught those last errors, just overlooked them in my haste to get this resolved.
I have fixed the driver errors I was receiving ( per you directions ), however I am still unable to get this approach to work.
Below is the current Sequence of commands I am executing:
This sequence is working fine, and the first value I write to the task is being generated at the expected output.
After the task is started I am unable to update the output.
Am I missing something?
I thought that configuring the card in this manner would allow me to update the output task ( without stopping the task ) by changing the contents of the buffer supplied in step 7. Is this not correct?
Thanks for all your help,
Anson
04-11-2008 10:35 AM
- UPDATE -
Matt,
I increased my buffer size which resolved the failure I was receiving when executing the Write() function. So now there are no driver failures, but there is still a problem.
When I execute the Write() command, I receive no errors and the function indicates that the correct number of samples where written. I do not however see any change at the output pin. Also, after a few minutes the output drops to zero.
Here is the sequence:
Any ideas why I would see this?
Thanks again,
Anson
04-14-2008 05:22 PM
05-28-2008 04:32 PM