Blame view

instruments/AG34972A.py 2.34 KB
91efd0ebc   mer0m   Add files via upload
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  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']
  
  ADRESS = "192.168.0.72"
  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):
      def __init__(self, channels, vtypes, adress):
          self.adress = adress
          self.port = 5025
4e424a66a   bmarechal   -
18
          self.channels = channels
91efd0ebc   mer0m   Add files via upload
19
20
21
22
23
          self.vtypes = vtypes
  
      def model(self):
          #self.send("*IDN?")
          #return self.read()
4e424a66a   bmarechal   -
24
          return "AG34972A"
91efd0ebc   mer0m   Add files via upload
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  
      def connect(self):
          print('Connecting to device @%s:%s...' %(self.adress, self.port))
          self.sock = socket.socket(socket.AF_INET,
                               socket.SOCK_STREAM,
                               socket.IPPROTO_TCP)
          self.sock.settimeout(2.0)    # Don't hang around forever
          self.sock.connect((self.adress, self.port))
          self.send("SYST:BEEP")
          print('  --> Ok')
          print(self.model())
          self.configure()
  
      def configure(self):
          self.strCh = ''
4e424a66a   bmarechal   -
40
          for ch in self.channels:
91efd0ebc   mer0m   Add files via upload
41
              self.send('%s (@%s)'%(CONF_VAL_TYPE[ALL_VAL_TYPE.index(self.vtypes[self.channels.index(ch)])], ch))
4e424a66a   bmarechal   -
42
43
44
45
              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
46
47
48
  
      def getValue(self):
          self.send("INIT")
4e424a66a   bmarechal   -
49
          self.send("FETC?")
91efd0ebc   mer0m   Add files via upload
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
75
          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)