Blame view

instruments/AG53230A.py 2.53 KB
c3e162c11   bmarechal   add AG53230A freq...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  from abstract_instrument import abstract_instrument
  import socket
  
  #==============================================================================
  
  ALL_VAL_TYPE = ['FREQ']
  ALL_CHANNELS = ['1']
  
  ADDRESS = "192.168.0.74"
  CONF_VAL_TYPE = ['CONF:FREQ']
  
  #==============================================================================
  
  class AG53230A(abstract_instrument):
      def __init__(self, channels, vtypes, address):
          self.address = address
          self.port = 5025
          self.channels = channels
          self.vtypes = vtypes
  
      def model(self):
          #self.send("*IDN?")
          #return self.read()
          return "AG53230A"
  
      def connect(self):
          print('Connecting to device @%s:%s...' %(self.address, self.port))
          self.sock = socket.socket(socket.AF_INET,
                               socket.SOCK_STREAM,
                               socket.IPPROTO_TCP)
          self.sock.settimeout(10.0)    # Don't hang around forever
          self.sock.connect((self.address, self.port))
          self.send("SYST:BEEP")
          print('  --> Ok')
          print(self.model())
          self.configure()
  
      def configure(self):
bd700e004   bmarechal   instruments/AG532...
39
40
41
42
43
44
45
          self.send('*RST')
          self.send('DISP:DIG:MASK:AUTO OFF')
          self.send('INP1:IMP 50')
          self.send('INP1:COUP AC')
          self.send('SYST:TIM INF')
          self.send('SENS:ROSC:SOUR EXT')
          self.send('SENS:ROSC:EXT:FREQ 10E6')
c3e162c11   bmarechal   add AG53230A freq...
46
47
          for ch in self.channels:
              self.send(CONF_VAL_TYPE[ALL_VAL_TYPE.index(self.vtypes[self.channels.index(ch)])])
bd700e004   bmarechal   instruments/AG532...
48
49
50
51
52
          self.send('SAMP:COUN 1E6')
          self.send('SENS:FREQ:MODE CONT')
          self.send('SENS:FREQ:GATE:SOUR TIME')
          self.send('1')
          self.send('TRIG:SOUR IMM')
c3e162c11   bmarechal   add AG53230A freq...
53
54
55
56
  
      def getValue(self):
          mes = ''
          for ch in self.channels:
bd700e004   bmarechal   instruments/AG532...
57
              self.send("DATA:REM?")
c3e162c11   bmarechal   add AG53230A freq...
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
              mesTemp = self.read()
              mes = mes + '\t' + mesTemp
          return mes
  
      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.send("SYST:BEEP")
          self.sock.close()
  
      def send(self, command):
          self.sock.send("%s
  "%command)