The HP34401A Digital Multimeter (DMM) is a commonly used benchtop meter. They are available on the used market for reasonable (for what you are getting) prices. It is new enough that it supports the SCPI style command set which makes writing drivers simpler than the old R2D2 style command set.

This tool supports measurements using automatic configuration or manual configuration. It can make use of the triggering system in the '34401A to accurately control when multiple measurements are made. Measurement data can be saved to .csv files. 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. Multiple measurements with delays between them can be made with the measurements saved to a .csv file for later use.

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 HP34401A_ctl

> cd HP34401A_ctl

> cp wherever/HP34401A_ctl_xx_xx_xxxx.tgz  .

> tar -xvf HP34401A_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 ./HP34401A_ctl    with no parameters will give you a command listing:

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

HELP                                            cmd_name
READ_CMDFILE                          cmdfilename
INTERACTIVE                              [TOLERANT]
SLEEP_MS                                  NmilliSeconds
GET_ID                                        no parameters
GET_ERRORS                              no parameters
GET_VOLTAGE_DC_AUTO         no parameters
GET_CURRENT_DC_AUTO         no parameters
GET_VOLTAGE_AC_AUTO          no parameters
GET_CURRENT_AC_AUTO         no parameters
GET_RESISTANCE_AUTO            no parameters
GET_4W_RESISTANCE_AUTO    no parameters
GET_FREQUENCY_AUTO       ...

Read more »