10e4 and 10^4 are NOT the same thing.
You wouldn't think that 1.23e4 and 1.23^4 are the same thing, would you?
10e4 = 10 x 10^4 = 100,000
1e4 = 1 x 10^4 = 10,000
If you want to catch a 10 MicroSecond pulse, that would suggest a sampling rate of 100 kHz, bare minimum.
For 5 seconds, that's 5 x 100k = 5 million samples = 10 million bytes (assuming a single channel, recording as I16).
Depending on CPU speed, and RAM available, you could try the brute-force approach: record 5 seconds of data, then loop thru it and pick out the pulses.
I would suggest a trial:
1... Generate a 5-million sample array of I16 zeroes.
2... Change a few of the samples to +1000 (or something)
--- Now you have some phony data to play with.
3... Record the current millisecond timer value (T0).
4... Loop through the samples: If sample(I) > threshold and sample (I-1) is not (use a boolean shift reg.), then declare a pulse to exist at sample I. Append I to the array of indexes you're keeping.
5... When the loop is done, record the current millisecond timer value again (T1).
6... Subtract T1-T0 to get elapsed time. If it's greater than 2000 mSec, you can't use this approach.
7... Compare the results (indexes of peaks) to the peaks you put in (step 2). They should be the same.
If you can use this approach, it is the simplest to program.
Otherwise, you will have to use a double-buffered approach:
1... Define a CHUNK size of say, 2048 samples.
2... Set up a continuous DAQ operation to use a buffer of 2 * CHUNK samples.
3... Keep checking the DAQ backlog until the backlog is CHUNK or greater.
4... Read CHUNK samples from the buffer.
5... Search the chunk for pulses, append indexes to your results array.
--- Don't bother to read every sample in volts - too time-consuming - read it in binary (I16). Convert the peaks to volts afterward, if needed.
--- You need a threshold to distinguish a '1' level from a '0' level. The '0' level won't be 0.0000 volts, there will be some noise.
--- You might be able to measure the noise during the 2-sec down time, and establish your threshold that way.
--- The seconds approach assumes that the CPU is fast enough to process a chunk in less time than it takes to acquire one. If not, you're out of luck.
--- You don't want the chunk to be too small, as the overhead of calling the DAQ READ will swamp the processing time.