MainWindow.py
Go to the documentation of this file.
00001 __author__ = 'tom1231'
00002 from PyQt4.QtGui import *
00003 from GUI.Scheme.SetParams import Ui_main
00004 import rospy.exceptions
00005 from ric_board.srv._get_devs import get_devs, get_devsRequest
00006 from ric_board.srv._setParam import setParam, setParamRequest
00007 
00008 
00009 class MainWindow(QDialog, Ui_main):
00010 
00011     def __init__(self, parent=None):
00012         super(MainWindow, self).__init__(parent)
00013         self.setupUi(self)
00014         self._devs = []
00015 
00016         self.refresh()
00017 
00018         self.refreshB.clicked.connect(self.refresh)
00019         self.setB.clicked.connect(self.sendNewParams)
00020         self.devList.itemSelectionChanged.connect(self.listChange)
00021 
00022         self._selected = False
00023 
00024     def refresh(self):
00025         try:
00026             rospy.wait_for_service('/devsOnline', timeout=0.2)
00027 
00028             self.status.setText('Connected')
00029 
00030             getDevsOnline = rospy.ServiceProxy('/devsOnline', get_devs)
00031             request = get_devsRequest()
00032             request.req = True
00033             responds = getDevsOnline(request)
00034             self._devs = responds.devs.devs
00035 
00036         except rospy.ROSException:
00037             self.status.setText('Not connected')
00038         finally:
00039             self.buildList()
00040 
00041     def buildList(self):
00042         self.devList.clear()
00043         self.removeAllFields()
00044 
00045         for device in self._devs:
00046             self.devList.addItem(QListWidgetItem(device.devName))
00047 
00048     def removeAllFields(self):
00049         for i in xrange(self.devFrame.layout().count()):
00050             self.devFrame.layout().itemAt(i).widget().deleteLater()
00051 
00052     def sendNewParams(self):
00053         try:
00054             if not self._selected: return
00055             rospy.wait_for_service('/devsSetParam', timeout=0.2)
00056             motor = self._devs[self.devList.currentRow()]
00057 
00058             kp = float(self.devFrame.layout().itemAt(1).widget().text())
00059             ki = float(self.devFrame.layout().itemAt(3).widget().text())
00060             kd = float(self.devFrame.layout().itemAt(5).widget().text())
00061 
00062             motor.values = [kp, ki, kd]
00063 
00064             request = setParamRequest()
00065 
00066             request.dev.devName = motor.devName
00067             request.dev.type = motor.type
00068             request.dev.values = [kp, ki, kd]
00069 
00070             setNewParam = rospy.ServiceProxy('/devsSetParam', setParam)
00071 
00072             setNewParam(request)
00073 
00074         except rospy.ROSException:
00075             self.status.setText('Not connected')
00076 
00077     def listChange(self):
00078         motor = self._devs[self.devList.currentRow()]
00079         self.removeAllFields()
00080 
00081         self.devFrame.layout().addRow(QLabel('Kp: '), QLineEdit(str(motor.values[0])))
00082         self.devFrame.layout().addRow(QLabel('Ki: '), QLineEdit(str(motor.values[1])))
00083         self.devFrame.layout().addRow(QLabel('Kd: '), QLineEdit(str(motor.values[2])))
00084 
00085         self._selected = True


ric_board
Author(s): RoboTiCan
autogenerated on Fri Oct 27 2017 03:02:30