-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathriden_monitor.py
94 lines (77 loc) · 2.81 KB
/
riden_monitor.py
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
import time
import instrument_logger
from threading import Thread
from riden import Riden
class RidenMonitor(instrument_logger.Instrument):
def __init__(self, port: str = None, rd60xx: Riden = None) -> None:
if (rd60xx is not None):
self._rd = rd60xx
elif (port is not None):
self._rd = Riden(port)
else:
raise ValueError('Either a port or RD606 instance must be provided')
self._voltage = ''
self._current = ''
self._measvoltage = ''
self._meascurrent = ''
self._measpower = ''
self._meastemp_external = ''
self._started = False
self._isValid = False
@property
def name(self) -> str:
"""Required by Instrument"""
return 'rd6018'
@property
def allmeasurements(self) -> 'dict':
"""Required by Instrument"""
all_meas = {}
for param in self.parameters:
all_meas[param] = self.getmeasurement(param)
return all_meas
@property
def parameters(self) -> 'list[str]':
"""Required by Instrument"""
return [
self.name + '.Voltage Setting.V',
self.name + '.Current Setting.A',
self.name + '.Voltage Output.V',
self.name + '.Current Output.A',
self.name + '.Power Output.W',
self.name + '.External Temperature.C'
]
def getmeasurement(self, name: str) -> str:
"""Required by Instrument"""
if (name == self.name + '.Voltage Setting.V'):
return str(self._voltage)
if (name == self.name + '.Current Setting.A'):
return str(self._current)
if (name == self.name + '.Voltage Output.V'):
return str(self._measvoltage)
if (name == self.name + '.Current Output.A'):
return str(self._meascurrent)
if (name == self.name + '.Power Output.W'):
return str(self._measpower)
if (name == self.name + '.External Temperature.C'):
return str(self._meastemp_external)
@property
def isValid(self) -> 'str':
return self._isValid
def _riden_poller(self):
while self._started:
self._rd.update()
self._voltage = str(self._rd.voltage_set)
self._current = str(self._rd.current_set)
self._measvoltage = str(self._rd.voltage)
self._meascurrent = str(self._rd.current)
self._measpower = str(self._rd.power)
self._meastemp_external = str(self._rd.ext_temp_c)
self._isValid = True
time.sleep(0.25)
def start(self):
self._started = True
rx = Thread(target=self._riden_poller)
rx.daemon = True
rx.start()
def stop(self):
self._started = False