The HP8116A function generator is a fairly old product. It is an analog function generator that HP added a GPIB interface to. It will output a range of 0.1mHZ to 50MHz with sine, square, pulse and triangle wave outputs. The instrument is old enough that the GPIB language is not SCPI, but R2D2. This tool will convert the R2D2 into human readable language. Read back capabilities are somewhat primitive.

Pretty much all of the GPIB commands listed in the Programmers Manual are supported. Commands can be supplied to the tool on the shell command line, from a script file, or from an internal shell-like mode. Arbitrary delays between commands can be set.

This tool shares the architecture of the project #HP E3634A Power Supply Control Software . Both tools share a lot of their source code. GPIB interface tasks are handled by the linux_gpib library that is available via Source Forge and other places. Linux_gpib supports many different interface boards and dongles. Development was done under Fedora 32 and tested on several other Fedora versions. You must install the linux_gpib package before building this tool.

Both the linux_gpib library and the National Instruments NI488-2 libraries are compatible with each other with minor exceptions. It is possible to build this package to run under Windows using the NI488-2 library. Instructions to do so can be found in my #HP545xx Data Acquisition Software project.

In order to build this project on a Linux machine, you must already have the linux_gpib package installed. There is a .h file needed at compile time and a library that is needed at link time for this package to compile successfully. Create a working directory to build the tool in and copy the .tgz file into it. Un-tar the file and type make:

> mkdir HP8116_ctl

> cd HP8116_ctl

> cp wherever/HP8116_ctl_xx_xx_xxxx.tgz  .

> tar -xvf HP8116_ctl_xx_xx_xxxx.tgz

> make

and the software should build with no errors or warning messages. Finally, copy the executable program to a convenient directory in your executable path like ~/bin. There should be no need to do any of these tasks as root unless you want to put the executable in a directory off the /usr tree.

Typing ./HP8116_ctl    with no parameters will give you a command listing:

Usage: HP8116_ctl [-d dev_addr] CMD1 [arg1] [CMD2]...
 where CMDn [argn] is one of:

HELP                                            cmd_name
READ_CMDFILE                          cmdfilename
INTERACTIVE                              [TOLERANT]
SLEEP_MS                                  NmilliSeconds
DEV_CLR                                    No Parameters
GET_STATUS                              No Parameters
GET_ERROR                               No Parameters
SET_TRIG_MODE                       NORM/TRIG/GATE/EXT_WID/INT_SWP/EXT_SWP/INT_BUR/EXT_BUR
SET_TRIG_CTL                           OFF/+/-
SET_MODULATION        ...

Read more »