Blame view

instruments/AG34972A.py 2.34 KB
91efd0ebc   mer0m   Add files via upload
1
2
3
4
5
6
7
  from abstract_instrument import abstract_instrument
  import socket
  
  #==============================================================================
  
  ALL_VAL_TYPE = ['DCV', 'ACV', 'DCI', 'ACI', 'RES2W', 'RES4W', 'FREQ']
  ALL_CHANNELS = ['101', '102', '103', '104', '105']
9058343c5   bmarechal   some minor fixes
8
  ADDRESS = "192.168.0.72"
91efd0ebc   mer0m   Add files via upload
9
10
11
12
13
  CONF_VAL_TYPE = ['CONF:VOLT:DC', 'CONF:VOLT:AC', 'CONF:CURR:DC', 'CONF:CURR:AC', 'CONF:RES', 'CONF:FRES', 'CONF:FREQ']
  
  #==============================================================================
  
  class AG34972A(abstract_instrument):
9058343c5   bmarechal   some minor fixes
14
15
      def __init__(self, channels, vtypes, address):
          self.address = address
91efd0ebc   mer0m   Add files via upload
16
          self.port = 5025
4e424a66a   bmarechal   -
17
          self.channels = channels
91efd0ebc   mer0m   Add files via upload
18
19
20
21
22
          self.vtypes = vtypes
  
      def model(self):
          #self.send("*IDN?")
          #return self.read()
4e424a66a   bmarechal   -
23
          return "AG34972A"
91efd0ebc   mer0m   Add files via upload
24
25
  
      def connect(self):
9058343c5   bmarechal   some minor fixes
26
          print('Connecting to device @%s:%s...' %(self.address, self.port))
91efd0ebc   mer0m   Add files via upload
27
28
29
30
          self.sock = socket.socket(socket.AF_INET,
                               socket.SOCK_STREAM,
                               socket.IPPROTO_TCP)
          self.sock.settimeout(2.0)    # Don't hang around forever
9058343c5   bmarechal   some minor fixes
31
          self.sock.connect((self.address, self.port))
91efd0ebc   mer0m   Add files via upload
32
33
34
35
36
37
38
          self.send("SYST:BEEP")
          print('  --> Ok')
          print(self.model())
          self.configure()
  
      def configure(self):
          self.strCh = ''
4e424a66a   bmarechal   -
39
          for ch in self.channels:
91efd0ebc   mer0m   Add files via upload
40
              self.send('%s (@%s)'%(CONF_VAL_TYPE[ALL_VAL_TYPE.index(self.vtypes[self.channels.index(ch)])], ch))
4e424a66a   bmarechal   -
41
42
43
44
              self.strCh = self.strCh + ch + ','
          self.strCh = self.strCh[0:-1]
          self.send("ROUT:SCAN (@%s)"%self.strCh)
          self.send("TRIG:COUN 1")
91efd0ebc   mer0m   Add files via upload
45
46
47
  
      def getValue(self):
          self.send("INIT")
4e424a66a   bmarechal   -
48
          self.send("FETC?")
91efd0ebc   mer0m   Add files via upload
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
          return self.read()
  
      def read(self):
          ans = ''
          nb_data_list = []
          nb_data = ''
          try:
              while ans != '
  ':
                  ans = self.sock.recv(1)
                  nb_data_list.append(ans) # Return the number of data
              list_size = len(nb_data_list)
              for j in range (0, list_size):
                  nb_data = nb_data+nb_data_list[j]
              return nb_data
          except socket.timeout:
              print "Socket timeout error when reading."
              raise
  
      def disconnect(self):
          self.send('*RST')
          self.sock.close()
  
      def send(self, command):
          self.sock.send("%s
  "%command)