from numarray import *
try:
from gpib82357A import *
print "Module gpib82357A Found!"
except:
print "No Module gpib82357A installed!"
Ko=1024
LENGTH=8*Ko
class HP54111D:
def __init__(self,name="GPIB0::3::INSTR"):
self.GPIB=gpib82357A(name)
self.YINC=".0"
self.XINC=".0"
self.XREF=".0"
self.YREF="128"
self.XORG=".0"
self.Y1ORG=".0"
self.Y2ORG=".0"
self.POINTS="8192"
self.XDIV ="100E-3"
self.Y1DIV="1.0"
self.Y2DIV="1.0"
# system command
#*****************
def Reset(self): # preset s to its default settings
self.GPIB.write("RESET\n")
def Stop(self): # stops acquire
self.GPIB.write("KEY 42\n")
def Run(self): # runs acquire
self.GPIB.write("RUN\n")
def SetLocal(self): # sets instrument in local mode
self.GPIB.write("LOCAL\n")
def Autoscale(self):
self.GPIB.write("AUTOSCALE\n")
def View(self,str) : # '1' to '4'
if (str>'0') and (str<'5'):
msg = "VIEW CH %s\n" %(str)
self.GPIB.write(msg)
st=self.GPIB.read()
return st
else:
return "error channel"
def GetStatus(self) :
self.GPIB.write("STA?\n")
st=self.GPIB.read()
return st
def IsStopped(self) :
self.GPIB.write("KEY?\n")
i=int (self.GPIB.read()) # 42 stop/single 0 no key
if ( (i == 42) or (i ==0 ) ):
return 1
else:
return -1
def GetID(self) :
self.GPIB.write("ID?\n")
st=self.GPIB.read()
return st
#channel subsystem
#*****************
def GetSensitivity(self,str) : # '1' to '4'
if (str=='1'):
return self.Y1DIV
else:
return self.Y2DIV
def SetSensitivity(self, ch, str) : # '1' "0.01"
if (ch>'0') and (ch<'5'):
msg = "CH %s SENS %s\n" %(ch, str)
self.GPIB.write(msg)
st=self.GPIB.read()
return st
else:
return "error channel"
def GetOffset(self,str):
if (str>'0') and (str<'5'):
msg = "CH %s OFFS?\n" %(str)
self.GPIB.write(msg)
st=self.GPIB.read()
return st
else:
return "error channel"
def SetOffset(self, ch, str):
if (ch>'0') and (ch<'5'):
msg = "CH %s OFFS %s\n" %(ch, str)
self.GPIB.write(msg)
st=self.GPIB.read()
return st
else:
return "error channel"
# Timbase subsystem
#*****************
def GetTimebase(self):
return self.XDIV
def SetTimebase(self,str):
msg = "TIM SENS %s\n" %(str)
self.GPIB.write(msg)
st=self.GPIB.read()
return st
def GetDelay(self):
self.GPIB.write("TIM DEL?\n")
st=self.GPIB.read()
return st
def SetDelay(self, str):
msg = "TIM DEL %s\n" %(str)
self.GPIB.write(msg)
st=self.GPIB.read()
return st
def GetReference(self):
self.GPIB.write("TIM REF?\n")
st=self.GPIB.read()
return st
def SetReference(self, str): # 'LEFT' 'CENTER' 'RIGHT'
msg = "TIM REF %s\n" %(str)
self.GPIB.write(msg)
st=self.GPIB.read()
return st
# Waveform subsystem
#*****************
def GetXref(self): #0
#self.GPIB.write("WAV XREFERENCE?\n")
#st=self.GPIB.read()
return self.XREF
return st
def GetYref(self): #128
#self.GPIB.write("WAV YREFERENCE?\n")
#st=self.GPIB.read()
return self.YREF
return st
def GetXinc(self): #real 10ps to 20ms
#self.GPIB.write("XINCREMENT?\n")
#st=self.GPIB.read()
return self.XINC
return st
def GetYinc(self): #real
#self.GPIB.write("WAV YINCREMENT?\n")
#st=self.GPIB.read()
return self.YINC
return st
def GetYorg(self,str): #real
#self.GPIB.write("WAV YORIGIN?\n")
#st=self.GPIB.read()
return self.YORG1
return st
def GetXorg(self): #real
#self.GPIB.write("WAV XORIGIN?\n")
#st=self.GPIB.read()
return self.XORG
return st
def WaveForm (self):
self.GPIB.write("WAV?\n")
st=self.GPIB.read()
return st
def GetPreamble (self):
self.GPIB.write("WAV SRC MEM1 PRE?\n")
st=self.GPIB.read()
pos=st.find(',')+1
st=st[pos:]
pos=st.find(',')+1
st=st[pos:]
pos=st.find(',')
self.POINTS=st[:pos]
st=st[pos+1:]
pos=st.find(',')+1
st=st[pos:]
pos=st.find(',')
self.XINC=st[:pos]
st=st[pos+1:]
pos=st.find(',')
self.XORG=st[:pos]
st=st[pos+1:]
pos=st.find(',')
self.XREF=st[:pos]
st=st[pos+1:]
pos=st.find(',')
self.YINC=st[:pos]
st=st[pos+1:]
pos=st.find(',')
self.YORG1=self.YORG2=st[:pos]
st=st[pos+1:]
pos=st.find(',')
self.YREF=st[:pos]
st=st[pos+1:]
self.GPIB.write("CH 1 SENS?\n")
self.Y1DIV=self.GPIB.read()
self.GPIB.write("CH 2 SENS?\n")
self.Y2DIV=self.GPIB.read()
self.GPIB.write("TIM SENS?\n")
self.XDIV=self.GPIB.read()
return st
def GetCoupling(self):
self.GPIB.write("WAV COUPLING?\n")
st=self.GPIB.read()
return st
def SetCoupling(self): # 'DC' 'AC' 'GND'
msg = "WAV COUPLING %s\n" %(str)
self.GPIB.write(msg)
st=self.GPIB.read()
return st
def GetValid(self): #0
self.GPIB.write("WAV VALID?\n")
st=self.GPIB.read()
return st
def GetData(self,str,len=8*Ko):
msg = "WAV SRC MEM%s FORMAT BYTE\n" %(str)
self.GPIB.write(msg)
self.GPIB.write("DATA?\n")
self.GPIB.readbyte(4)
#print "#2A + len (2bytes)"
YP=self.GPIB.readbyte(len) #data
data= zeros (len, Float)
y1div=float(self.GetSensitivity('1'))
y2div=float(self.GetSensitivity('2'))
yref=float(self.YREF)
yinc=float(self.YINC)
yorg=float(self.GetYorg(str))
if (str=='1'):
for XP in range (0,len,1):
data[XP]= ( (ord(YP[XP]) - yref)*yinc + yorg )
else:
for XP in range (0,len,1):
data[XP]= ( (ord(YP[XP]) - yref)*yinc + yorg ) * y1div/ y2div
return data
# Acquire subsystem
#*****************
def Acquire (self,str):
msg='ACQ '+str+'\n'
self.GPIB.write(msg)
st=self.GPIB.read()
return st
def Digitize(self,str):
msg = "DIG %s\n" %(str)
self.GPIB.write(msg)
def GetPoints(self): #integer 501 or 8192
self.GPIB.write("ACQ POINTS?\n")
st=self.GPIB.read()
try:
test=int(st)
except:
return "No acquisition made!\nFirst Acquire Data"
return st
def GetResolution(self): #integer OFF 6 7 or 8
self.GPIB.write("ACQ RESO?\n")
st=self.GPIB.read()
try:
test=int(st)
except:
return "No acquisition made!\nFirst Acquire Data"
return st
def SetResolution(self, str): # '6' '7' '8' or 'OFF'
msg = "ACQ RESO %s\n" %(str)
self.GPIB.write(msg)
# HardCopy subsystem
#*****************
def Hardcopy(self,str="plot.hpgl"):
pass
def close(self):
self.GPIB.close()