Go to the documentation of this file.00001
00002
00003 __author__ = 'tom1231'
00004 from BAL.Interface.DeviceFrame import CLOSE_LOP_TWO
00005 from BAL.Devices.CloseLoop import CloseLoop
00006 from PyQt4.QtGui import *
00007
00008
00009 class CloseLoopTwo(CloseLoop):
00010 def __init__(self, frame, data, encoders):
00011 CloseLoop.__init__(self, frame, data, encoders)
00012 self.setType(CLOSE_LOP_TWO)
00013 self.mainPorts.setCurrentIndex(1)
00014 self._encoder2 = str(self.mainPorts.currentText())
00015
00016 def getEncoders(self):
00017 return self._encoder, self._encoder2
00018
00019 def findItem2(self):
00020 for i in xrange(self.mainPorts.count()):
00021 if self._encoder2 == str(self.mainPorts.itemText(i)):
00022 return i
00023 return 1
00024
00025 def toDict(self):
00026 data = CloseLoop.toDict(self)
00027 data['type'] = CLOSE_LOP_TWO
00028 data['encoder2'] = self._encoder2
00029 return data
00030
00031 def fromDict(self, data):
00032 CloseLoop.fromDict(self, data)
00033 self._encoder2 = data['encoder2']
00034
00035 def add(self):
00036 old = self._name
00037 self._name = str(self.name.text())
00038
00039 if not self.nameIsValid():
00040 error = QErrorMessage()
00041 error.setWindowTitle("Same name error")
00042 error.showMessage("Name already taken.")
00043 error.exec_()
00044 self._name = old
00045 self._isValid = False
00046 return
00047
00048 self._encoder = str(self.encoders.currentText())
00049 self._encoder2 = str(self.encoders2.currentText())
00050 if self._encoder == self._encoder2:
00051 error = QErrorMessage()
00052 error.setWindowTitle("Same encoder port error")
00053 error.showMessage("Can not have the same encoder ports.")
00054 error.exec_()
00055 self._isValid = False
00056 return
00057 self._isValid = True
00058 self._dirEnc = self.dirEnc.isChecked()
00059 self._dirMotor = self.dirMotor.isChecked()
00060 self._pubHz = str(self.pubHz.text())
00061 self._name = str(self.name.text())
00062 self._lpfHz = str(self.lpfHz.text())
00063 self._lpfAlpha = str(self.lpfAlpha.text())
00064 self._driverAdd = str(self.driverAdd.text())
00065 self._channel = str(self.channel.text())
00066 self._pidHz = str(self.pidHz.text())
00067 self._kp = str(self.kp.text())
00068 self._ki = str(self.ki.text())
00069 self._kd = str(self.kd.text())
00070 self._limit = str(self.limit.text())
00071 self._maxSpeed = str(self.maxSpeed.text())
00072 self._ppr = str(self.ppr.text())
00073 self._timeout = str(self.timeout.text())
00074 self._motorType = str(self.motorTypes.itemData(self.motorTypes.currentIndex()).toString())
00075 self._driverType = str(self.driverType.itemData(self.driverType.currentIndex()).toString())
00076
00077 self.mainPorts.removeItem(self.findItem())
00078
00079 self.mainPorts.removeItem(self.findItem2())
00080
00081 def saveToFile(self, file):
00082 CloseLoop.saveToFile(self, file)
00083 file.write('closeLoop' + str(CloseLoop.closeLoop - 1) + '/port2: ' + self._encoder2 + '\n')
00084
00085 def encoderType(self):
00086 return '2'
00087
00088
00089 def printEncoder(self):
00090 self._frame.layout().addRow(QLabel('Encoder1: '), QLabel(self._encoder))
00091 self._frame.layout().addRow(QLabel('Encoder2: '), QLabel(self._encoder2))
00092
00093 def setEncode(self):
00094 self.encoders = QComboBox()
00095 self.encoders.addItems([self.mainPorts.itemText(i) for i in xrange(self.mainPorts.count())])
00096 self.encoders.setCurrentIndex(self.findItem())
00097
00098 self.encoders2 = QComboBox()
00099 self.encoders2.addItems([self.mainPorts.itemText(i) for i in xrange(self.mainPorts.count())])
00100 self.encoders2.setCurrentIndex(self.findItem2())
00101
00102 self._frame.layout().addRow(QLabel('Encoder1: '), self.encoders)
00103 self._frame.layout().addRow(QLabel('Encoder2: '), self.encoders2)
00104
00105