You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
My goal is to use liblxi (https://github.com/lxi-tools/liblxi) for this. Getting basic back-and-forth transactions to work is easy, but there are 2 issues:
some of the current scope drivers are doing bulk operations, where multiple SendCommands are issued one after the other, which are then followed by an equal number of ReadReply calls: https://github.com/azonenberg/scopehal/blob/5b91e7c79d3aca8cbdf70767eec03ca2b12875cd/scopehal/LeCroyOscilloscope.cpp#L1020-L1024
VXI-11 is based on RPC and synchronous. It doesn't work with multiple queued up replies.
If SCPITransport is decoupled from SCPIDevice, then all SCPIDevices should have synchronous transactions by default and bulk transactions as a performance optimization.
I don't know how many such cases there currently are in the code.
lxi_receive requires a len parameter which contains the maximum number of bytes that can be received. If the number of bytes returned by the device is larger than len, liblxi simply drops those bytes.
My planned solution for SCPILxiTransport is to have a staging buffer that is larger than the largest possible chunk of data that can be returned. In the case of a Siglent SDS2304X, a single waveform can be 140M sample points, so the staging buffer could potentially be that large. (In practice, once the waveform size is larger than 700k, lxi fails to return the waveform.)
tomverbeure was working on this, making a ticket so people know it's in progress
The text was updated successfully, but these errors were encountered: