Index - Agilent 34401A RS2322021-02-25
I had need to poll data from an Agilent 34401A Digital Multimeter, so I wrote this quick Python3 script to do so. It requires pyserial.
import serial import time ser = serial.Serial('COM4', 9600, parity=serial.PARITY_EVEN, bytesize=7, stopbits=2) print("Sending IDN command") ser.write(b'*IDN?\n') print("Response:") print(ser.readline()) time.sleep(1) print("Putting DVM in remote mode") ser.write(b'SYST:REM\n') print("DC measurements:") while True: time.sleep(1) ser.write(b':meas:volt:dc?\n') dc = float(ser.readline()) print("%.5f" % dc)
Sending IDN command Response: b'HEWLETT-PACKARD,34401A,0,11-5-2\r\n' Putting DVM in remote mode DC measurements: -0.00002 -0.00002 -0.00004 -0.00003
The '*IDN?' command is an identity request. Then the 'SYST:REM' command puts the device into remote mode. ':meas:volt:dc?' requests the current DC measurement. We poll this once a second and output to the screen formatted to 5 decimal places.
When testing via putty note that you need to use Ctrl-J to send line-feed only after each command.
I'm not sure if the serial settings are the defaults for the device. To connect to a PC you must use a null-modem cable. I used a regular DB9 serial cable, a null-modem adaptor and a gender changer.