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?
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.