Commit cac4c932ce7afb23be1594d0931c0e08f56af197

Authored by bmarechal
1 parent a52533e359
Exists in master

add rude gatetime setup

Showing 1 changed file with 19 additions and 9 deletions Inline Diff

instruments/HP53132A.py
from abstract_instrument import abstract_instrument 1 1 from abstract_instrument import abstract_instrument
import socket 2 2 import socket
3 3
#============================================================================== 4 4 #==============================================================================
5 5
ALL_VAL_TYPE = ['FREQ'] #, 'PERIOD'] 6 6 ALL_VAL_TYPE = ['FREQ'] #, 'PERIOD']
ALL_CHANNELS = ['1'] #, '2'] 7 7 ALL_CHANNELS = ['1'] #, '2']
8 8
ADRESS = "192.168.0.52" 9 9 ADRESS = "192.168.0.52"
CONF_VAL_TYPE = ['CONF:FREQ'] #, 'CONF:PERIOD'] 10 10 CONF_VAL_TYPE = ['CONF:FREQ'] #, 'CONF:PERIOD']
11 11
#============================================================================== 12 12 #==============================================================================
13 13
class HP53132A(abstract_instrument): 14 14 class HP53132A(abstract_instrument):
def __init__(self, channels, vtypes, adress): 15 15 def __init__(self, channels, vtypes, adress):
self.adress = adress 16 16 self.adress = adress
self.port = 1234 17 17 self.port = 1234
self.gpib_addr = 12 18 18 self.gpib_addr = 12
self.channels = channels 19 19 self.channels = channels
self.vtypes = vtypes 20 20 self.vtypes = vtypes
21 21
def model(self): 22 22 def model(self):
#self.send("*IDN?") 23 23 #self.send("*IDN?")
#return self.read() 24 24 #return self.read()
return "HP53132A" 25 25 return "HP53132A"
26 26
def connect(self): 27 27 def connect(self):
print('Connecting to device @%s:%s...' %(self.adress, self.port)) 28 28 print('Connecting to device @%s:%s...' %(self.adress, self.port))
self.sock = socket.socket(socket.AF_INET, 29 29 self.sock = socket.socket(socket.AF_INET,
socket.SOCK_STREAM, 30 30 socket.SOCK_STREAM,
socket.IPPROTO_TCP) 31 31 socket.IPPROTO_TCP)
self.sock.settimeout(10.0) # Don't hang around forever 32 32 self.sock.settimeout(10.0) # Don't hang around forever
self.sock.connect((self.adress, self.port)) 33 33 self.sock.connect((self.adress, self.port))
self.init_prologix() 34 34 self.init_prologix()
print(' --> Ok') 35 35 print(' --> Ok')
print(self.model()) 36 36 print(self.model())
self.configure() 37 37 self.configure()
38 38
def configure(self): 39 39 def configure(self):
self.strCh = '' 40 40 #self.strCh = ''
for ch in self.channels: 41 41 #for ch in self.channels:
self.send('%s (@%s)'%(CONF_VAL_TYPE[ALL_VAL_TYPE.index(self.vtypes[self.channels.index(ch)])], ch)) 42 42 # self.send('%s (@%s)'%(CONF_VAL_TYPE[ALL_VAL_TYPE.index(self.vtypes[self.channels.index(ch)])], ch))
self.strCh = self.strCh + '(@%s),'%ch 43 43 # self.strCh = self.strCh + '(@%s),'%ch
self.strCh = self.strCh[0:-1] 44 44 #self.strCh = self.strCh[0:-1]
self.send('FORMAT ASCII') 45 45 #self.send('FORMAT ASCII')
46 46
#self.send('ROUT:SCAN (@%s)'%self.strCh) 47 47 #self.send('ROUT:SCAN (@%s)'%self.strCh)
#self.send('TRIG:COUN 1') 48 48 #self.send('TRIG:COUN 1')
self.send('*RST') 49 49 self.send('*RST')
self.send(":FUNC 'FREQ 1'") 50 50 #self.send('*CLS')
self.send(":ROSC:SOUR INT") 51 51 #self.send('*SRE 0')
self.send(":INIT:CONT ON") 52 52 #self.send('*ESE 0')
53 53
54 self.send(':FUNC "FREQ 1"')
55 self.send(':FREQ:ARM:STAR:SOUR IMM')
56 self.send(':FREQ:ARM:STOP:SOUR TIM')
57 self.send(':FREQ:ARM:STOP:TIM 1')
58 self.send(':ROSC:SOUR EXT')
59 self.send(':ROSC:EXT:CHECK OFF')
60 #self.send(':STAT:PRES')
61 self.send(':INIT:CONT ON')
62
def getValue(self): 54 63 def getValue(self):
self.send('FETC?') 55 64 self.send('FETC?')
65 #self.send('READ:FREQ?')
return self.read() 56 66 return self.read()
57 67
def read(self): 58 68 def read(self):
self.send("++read eoi") 59 69 self.send("++read eoi")
ans = '' 60 70 ans = ''
nb_data_list = [] 61 71 nb_data_list = []
nb_data = '' 62 72 nb_data = ''
try: 63 73 try:
while ans != '\n': 64 74 while ans != '\n':
ans = self.sock.recv(1) 65 75 ans = self.sock.recv(1)
nb_data_list.append(ans) # Return the number of data 66 76 nb_data_list.append(ans) # Return the number of data
list_size = len(nb_data_list) 67 77 list_size = len(nb_data_list)
for j in range (0, list_size): 68 78 for j in range (0, list_size):
nb_data = nb_data+nb_data_list[j] 69 79 nb_data = nb_data+nb_data_list[j]
return nb_data 70 80 return nb_data
except socket.timeout: 71 81 except socket.timeout:
print "Socket timeout error when reading." 72 82 print "Socket timeout error when reading."
raise 73 83 raise
74 84
def disconnect(self): 75 85 def disconnect(self):
self.send('*RST') 76 86 self.send('*RST')
self.sock.close() 77 87 self.sock.close()
78 88
def send(self, command): 79 89 def send(self, command):
self.sock.send("%s\n"%command) 80 90 self.sock.send("%s\n"%command)
81 91
def init_prologix(self): 82 92 def init_prologix(self):
try: 83 93 try:
self.sock.send("++mode 1\n") # Set mode as CONTROLLER 84 94 self.sock.send("++mode 1\n") # Set mode as CONTROLLER
self.sock.send('++addr ' + str(self.gpib_addr) + '\n') # Set the GPIB address 85 95 self.sock.send('++addr ' + str(self.gpib_addr) + '\n') # Set the GPIB address
self.sock.send('++eos 3\n') # Set end-of-send character to nothing 86 96 self.sock.send('++eos 3\n') # Set end-of-send character to nothing
self.sock.send("++eoi 1\n") # Assert EOI with last byte to indicate end 87 97 self.sock.send("++eoi 1\n") # Assert EOI with last byte to indicate end
self.sock.send("++read_tmo_ms 2750\n") # Set read timeout 88 98 self.sock.send("++read_tmo_ms 2750\n") # Set read timeout
self.sock.send("++auto 0\n") # Turn off read-after-write to avoid 89 99 self.sock.send("++auto 0\n") # Turn off read-after-write to avoid
# "Query Unterminated" errors 90 100 # "Query Unterminated" errors
91 101
except self.socket.timeout: 92 102 except self.socket.timeout:
print "Socket timeout" 93 103 print "Socket timeout"
raise 94 104 raise