We are using devices like PXIe-6363, PCIe-6321 depending on requirements and these are dealt with using the MHDDK with Visa backend on Windows (I hope that is the correct terminology).
All I/O, both analog and digital simultaneously, is done using DMA transfers using the standard MHDDK classes for doing so. This all works without problems.
One last improvement is I'd like to be notified using a callback/event system when a new block of data is ready: currently I'm just polling the input DMA's available number of bytes in a continuous loop with no sleep() in order to be able to process data as soon as it's ready. Works, but keeps one cpu busy the whole time.
I didn't see any way to use callbacks using the MHDDK which makes sense since it's purely based on register I/O if I understand it correctly.
However I noticed Visa has viInstallHandler, viEnableEvent and the likes. I went through some documentation on the event types but admit this is over my head and I have no idea where to start.
Could anyone point me in the right direction?
First question is if what I'm asking for is possible? Second I think I just have to call viInstallHandler for the correct event type, then figure out if the event is for an input DMA transfer from PXI? Using viGetAttribute somehow?
Thanks in advance!