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
|
"""
provide basic class to operate SCPI capable instruments
"""
import re
def response2numStr(strIn, firstSeparator=None, unit=None):
# Often an instrument reply is in the form 'TDIV 2.00E-08S' (for example Siglent Scope)
# i.e. "<prefix><firstSeparator><numberString><unit>
# prefix='TDIV', firstSeparator=' ', numberString='2.00E-08', unit='S'
# this function parses the reply
if firstSeparator is None or firstSeparator == '':
return (strIn, None, None)
spltStr = re.split(firstSeparator, strIn)
prefix = spltStr[0]
rstr = spltStr[1]
if unit is not None and unit != '':
spltStr = re.split(unit, rstr)
numberString = spltStr[0]
unit = spltStr[1]
else:
numberString = rstr
return (prefix, numberString, unit)
class SCPIinstr:
""" Basic class which support SCPI commands """
"""
Do not instantiate directly, use
rm = pyvisa.ResourceManager()
SCPIinstr(rm.open_resource('TCPIP::192.168.0.2::INSTR'))
"""
def __init__(self, resource):
self.resource = resource
# convenience pyvisa functions
self.write = self.resource.write
self.read = self.resource.read
self.query = self.resource.query
self.read_bytes = self.resource.read_bytes
self.read_binary_values = self.resource.read_binary_values
self.query_binary_values = self.resource.query_binary_values
@property
def idn(self):
return self.query("*IDN?")
def clear_status(self):
self.write("*CLS")
def set_event_status_enable(self):
self.write("*ESE")
def query_event_status_enable(self):
return self.query("*ESE?")
def query_event_status_register(self):
return self.query("*ESR?")
def set_wait_until_finished(self):
self.write("*OPC")
def wait_until_finished(self):
return self.query("*OPC?")
def reset(self):
self.write("*RST")
def set_service_request_enable(self):
self.write("*SRE")
def query_service_request_enable(self):
return self.query("*SRE?")
def query_status_byte(self):
return self.query("*STB?")
def self_test_result(self):
return self.query("*TST?")
def wait(self):
self.write("*WAI")
|