Commit bb3889092e0d7ebbd1f8b26342429def41df0a56

Authored by mer0m
Committed by GitHub
1 parent 97c7affa24
Exists in master

Add files via upload

Showing 1 changed file with 194 additions and 0 deletions Inline Diff

File was created 1 #!/usr/bin/env python
2
3 # -*- coding: utf-8 -*-
4
5 import time, os, instruments, inspect, sys, threading
6 import PyQt4.QtGui as QtGui
7 from PyQt4.QtCore import pyqtSlot
8
9 #==============================================================================
10 #==============================================================================
11
12 class acq_routine():
13 def __init__(self, instrument, channels, vtypes, adress, path = os.getcwd(), samplingtime = 1, fileduration = 24*3600):
14 exec('self.instrument = instruments.%s.%s(%s, %s, "%s")'%(instrument, instrument, channels, vtypes, adress))
15 self.path = path
16 self.samplingtime = samplingtime
17 self.fileduration = fileduration
18
19 def makeTree(self):
20 try:
21 year = time.strftime("%Y", time.gmtime(self.t0))
22 month = time.strftime("%Y-%m", time.gmtime(self.t0))
23 os.chdir(self.path + '/' + year + '/' + month)
24 except:
25 try:
26 os.chdir(self.path + '/' + year)
27 os.mkdir(month)
28 os.chdir(self.path + '/' + year + '/' + month)
29 except:
30 os.chdir(self.path)
31 os.mkdir(year)
32 os.chdir(self.path + '/' + year)
33 os.mkdir(month)
34 os.chdir(self.path + '/' + year + '/' + month)
35
36 def connect(self):
37 self.instrument.connect()
38
39 self.t0 = time.time()
40 self.filename = time.strftime("%Y%m%d-%H%M%S", time.gmtime(self.t0)) + '-' + self.instrument.model() + '.dat'
41 self.makeTree()
42 self.data_file = open(self.filename, 'wr', 0)
43
44 def start(self):
45 tic = time.time()
46
47 if (time.time() - self.t0 >= self.fileduration) & (self.fileduration >0 ):
48 self.data_file.close()
49
50 self.t0 = time.time()
51 self.filename = time.strftime("%Y%m%d-%H%M%S", time.gmtime(self.t0)) + '-' + self.instrument.model() + '.dat'
52 self.makeTree()
53 self.data_file = open(self.filename, 'wr', 0)
54
55 #epoch time
56 epoch = time.time()
57 #MJD time
58 mjd = epoch / 86400.0 + 40587
59 # Meas values
60 meas = self.instrument.getValue()
61 meas = meas.replace(",", "\t")
62 meas = meas.replace(";", "\t")
63 meas = meas.replace("+", "")
64
65 string = "%f\t%f\t%s" % (epoch, mjd, meas)
66 self.data_file.write(string) # Write in a file
67 print(string)
68
69 self.thread = threading.Timer(self.samplingtime - (time.time() - tic), self.start)
70 self.thread.start()
71
72 def stop(self):
73 self.thread.cancel()
74 self.instrument.disconnect()
75 self.data_file.close()
76
77 #==============================================================================
78 #==============================================================================
79
80 class mainGui():
81 def __init__(self):
82 self.setWindow()
83 self.setSignalsSlots()
84 self.runApp()
85
86 def setWindow(self):
87 self.a = QtGui.QApplication(sys.argv)
88 self.w = QtGui.QMainWindow()
89 self.w.resize(640, 480)
90 self.w.setWindowTitle('datalogger-gui')
91
92 self.wid = QtGui.QWidget()
93 self.w.setCentralWidget(self.wid)
94 self.layout = QtGui.QGridLayout()
95 self.wid.setLayout(self.layout)
96
97 self.comboInst = QtGui.QComboBox()
98 self.layout.addWidget(self.comboInst, 0, 0)
99
100 self.adress = QtGui.QLineEdit()
101 self.adress.setMaximumWidth(120)
102 self.layout.addWidget(self.adress, 99, 0)
103
104 self.startButton = QtGui.QPushButton()
105 self.startButton.setText('Start log')
106 self.layout.addWidget(self.startButton, 99, 1)
107
108 self.stopButton = QtGui.QPushButton()
109 self.stopButton.setText('Stop log')
110 self.layout.addWidget(self.stopButton, 99, 2)
111
112 self.textDisplay = QtGui.QLabel()
113 self.textDisplay.setText('>>')
114 self.layout.addWidget(self.textDisplay, 100, 2)
115
116 self.setComboInst()
117 self.updateSignal()
118
119 def setComboInst(self):
120 for name, obj in inspect.getmembers(instruments):
121 if inspect.ismodule(obj) and name.startswith('__') == False and name.startswith('abstract') == False:
122 self.comboInst.addItem(name)
123
124 def setSignalsSlots(self):
125 self.comboInst.currentIndexChanged.connect(self.updateSignal)
126 self.startButton.clicked.connect(self.startLog)
127 self.stopButton.clicked.connect(self.stopLog)
128
129 def runApp(self):
130 self.w.show()
131 sys.exit(self.a.exec_())
132
133 @pyqtSlot()
134 def updateSignal(self):
135 for i in reversed(range(5, self.layout.count())):
136 self.layout.itemAt(i).widget().setParent(None)
137
138 defaultAdress = ''
139 channelsAviables = []
140 vtypesAviables = []
141
142 exec('channelsAviables = instruments.%s.ALL_CHANNELS'%self.comboInst.currentText())
143 exec('vtypesAviables = instruments.%s.ALL_VAL_TYPE'%self.comboInst.currentText())
144 exec('defaultAdress = instruments.%s.ADRESS'%self.comboInst.currentText())
145
146 self.adress.setText(defaultAdress)
147
148 self.checkBoxChannels = [None]*len(channelsAviables)
149 self.chListVtypes = [None]*len(self.checkBoxChannels)
150
151 for i in range(len(self.checkBoxChannels)):
152 self.checkBoxChannels[i] = QtGui.QCheckBox()
153 self.checkBoxChannels[i].setText(channelsAviables[i])