I've written my own, mostly using the linux-gpib Perl library. I've also written a perl wrapper for my instruments so I can do queries from the shell:
$ pspq *idn?
HEWLETT-PACKARD,E3631A,0,2.1-5.0-1.0
$ dmmq # read value from 3478A
+0.47033E+0
Or, set things:
$ psp "APPL P6V, 3.3, 0.1" # set 6V output to 3.3V@100mA
$ psp "OUTPUT ON"
With this simple interface, most everything I need gets written in bash. Occasionally, I've written some projects directly in Perl or C if I needed faster acquisition or control.
After getting the data, I usually use gnuplot for simple plotting, or octave for any signal analysis.
I've been pretty happy with the "roll your own" approach. There's certainly no support for linux-gpib, or Linux in general, from any equipment manufacturer that I'm aware of.
Started now with Python....and after some heavy reading and googeling around I came to this first program...
It send the screendump command to my LeCory 9414 and reads the HPGL output and pipes it through hp2xx to convert the HPGL format to a PNG file:
#!/usr/bin/python
import sys
from subprocess import Popen, PIPE
import errno
import shlex
hpgl = ""
hp2xx = "/usr/bin/hp2xx -m png -c 12445611 -d 150 -q -f "
cat = "/bin/cat"
from Gpib import *
file_name = sys.argv[1]
hp2xx += file_name
hp2xx += ".png"
p = Popen(shlex.split(hp2xx), shell=False, stdin=PIPE)
bytes = 200
inst = Gpib(0,15)
inst.write("SCDP")
p.stdin.write(inst.read(bytes))
count = 0
while inst.ibcnt() == bytes:
print 'Bytes read: ',count
p.stdin.write(inst.read(bytes))
count += bytes
print '\nFinished dumping... '
print hp2xx
p.stdin.close()
p.wait()
Especially the piping to another program was a nightmare to find out how it should be done correctly (o;
Sample output: