Old topic, but this is a direct follow-up to the information posted above so this seems like the best place for it.
The article Karl (@noisefreak) wrote and linked above was really helpful to me in two ways: (1) Demonstrating how to setup continuous, fast triggering and get individual readings when desired, and (2) Pointing out that the "R? 1" command actually returned the "most recent" or "last taken" measurement, despite the documentation (incorrectly) saying it would return the "oldest" measurement from the buffer.
I wrote code based on Karl's information, and it worked great with firmware 3.01.01.06R2 on my 3065X. But things fell apart when I recently updated to firmware 3.01.01.10 (2021-JUL)!
Apparently Siglent "fixed" the "R?" command to work per the documentation. It now returns the "oldest" value(s) first, as the documentation states. Unfortunately, that means the technique that previously worked -- using "R? 1" to get the latest measurement -- instead returns an OLD measurement.
I found a pretty simple fix. Instead of using "R? 1" to read a value, use the "DATA:LAST?" command. This will return the last (most current) measurement, as "R? 1" used to do in the old firmware. And "DATA:LAST?" can be used to get the most recent measurement regardless of firmware version (i.e., it works the same in old and new firmware).
One complication of replacing "R? 1" with "DATA:LAST?" is that the return format is different. Since "R?" can return multiple values, it's return string is prefixed with some digits to indicate the length, so that had to be interpreted and stripped to isolate the actual value returned. The "DATA:LAST?" only returns a single value, so there is no length prefix -- but it is suffixed with " VDC", " VAC", etc., so the suffix has to be stripped before attempting numeric conversion.