Unfortunately, there is currently no way to know when a software trigger has been acted upon except indirectly.
When you are in sequence mode with burst triggering, the current waveform plays repeatedly until a trigger is received, which causes the signal generator to advance to the next waveform in the sequence. However, after the trigger is received, the current waveform plays to completion first. So if you have a 1000 point waveform, and the trigger is received while you are halfway through the waveform, the remaining 500 points will be generated before switching to the next waveform. If you send another trigger during that period of time, it will be ignored (it is redundant).
In a future release of NI-FGEN (sorry, I can't promise any date), we will add some features that will allow you to jump out of a waveform immediately, without playing to completion. This could be beneficial in your case. However, there will be some minimum amount of time that you need to wait before sending yet another trigger and jumping to the third waveform. It will be relatively short, but still, the data for the third waveform needs to be fetched from onobard memory into a cache for outputting.
The easiest workaround is to put a software delay after you call Send_Software_Trigger equal to the amount of time it takes to play the waveform once. Just take your number of points (1000 for example) divided by your sample rate (100 MS/sec for example) to get the time (10 us in this example) that you need to wait before sending another trigger. I suspect you are running much slower than that to be experiencing this issue.
Why do you need to assert software triggers so closely together? What is the minimum time you are looking for? Do you need to switch between waveforms very quickly?
Neil F.
Software Engineer
Modular Instruments R&D
National Instruments
Neil Feiereisel
Principal Engineer, Modular Instruments, National Instruments