aboutsummaryrefslogtreecommitdiff
path: root/qolab/hardware/lockin/srs_sr865a.py
blob: 3d3ebfcc9780997567fd713ca9ad4062ec7e6d07 (plain)
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
39
40
41
42
43
44
45
46
47
48
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
from qolab.hardware.basic import BasicInstrument
from qolab.hardware.lockin import LockinSCPI

class SRS_SR865A(LockinSCPI):
    """ SRS SR865A lockin """
    def __init__(self, resource, *args, **kwds):
        super().__init__(resource, *args, **kwds)
        self.config['Device model']='SRS SR865A'
        self.resource.read_termination='\n'
        self.deviceProperties.extend(['TimeBaseMode'])

    @BasicInstrument.tsdb_append
    def getFreqInt(self):
        qstr = f'FreqInt?'
        rstr = self.query(qstr)
        return(float(rstr))

    @BasicInstrument.tsdb_append
    def setFreqInt(self, freq):
        cstr = f'FreqInt {freq}'
        rstr = self.write(cstr)

    # this one has only getter
    @BasicInstrument.tsdb_append
    def getFreqExt(self):
        qstr = f'FreqExt?'
        rstr = self.query(qstr)
        return(float(rstr))

    @BasicInstrument.tsdb_append
    def getHarm(self):
        qstr = f'Harm?'
        rstr = self.query(qstr)
        return(int(rstr))

    @BasicInstrument.tsdb_append
    def setHarm(self, harm):
        cstr = f'Harm {harm}'
        rstr = self.write(cstr)

    @BasicInstrument.tsdb_append
    def getSinAmpl(self):
        qstr = f'SLVL?'
        rstr = self.query(qstr)
        return(float(rstr))

    @BasicInstrument.tsdb_append
    def setSinAmpl(self, ampl):
        cstr = f'SLVL {ampl}'
        rstr = self.write(cstr)

    @BasicInstrument.tsdb_append
    def getSinOffset(self):
        qstr = f'SOFF?'
        rstr = self.query(qstr)
        return(float(rstr))

    @BasicInstrument.tsdb_append
    def setSinOffset(self, offset):
        cstr = f'SOFF {offset}'
        rstr = self.write(cstr)

    @BasicInstrument.tsdb_append
    def getSensetivity(self):
        return(int(self.query(f'SCAL?')))

    @BasicInstrument.tsdb_append
    def setSensetivity(self, val):
        rstr = self.write(f'SCAL {val}')

    @BasicInstrument.tsdb_append
    def getTimeConstan(self):
        return(int(self.query(f'OFLT?')))

    @BasicInstrument.tsdb_append
    def setTimeConstan(self, val):
        rstr = self.write(f'OFLT {val}')

    @BasicInstrument.tsdb_append
    def getFilterSlope(self):
        return(int(self.query(f'OFSL?')))

    @BasicInstrument.tsdb_append
    def setFilterSlope(self, val):
        rstr = self.write(f'OFSL {val}')

    # this one has only getter
    @BasicInstrument.tsdb_append
    def getEquivalentFileterBW(self):
        return(float(self.query(f'ENBW?')))

    @BasicInstrument.tsdb_append
    def getTimeBaseMode(self):
        return(int(self.query(f'TBMODE?')))

    @BasicInstrument.tsdb_append
    def setTimeBaseMode(self, val):
        rstr = self.write(f'TBMODE {val}')

    @BasicInstrument.tsdb_append
    def getRefPhase(self):
        return(float(self.query(f'PHAS?')))

    @BasicInstrument.tsdb_append
    def setRefPhase(self, val):
        rstr = self.write(f'PHAS {val}')

if __name__ == '__main__': 
    import pyvisa
    print("testing")
    rm = pyvisa.ResourceManager()
    print(rm.list_resources())    
    instr=rm.open_resource('TCPIP::192.168.0.51::INSTR')
    lockin = SRS_SR865A(instr)
    print('------ Header start -------------')
    print(str.join('\n', lockin.getHeader()))
    print('------ Header ends  -------------')