From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

using RTSI in Ansi C

I currently have a system with a PC6071 E and a PCI MIO 16E-4
I am using a bouble buffered Data aquisition
where I first configure the cards
then readAnalogue from each card in a loop.
If I use each card indivually ie. only one card is aquiring dat I have
no problem.
If I use the readAnalogue sequencially the first card aquires data but
the second card gives error -10609 transferInProgError.
I have read that a RTSI must be used to synchonise two cards but all the
examples I have found are in Labview.
How do I synchonised two E series Cards using a double buffer in using
C?
0 Kudos
Message 1 of 2
(2,472 Views)
From your question, it sounds like you are running into 2 possible problems. If you are trying to synchronize 2 E-Series boards by sharing timing and triggering signals over the RTSI bus, you'll need to use the DAQ function Select_Signal. One board will need to be the "master" and the other the "slave". The order of programming should be:

1) Configure the master and call Select_Signal to route the scan clock and/or the AI Start Trigger over RTSI.
2) Configure the slave's acquisition and call Select_Signal to specify that the slave's scan clock and/or start trigger come off the RTSI bus lines specified in Step 1.
3) Start the slave.
4) Start the master.

If you are simply trying to perform 2 analog input operations simultaneously, you'll need to make sure that your D
AQ operations are asynchronous. By asynchronous, I mean that you do not use function calls that retain control of the nidaq32.dll until the operation completes. For example, you'll need to call DAQ_DB_HalfReady before calling DAQ_DB_Transfer to prevent the double-buffer transfer function from waiting until the data is available before retrieving and returning it. If you let the function wait, then other DAQ functions will not be able to execute.

You'll also want to make sure that you are not programming the same device twice without calling DAQ_Clear in between operations. That is a common cause of the -10609 error.
0 Kudos
Message 2 of 2
(2,472 Views)