Skip to content
Snippets Groups Projects
Commit 175debdf authored by Harrison Edwards's avatar Harrison Edwards
Browse files

added stage functionality and camera parameter logging

parent 325f053c
No related merge requests found
......@@ -83,7 +83,7 @@
<widget class="QTextEdit" name="comment_box">
<property name="geometry">
<rect>
<x>160</x>
<x>240</x>
<y>440</y>
<width>161</width>
<height>41</height>
......@@ -93,10 +93,10 @@
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>340</x>
<x>420</x>
<y>420</y>
<width>171</width>
<height>101</height>
<height>121</height>
</rect>
</property>
<property name="title">
......@@ -154,11 +154,37 @@
<string>Left</string>
</property>
</widget>
<widget class="QPushButton" name="home_stage_button">
<property name="geometry">
<rect>
<x>7</x>
<y>90</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Home Stage</string>
</property>
</widget>
<widget class="QPushButton" name="get_position_button">
<property name="geometry">
<rect>
<x>87</x>
<y>90</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Get Position</string>
</property>
</widget>
</widget>
<widget class="QLabel" name="comment_box_label">
<property name="geometry">
<rect>
<x>160</x>
<x>240</x>
<y>420</y>
<width>71</width>
<height>16</height>
......@@ -171,7 +197,7 @@
<widget class="QPushButton" name="user_comment_button">
<property name="geometry">
<rect>
<x>160</x>
<x>240</x>
<y>490</y>
<width>161</width>
<height>23</height>
......
......@@ -10,8 +10,8 @@ from utils import screen_shooter,now,comment
from stage_controller import stage_controller
class ShowVideo(QtCore.QObject):
#initiating the built in camera
camera_port = 1 + cv2.CAP_DSHOW
# camera_port = 0 + cv2.CAP_DSHOW
camera = cv2.VideoCapture(camera_port)
VideoSignal = QtCore.pyqtSignal(QtGui.QImage)
screenshot_signal = QtCore.pyqtSignal('PyQt_PyObject')
......@@ -19,10 +19,15 @@ class ShowVideo(QtCore.QObject):
def __init__(self, parent = None):
super(ShowVideo, self).__init__(parent)
self.run_video = True
@QtCore.pyqtSlot()
def startVideo(self):
comment('starting video')
comment('video properties:')
self.camera.set(12,128)
self.camera.set(17,3000)
for i in range(19):
comment('property {}, value: {}'.format(i,
self.camera.get(i)))
while self.run_video:
ret, image = self.camera.read()
self.screenshot_signal.emit(image)
......@@ -35,6 +40,8 @@ class ShowVideo(QtCore.QObject):
QtGui.QImage.Format_RGB888)
self.VideoSignal.emit(qt_image)
QApplication.processEvents()
self.camera.release()
comment('ending video')
class ImageViewer(QtWidgets.QWidget):
......@@ -58,6 +65,9 @@ class ImageViewer(QtWidgets.QWidget):
def resize_dynamically(self,image):
return image.scaled(window.ui.verticalLayoutWidget.size())
def mousePressEvent(self, QMouseEvent):
print(QMouseEvent.pos())
class main_window(QMainWindow):
def __init__(self):
super(main_window, self).__init__()
......@@ -86,6 +96,8 @@ class main_window(QMainWindow):
self.ui.right_button.clicked.connect(stage.move_right)
self.ui.down_button.clicked.connect(stage.move_down)
self.ui.up_button.clicked.connect(stage.move_up)
self.ui.get_position_button.clicked.connect(stage.get_position)
self.ui.home_stage_button.clicked.connect(stage.home_stage)
self.show()
comment('finished init')
......@@ -93,6 +105,12 @@ class main_window(QMainWindow):
comment('user comment:{}'.format(self.ui.comment_box.toPlainText()))
self.ui.comment_box.clear()
def keyPressEvent(self,event):
stage.handle_keypress(event.key())
def closeEvent(self, event):
self.vid.run_video = False
if __name__ == '__main__':
app = QApplication(sys.argv)
stage = stage_controller()
......
......@@ -33,10 +33,10 @@ class Ui_MainWindow(object):
self.misc_screenshot_button.setGeometry(QtCore.QRect(10, 130, 81, 61))
self.misc_screenshot_button.setObjectName("misc_screenshot_button")
self.comment_box = QtWidgets.QTextEdit(self.centralwidget)
self.comment_box.setGeometry(QtCore.QRect(160, 440, 161, 41))
self.comment_box.setGeometry(QtCore.QRect(240, 440, 161, 41))
self.comment_box.setObjectName("comment_box")
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox.setGeometry(QtCore.QRect(340, 420, 171, 101))
self.groupBox.setGeometry(QtCore.QRect(420, 420, 171, 121))
self.groupBox.setObjectName("groupBox")
self.down_button = QtWidgets.QPushButton(self.groupBox)
self.down_button.setGeometry(QtCore.QRect(40, 60, 90, 23))
......@@ -50,11 +50,17 @@ class Ui_MainWindow(object):
self.left_button = QtWidgets.QPushButton(self.groupBox)
self.left_button.setGeometry(QtCore.QRect(10, 40, 75, 23))
self.left_button.setObjectName("left_button")
self.home_stage_button = QtWidgets.QPushButton(self.groupBox)
self.home_stage_button.setGeometry(QtCore.QRect(7, 90, 75, 23))
self.home_stage_button.setObjectName("home_stage_button")
self.get_position_button = QtWidgets.QPushButton(self.groupBox)
self.get_position_button.setGeometry(QtCore.QRect(87, 90, 75, 23))
self.get_position_button.setObjectName("get_position_button")
self.comment_box_label = QtWidgets.QLabel(self.centralwidget)
self.comment_box_label.setGeometry(QtCore.QRect(160, 420, 71, 16))
self.comment_box_label.setGeometry(QtCore.QRect(240, 420, 71, 16))
self.comment_box_label.setObjectName("comment_box_label")
self.user_comment_button = QtWidgets.QPushButton(self.centralwidget)
self.user_comment_button.setGeometry(QtCore.QRect(160, 490, 161, 23))
self.user_comment_button.setGeometry(QtCore.QRect(240, 490, 161, 23))
self.user_comment_button.setObjectName("user_comment_button")
MainWindow.setCentralWidget(self.centralwidget)
......@@ -76,6 +82,8 @@ class Ui_MainWindow(object):
self.right_button.setText(_translate("MainWindow", "Right"))
self.up_button.setText(_translate("MainWindow", "Up"))
self.left_button.setText(_translate("MainWindow", "Left"))
self.home_stage_button.setText(_translate("MainWindow", "Home Stage"))
self.get_position_button.setText(_translate("MainWindow", "Get Position"))
self.comment_box_label.setText(_translate("MainWindow", "Comment box"))
self.user_comment_button.setText(_translate("MainWindow", "Add comment to log"))
......
No preview for this file type
No preview for this file type
......@@ -10,8 +10,14 @@ class stage_controller():
com = 'COM3'
baud = 9600
parity = serial.PARITY_NONE
self.ser = serial.Serial(com, baud, timeout=0,
self.ser = serial.Serial(com, baud, timeout=.25,
parity=parity)
self.standard_move_size = 1000
self.key_control_dict = {
87:self.move_up,
65:self.move_left,
83:self.move_down,
68:self.move_right}
def issue_command(self,command):
'''
......@@ -21,7 +27,7 @@ class stage_controller():
comment('sending command to stage:{}'.format(command_string))
self.ser.write(command_string.encode('utf-8'))
def get_response(self):
def get_long_response(self):
response = ''
while 'END' not in response:
piece = self.ser.read()
......@@ -30,27 +36,51 @@ class stage_controller():
comment('response received from stage:{}'.format(response))
return response
def get_status(self):
self.issue_command('?')
return self.get_response()
def send_receive(self,command):
self.issue_command(command)
response = self.ser.readline()
comment('response received from stage:{}'.format(response))
return response
def get_status(self):
self.issue_command('?')
return self.get_long_response()
@QtCore.pyqtSlot()
def move_left(self):
print('test')
def home_stage(self):
# hits the limit switches and then returns to last known location
return self.send_receive('RIS')
@QtCore.pyqtSlot()
def move_right(self):
pass
def get_position(self):
return self.send_receive('P')
def go_to_position(self,x,y):
return self.send_receive('G,{},{}'.format(x,y))
@QtCore.pyqtSlot()
def move_up(self):
return self.send_receive('GR,0,-{}'.format(self.standard_move_size))
@QtCore.pyqtSlot()
def move_down(self):
pass
return self.send_receive('GR,0,{}'.format(self.standard_move_size))
@QtCore.pyqtSlot()
def move_up(self):
pass
def move_right(self):
return self.send_receive('GR,{},0'.format(self.standard_move_size))
@QtCore.pyqtSlot()
def move_left(self):
return self.send_receive('GR,-{},0'.format(self.standard_move_size))
def handle_keypress(self,key):
if key in self.key_control_dict.keys():
self.key_control_dict[key]()
if __name__ == '__main__':
stage = stage_controller()
stage_controller.get_status(stage)
stage_controller.home_stage(stage)
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment