Source code for plugins.Thread_inspection.controller.serial_controller

import os
from PyQt5 import QtWidgets
from serial_axis_api import ThreadAxisAPI


[docs] def getPassword(): """ Get password from input dialog. """ passwd, ok = QtWidgets.QInputDialog.getText( None, "Authentication", "Sudo Password?", QtWidgets.QLineEdit.Password) if ok and passwd != '': return passwd
[docs] class AxisController(object): def __init__(self, Parent): """ Axis controller class. Args: Parent (): The main class of this application """ self.parent = Parent self.position = 0 self.__threadAxisAPI = None self.__speed = 500 self.parent.ui.set_speed.setValue(self.__speed) self.parent.ui.set_speed.setEnabled(False) self.parent.ui.abs_move.setEnabled(False) self.parent.ui.btn_ctrl_axis.clicked.connect(self.open_axis_controller) self.parent.ui.btn_connect.clicked.connect(self.go_connect_serial) self.parent.ui.btn_disconnect.clicked.connect( self.go_disconnect_serial) self.parent.ui.help_axis.clicked.connect(self.help_axis_controller) self.parent.ui.btn_reset.clicked.connect(self.go_reset) self.parent.ui.prev_speed.clicked.connect(self.go_related_moving_backward) self.parent.ui.next_speed.clicked.connect(self.go_related_moving_forward) self.parent.ui.abs_move.valueChanged.connect(self.go_absolute_moving) self.parent.ui.set_speed.valueChanged.connect(self.set_speed_axis)
[docs] def open_axis_controller(self): """ Open the widget on user interface to control the axis. """ if self.parent.axis_controller is False: self.parent.ui.frame_axis.show() self.parent.axis_controller = True else: self.parent.ui.frame_axis.hide() self.parent.axis_controller = False if self.__threadAxisAPI is not None: self.__threadAxisAPI.disconnect_serial() self.parent.ui.set_speed.setEnabled(False) self.parent.ui.abs_move.setEnabled(False) self.__threadAxisAPI = None
[docs] def set_speed_axis(self): """ Set the speed axis from the value given by user. """ if self.__threadAxisAPI is not None: self.__speed = self.parent.ui.set_speed.value() self.__threadAxisAPI.set_speed(self.__speed)
[docs] def go_connect_serial(self): """ Connect the serial port into the system. """ passwd = getPassword() if passwd: os.system("echo " + passwd + "| sudo -S chmod a+rw /dev/ttyUSB*") try: self.__threadAxisAPI = ThreadAxisAPI() self.__threadAxisAPI.connect_serial(serial_port="/dev/ttyUSB0") QtWidgets.QMessageBox.information( None, "Info !!", "Serial port connected!!") self.parent.ui.set_speed.setEnabled(True) self.parent.ui.abs_move.setEnabled(True) except OSError as err: self.__threadAxisAPI.logger.error(err) QtWidgets.QMessageBox.warning( None, "Error", "Make sure you have connect the serial port to the computer\nOr typing the correct " "password!!\n\nError: " + str(err))
[docs] def go_disconnect_serial(self): """ Disconnect the serial port with the system. """ if self.__threadAxisAPI is not None: self.__threadAxisAPI.disconnect_serial() QtWidgets.QMessageBox.information( None, "Info !!", "Serial port Disconnected!!") self.parent.ui.set_speed.setEnabled(False) self.parent.ui.abs_move.setEnabled(False) self.__threadAxisAPI = None
[docs] def go_reset(self): """ Reset the axis controller, speed and position. """ if self.__threadAxisAPI is not None: self.position = 0 self.__speed = 500 self.__threadAxisAPI.reset() self.parent.ui.label_6.setText("0 mm") self.parent.ui.set_speed.setValue(self.__speed) QtWidgets.QMessageBox.information( None, "Info !!", "Serial configuration has been reset!!")
[docs] def go_absolute_moving(self): """ axis will move with absolute moving. """ if self.__threadAxisAPI is not None: position = self.parent.ui.abs_move.value() self.__threadAxisAPI.absolute_moving(position)
[docs] def help_axis_controller(self): """ Open prompt for axis controller help. """ QtWidgets.QMessageBox.about( self.parent, "Help", "Please Contact MOIL LAB")