Measurement Studio for VC++

cancel
Showing results for 
Search instead for 
Did you mean: 

Using Double Buffered Digital output on a DIO-32HS and gets occational 10803, 10843 & 10608 errors and data corruption - why?

Using Double Buffered Digital output on a DIO-32HS and I get occational 10803, 10843 & 10608 errors. Also the data is corrupted when observed at the other end of the outputs.
I have upgraded to the lastest 6.9.1 driver for NT4.
oldDataStop is set (=1) via Dig_DB_Config.
Dig_DB_HalfReady reports these occational errors and I'm not sure what action I need to take in each case.
Nor why, having set oldDataStop, I get data corruption.
I'd be happier for the output to stop if my code fails to fill the buffer in time, but it is unaccaptable for the data to be out of sequence in any way.
0 Kudos
Message 1 of 4
(3,545 Views)
This section of Developer's Exchange is for discussion of Measurement Studio for Visual C++. There is a section of Developer's Exchange dedicated to digital I/O here.

Since your question is a general C API question on digital I/O, you will have much better results posting it in the digital I/O section.

Best Regards,

Chris Matthews
National Instruments
0 Kudos
Message 2 of 4
(3,545 Views)
Aaron

I'm not sure why you are getting corrupted data. Are you using Handshaking or Pattern I/O? There are example programs for each included within NI-DAQ that use Double Buffering you might want to try to see if you have the same results.

You are correct, when setting oldDataStop to 1, it will not output old data a second time.

As to the errors, try decreasing your timebase. Error 10843 usually comes from the PCI bus on your machine not being able to transfer data fast enough.

I hope this info is useful.

Brian
0 Kudos
Message 3 of 4
(3,545 Views)
Handshaking, the data is being clocked out using Req at 314KHz (well under spec for the DIO card).
The DB example is where my code grew from, obviously the example code did not have my data & so would not work with the downstream equipment.
If I turn off oldDataStop the spurious errors vanish, but how can I determine when the DIO has over/underflowed?
The PCI bus is able to cope with all the bandwidth I'm putting through it. The only 'bottleneck' is the fact that I have to poll the DIO card for DB-Half-Ready rather than getting a good hard (& fast) interrupt - I tried the callbacks, but the CPU overhead & latency was far too great (at over 30ms).
So some more help is required - thanks
Aaron
0 Kudos
Message 4 of 4
(3,545 Views)