Commit cac4c932ce7afb23be1594d0931c0e08f56af197
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 |