The first thread below might be a good starting point. I have a lot of changes to the PyQa40x repo coming that will hopefully get pushed up today or this weekend. The aim for me is an environment for quick prototyping of algorithms using the QA403 and python. I’m not a python guy, but with llm can make it do what I need.
The second link is the PyQa40x repo.
If you can deal with discrete communication events (the bullets you outline suggest you can), then what is in place currently should work. Just define and output (DAC) and input (ADC) buffer, and call send_receive() and that will handle everything for you. When that’s done, you can process the input ADC data. See the readme at the PyQa40x repo.
The send_receive() will give you a consistent timing relationship between the ADC and DAC, which is often very helpful when first trying algorithms.