modified TiN's script to read data from 3458 which is on his web site
https://xdevs.com/guide/ni_gpib_rpi/#setupNow my reference will be k2002 measurements instead of fixed ref value. Of course if i had fluke 732A i could rely on single measurement, but my 10V source looks not that stable.
# xDevs.com Python 10V test for 3458A
# https://xdevs.com/guide/ni_gpib_rpi/
# https://xdevs.com/article/hp3458a_gpib/
# https://xdevs.com/fix/hp3458a/
import sys
import Gpib
import time
inst = Gpib.Gpib(0,22, timeout=60) # 3458A GPIB Address = 3
k2002 = Gpib.Gpib(0,7, timeout=60)
inst.clear()
k2002.clear()
#Setup HP 3458A
inst.write("PRESET NORM")
inst.write("OFORMAT ASCII")
inst.write("DCV 10")
inst.write("TARM HOLD")
inst.write("TRIG AUTO")
inst.write("NPLC 200")
inst.write("AZERO ON")
inst.write("LFILTER ON")
inst.write("NRDGS 1,AUTO")
inst.write("MEM OFF")
inst.write("END ALWAYS")
inst.write("NDIG 9")
#setup k2002
k2002.write("PRESET NORM")
k2002.write("OFORMAT ASCII")
k2002.write("DCV 20")
k2002.write("TARM HOLD")
k2002.write("TRIG AUTO")
k2002.write("NPLC 200")
k2002.write("AZERO ON")
k2002.write("LFILTER ON")
k2002.write("NRDGS 1,AUTO")
k2002.write("MEM OFF")
k2002.write("END ALWAYS")
k2002.write("NDIG 9")
cnt = 0
tread = 2
temp = 38.5
inst.write("TEMP?")
k2002.write("TEMP?")
temp = float(inst.read())
temp2002=float(k2002.read())
ppm = 0
with open('10v_3458_nplc200_mm.csv', 'a') as o:
o.write("date;hp3458a;temp;k2002,temp2002;ppm_level;\r\n")
o.close()
while cnt <= 10000000:
cnt+=1
with open('10v_3458_nplc200_mm.csv', 'a') as o:
tread = tread - 1
if (tread == 0):
tread = 20
inst.write("TARM SGL,1")
k2002.write("TARM SGL,1")
inst.write("TEMP?")
temp = inst.read()
k2002.write("TEMP?")
temp2002 = k2002.read()
inst.write("TARM SGL,1")
data = inst.read()
k2002.write("TARM SGL,1")
data2002 = k2002.read()
ppm = ((float(data) / float(data2002))-1)*1E6
inst.write("DISP OFF, \"%3.3f ppm\"" % float(ppm))
time.sleep(1)
print time.strftime("%m/%d/%Y-%H:%M:%S;") + ("[%8d]:3458A %2.8f ,k2002 %2.8f, dev %4.4f ppm, T:%3.1f, T2002:%3.1f" % (cnt, float(data), float(data2002), float(ppm), float(temp), float(temp2002) ) )
o.write (time.strftime("%m/%d/%Y-%H:%M:%S;") + ("%16.8f;%3.1f;%16.8f;%3.1f;%4.3f;\r\n" % (float(data),float(temp),float(data2002),float(temp2002),float(ppm) ) ))
o.close()