Hi.
I am currently programming a driver for an older instrument that does not use EOI (End-Or-Identify) via GPIB. While this wasn’t very uncommon back then, it was often possible to activate the EOI optionally via parameters, as with the HP 3456A driver. Now, this option is not available on the current device.
Thanks to the really detailed SweepMe Wiki, I am aware of the EOI customization option. When sending, a modification of behaviour isn’t even required, it works just fine the normal way, the EOI being sent is simply ignored by the instrument.
Problems start to arise when receiving data because the device does not send an EOI and the GPIB request initialted by the self.port.read() command cannot recognize the end of the response.
Fortunately, in my case (as is often the case with instruments that use no EOI) the response is always the same length. In pyvisa, this is usually made an advantage of by using read_bytes() to retrieve a fixed sum of bytes, avoiding the need to receive an identifier for the end of the response (a.k.a. EOI). Often, this is done in combination with the wait_for_srq() function since many devices offer the SRQ signal to show that the measurement data is ready to be retrieved (then you don’t have to rely on the measurement result being ready faster than the VISA timeout that is being running when SweepMe waits for the response of the self.port.read() command).
Is there a possibility in SweepMe to use at least read_bytes() from pyvisa and maybe even the wait_for_srq() function?
Best wishes,
Christian