Hello,
"1. If no. of sample is -1, then I can't control how many points it capture. I cannot do the alignment between AO and AI data. For example, AO is 100kpts and AI is 90~120kpts."
Even though you are displaying 90 - 120 kpts per iteration of your while loop, the AI and AO is still synchronized. The reason you are seeing a difference in the number of points written and read in each loop is because the DAQmx Read.vi immediately reads whatever data is in the buffer. Then the DAQmx Write.vi writes 1000 points. The DAQmx Write will hold the loop until all 1000 points are written. When the next DAQmx Read is called, it picks up the data that it missed in the previous iteration plus the new that data that was written.
"2. If the "Sinewave generation" is run before AO write, the level or frequency AO signal cannot be changed during program running. However, I need it to be changed easy and effectively."
To change the waveform parameters during execution, you just need to put another waveform generator inside the while loop. I have made this modification and attached the new VI. Keep in mind that with AO, the output frequency is dependent on the frequency control, sampling frequency of the generator, and update rate. Use this formula to calculate actual output signal frequency:
Output Frequency = [Update Rate * Frequency] / Sampling Frequency
Let me know if you have any further questions.
Regards,
Sean C.