Servo.py
Go to the documentation of this file.
00001 from PySide import QtCore
00002 from PyQt4.QtCore import pyqtSlot, SIGNAL
00003 
00004 __author__ = 'tom1231'
00005 from PyQt4.QtGui import *
00006 from BAL.Interface.DeviceFrame import DeviceFrame, SERVO
00007 
00008 
00009 class Servo(DeviceFrame):
00010     servoCount = 0
00011 
00012     def __init__(self, frame, data, servoPorts):
00013         DeviceFrame.__init__(self, SERVO, frame, data)
00014         self._pubHz = '10'
00015         self._name = 'RiC_Servo'
00016         self._initPos = '999.0'
00017         self._min = '-1.57'
00018         self._max = '1.57'
00019         self._a = '90.0'
00020         self._b = '57.3'
00021         self._port = str(servoPorts.currentText())
00022         self._isinitPos = False
00023         self.mainPorts = servoPorts
00024 
00025     def fromDict(self, data):
00026         self._pubHz = data['pubHz']
00027         self._name = data['name']
00028         self._initPos = data['initPos']
00029         self._isinitPos = data['isInitPos']
00030         self._min = data['min']
00031         self._max = data['max']
00032         self._a = data['a']
00033         self._b = data['b']
00034         self._port = data['port']
00035 
00036     def toDict(self):
00037         data = dict()
00038 
00039         data['type'] = SERVO
00040         data['pubHz'] = self._pubHz
00041         data['name'] = self._name
00042         data['initPos'] = self._initPos
00043         data['isInitPos'] = self._isinitPos
00044         data['min'] = self._min
00045         data['max'] = self._max
00046         data['a'] = self._a
00047         data['b'] = self._b
00048         data['port'] = self._port
00049         return data
00050 
00051     def saveToFile(self, file):
00052         if not self._isinitPos: self._initPos = '999.0'
00053 
00054         file.write('servo' + str(Servo.servoCount) + '/publishHz: ' + self._pubHz + '\n')
00055         file.write('servo' + str(Servo.servoCount) + '/name: ' + self._name + '\n')
00056         file.write('servo' + str(Servo.servoCount) + '/port: ' + self._port + '\n')
00057         file.write('servo' + str(Servo.servoCount) + '/min: ' + self._min + '\n')
00058         file.write('servo' + str(Servo.servoCount) + '/max: ' + self._max + '\n')
00059         file.write('servo' + str(Servo.servoCount) + '/initMove: ' + self._initPos + '\n')
00060         file.write('servo' + str(Servo.servoCount) + '/a: ' + self._a + '\n')
00061         file.write('servo' + str(Servo.servoCount) + '/b: ' + self._b + '\n')
00062         Servo.servoCount += 1
00063 
00064     def getName(self):
00065         return self._name
00066 
00067     def getPort(self):
00068         return self._port
00069 
00070     def add(self):
00071         old = self._name
00072         self._name = str(self.name.text())
00073 
00074         if not self.nameIsValid():
00075             error = QErrorMessage()
00076             error.setWindowTitle("Same name error")
00077             error.showMessage("Name already taken.")
00078             error.exec_()
00079             self._name = old
00080             self._isValid = False
00081             return
00082 
00083         self._isValid = True
00084         self._pubHz = str(self.pubHz.text())
00085         self._isinitPos = self.check.isChecked()
00086         if self._isinitPos: self._initPos = str(self.initPos.text())
00087         self._min = str(self.min.text())
00088         self._max = str(self.max.text())
00089         self._a = str(self.a.text())
00090         self._b = str(self.b.text())
00091         self._port = str(self._servoPorts.currentText())
00092         self.mainPorts.removeItem(self._servoPorts.currentIndex())
00093 
00094     def findItem(self):
00095         for i in xrange(self.mainPorts.count()):
00096             if self._port == str(self.mainPorts.itemText(i)):
00097                 return i
00098         return 1
00099 
00100     def showDetails(self, items=None):
00101         self.pubHz = QLineEdit(self._pubHz)
00102         self.name = QLineEdit(self._name)
00103         self.initPos = QLineEdit(self._initPos)
00104         self.min = QLineEdit(self._min)
00105         self.max = QLineEdit(self._max)
00106         self.a = QLineEdit(self._a)
00107         self.b = QLineEdit(self._b)
00108         self.check = QCheckBox('')
00109         self._servoPorts = QComboBox()
00110         self._servoPorts.addItems([self.mainPorts.itemText(i) for i in xrange(self.mainPorts.count())])
00111         self._servoPorts.setCurrentIndex(self.findItem())
00112         self.initPos.setEnabled(self._isinitPos)
00113         self.check.setChecked(self._isinitPos)
00114         self.check.stateChanged.connect(self.initPos.setEnabled)
00115 
00116         self._frame.layout().addRow(QLabel('Publish Hz: '), self.pubHz)
00117         self._frame.layout().addRow(QLabel('name: '), self.name)
00118         self._frame.layout().addRow(QLabel('Initial position(in radians): '), self.initPos)
00119         self._frame.layout().addRow(QLabel('Minimum position(in radians): '), self.min)
00120         self._frame.layout().addRow(QLabel('Maximum position(in radians): '), self. max)
00121         self._frame.layout().addRow(QLabel('Parameter A(in degrees): '), self.a)
00122         self._frame.layout().addRow(QLabel('Parameter B(in degrees): '), self.b)
00123         self._frame.layout().addRow(QLabel('Port: '), self._servoPorts)
00124         self._frame.layout().addRow(QLabel('Enable initial position: '), self.check)
00125 
00126     def printDetails(self):
00127         self._frame.layout().addRow(QLabel('Publish Hz: '), QLabel(self._pubHz))
00128         self._frame.layout().addRow(QLabel('name: '), QLabel(self._name))
00129         if self._isinitPos: self._frame.layout().addRow(QLabel('Initial position(in radians): '), QLabel(self._initPos))
00130         else: self._frame.layout().addRow(QLabel('Initial position(in radians): '), QLabel('Not enable'))
00131         self._frame.layout().addRow(QLabel('Minimum position(in radians): '), QLabel(self._min))
00132         self._frame.layout().addRow(QLabel('Maximum position(in radians): '), QLabel(self._max))
00133         self._frame.layout().addRow(QLabel('Parameter A(in degrees): '), QLabel(self._a))
00134         self._frame.layout().addRow(QLabel('Parameter B(in degrees): '), QLabel(self._b))
00135         self._frame.layout().addRow(QLabel('Port: '), QLabel(self._port))


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