-
Notifications
You must be signed in to change notification settings - Fork 0
/
thread_test.py
111 lines (88 loc) · 3.08 KB
/
thread_test.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import settings
import PIStage
import spectrometer_client
from spectrumthreads import *
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QTextEdit
from PyQt5.QtGui import QTextCursor
import numpy as np
import time
class Test(QMainWindow):
def __init__(self):
super(Test, self).__init__()
self.initUI()
self.settings = settings.Settings()
self.spectrometer = spectrometer_client.SpectrometerClient()
self.stage = PIStage.E545(self.settings.stage_ip, self.settings.stage_port)
#self.stage = PIStage.Dummy()
self.n = 0
self.startThread()
def initUI(self):
self.textEdit = QTextEdit(self)
self.textEdit.setFocus()
self.textEdit.setReadOnly(True)
self.textEdit.setLineWrapMode(QTextEdit.NoWrap)
self.font = self.textEdit.font()
self.font.setFamily("Courier")
self.font.setPointSize(10)
self.resize(700, 800)
self.setWindowTitle('Test')
self.setCentralWidget(self.textEdit)
self.show()
self.addText("BLA\n")
def startThread(self):
#positions = np.array([[10, 10], [15, 15]])
#self.workingthread = ScanMeanThread(self.spectrometer, self.settings, positions, self.stage)
self.workingthread = LockinThread(self.spectrometer, self.settings, self.stage)
self.workingthread.finishSignal.connect(self.finishedCallback)
#self.workingthread.saveSignal.connect(self.saveCallback)
self.workingthread.specSignal.connect(self.specCallback)
self.workingthread.progressSignal.connect(self.progressCallback)
self.workingthread.start()
def addText(self, text):
self.textEdit.moveCursor(QTextCursor.End)
self.textEdit.setCurrentFont(self.font)
#self.textEdit.setTextColor(color)
self.textEdit.insertPlainText(text)
sb = self.textEdit.verticalScrollBar()
sb.setValue(sb.maximum())
@pyqtSlot(np.ndarray)
def finishedCallback(self, pos):
self.addText("Thread finished\n")
self.addText(str(pos)+"\n")
try:
self.workingthread.stop()
self.workingthread = None
except Exception as e:
print(e)
self.n += 1
if self.n < 2:
time.sleep(0.3)
self.startThread()
@pyqtSlot(np.ndarray, str, np.ndarray, bool, bool)
def saveCallback(self, spec, filename, pos, lockin, fullPath):
self.addText("Save requested\n")
self.addText(filename+"\n")
@pyqtSlot(np.ndarray)
def specCallback(self, spec):
self.addText("Spectrum ready\n")
@pyqtSlot(float, str)
def progressCallback(self, progress, eta):
self.addText('ETA: ' + eta+"\n")
if __name__ == '__main__':
import sys
try:
app = QApplication(sys.argv)
main = Test()
main.show()
except Exception as e:
print(e)
sys.exit(1)
try:
res = app.exec()
except Exception as e:
print(e)
sys.exit(1)
finally:
print(res)
sys.exit(res)