Esempio n. 1
0
  def __init__(self,parent=None):
    QtGui.QWidget.__init__(self,parent)
    
    self.timer = QtCore.QTimer()
    
    self.ui=Ui_CansatDlg()
    self.ui.setupUi(self)
    self.thread=DataGetter(self)
    
    self.altitudeData=[]
    self.airTempData=[]
    self.descentRateData=[]
    self.voltageData=[]
    self.data=[]
    self.data.append(self.altitudeData)
    self.data.append(self.airTempData)
    self.data.append(self.descentRateData)
    self.data.append(self.voltageData)
    
    self.timeData=[]
    self.initialTime=0.0
    
    self.mplWidgets=[self.ui.altitudeMpl, self.ui.airTempMpl, self.ui.descentRateMpl, self.ui.voltageMpl]
    
    self.plot=[]
    
    self._initializePlot()
    self._connectSlots()   
    self._fillPortsList()
    
    self.counter=0
    self.plotLocation=[4,3,12,2]
    self.latestLine=[]
    self.dataExists=False

    self.ui.disconnectButton.setEnabled(False)
    self.ui.startButton.setEnabled(False)
    self.ui.stopButton.setEnabled(False)
Esempio n. 2
0
class MainDisplay(QtGui.QMainWindow):
  def __init__(self,parent=None):
    QtGui.QWidget.__init__(self,parent)
    
    self.timer = QtCore.QTimer()
    
    self.ui=Ui_CansatDlg()
    self.ui.setupUi(self)
    self.thread=DataGetter(self)
    
    self.altitudeData=[]
    self.airTempData=[]
    self.descentRateData=[]
    self.voltageData=[]
    self.data=[]
    self.data.append(self.altitudeData)
    self.data.append(self.airTempData)
    self.data.append(self.descentRateData)
    self.data.append(self.voltageData)
    
    self.timeData=[]
    self.initialTime=0.0
    
    self.mplWidgets=[self.ui.altitudeMpl, self.ui.airTempMpl, self.ui.descentRateMpl, self.ui.voltageMpl]
    
    self.plot=[]
    
    self._initializePlot()
    self._connectSlots()   
    self._fillPortsList()
    
    self.counter=0
    self.plotLocation=[4,3,12,2]
    self.latestLine=[]
    self.dataExists=False

    self.ui.disconnectButton.setEnabled(False)
    self.ui.startButton.setEnabled(False)
    self.ui.stopButton.setEnabled(False)
    
  def _fillPortsList(self):
    for portname in enumerate_serial_ports():
      self.ui.serialPortCombo.addItem(portname)

  def _initializePlot(self):
    xlabel='Time (sec.)'
    ylabel=[r'Altitude ($m.$)', r'Air Temperature ($C^\circ$)', r'Descent Rate ($m/s^2$)', r'Battery Voltage ($V$)'] 
    for i in range(len(self.mplWidgets)):
      self.plot.append(self.mplWidgets[i].axes.plot(
        self.data[i], 
        linewidth=1,
        color=(0, 0, 0),
        )[0])
        
      self.mplWidgets[i].axes.set_xlabel(xlabel, size=8)
      self.mplWidgets[i].axes.set_ylabel(ylabel[i], size=8)  
      self.mplWidgets[i].figure.subplots_adjust(bottom=.15)
      self.mplWidgets[i].figure.subplots_adjust(left=.15)
      
  def _drawPlot(self):
    if self.dataExists:
      for i in range(len(self.mplWidgets)):
        xmax = max(self.timeData) if max(self.timeData) > 20 else 20
        xmin = 0

        ymin = round(min(self.data[i]), 0) - 1
        ymax = round(max(self.data[i]), 0) + 1

        self.mplWidgets[i].axes.set_xbound(lower=xmin, upper=xmax)
        self.mplWidgets[i].axes.set_ybound(lower=ymin, upper=ymax)
        
        self.plot[i].set_data(np.array(self.timeData),np.array(self.data[i]))
        
        self.mplWidgets[i].draw()
      
      self._updateLatestData(self.latestLine)
      
  def _updateLatestData(self,line):
    self.ui.timeEdit.setText(line[9])
    self.ui.latitudeEdit.setText(line[5])
    self.ui.longitudeEdit.setText(line[7])
    self.ui.seaAltitudeEdit.setText(line[11])
    self.ui.numSatEdit.setText(line[10])
    self.ui.altitudePressureEdit.setText(line[4])
    self.ui.descentRateEdit.setText(line[12])
    self.ui.airTempEdit.setText(line[3])
    self.ui.voltageEdit.setText(line[2])
    self.ui.servo1Edit.setText(line[0])
    self.ui.servo2Edit.setText(line[1])

  def _connectSlots(self):
    self.connect(self.ui.connectButton,QtCore.SIGNAL("clicked()"),self._slotConnectClicked)
    self.connect(self.ui.disconnectButton,QtCore.SIGNAL("clicked()"),self._slotDisconnectClicked)
    self.connect(self.ui.refreshButton,QtCore.SIGNAL("clicked()"),self._slotRefreshClicked)
    self.connect(self.ui.startButton,QtCore.SIGNAL("clicked()"),self._slotStartClicked)
    self.connect(self.ui.stopButton,QtCore.SIGNAL("clicked()"),self._slotStopClicked)
    
    self.connect(self.timer, QtCore.SIGNAL('timeout()'), self._drawPlot)

  def _slotConnectClicked(self):
    if not str(self.ui.serialPortCombo.currentText()) == '':
      self.ui.disconnectButton.setEnabled(True)
      self.ui.connectButton.setEnabled(False)
      self.ui.startButton.setEnabled(True)
      self.ui.stopButton.setEnabled(True)
      self.ui.refreshButton.setEnabled(False)
      self.ui.serialPortCombo.setEnabled(False)
      self.ui.baudEdit.setEnabled(False)
      
      for i in range(4):
        self.data[i][:]=[]
      
      self.timeData[:]=[]
      
      self.counter=0
      self.dataExists=False
      port=str(self.ui.serialPortCombo.currentText())
      baud=self.ui.baudEdit.text()
      
      self.thread._setConnection(port,baud)
      self.thread.start()
      
      self.timer.start(500)
    else:
      print 'No COM port connected'
    
  def _slotDisconnectClicked(self):
    self.ui.disconnectButton.setEnabled(False)
    self.ui.connectButton.setEnabled(True)
    self.ui.startButton.setEnabled(False)
    self.ui.stopButton.setEnabled(False)
    self.ui.refreshButton.setEnabled(True)
    self.ui.serialPortCombo.setEnabled(True)
    self.ui.baudEdit.setEnabled(True)
    
    self.thread._disconnect()
    
    self.timer.stop()
    
  def _slotRefreshClicked(self):
    self.ui.serialPortCombo.clear()
    self._fillPortsList()
  
  def _slotStartClicked(self):    
    self.thread._sendStart()
    
  def _slotStopClicked(self):    
    self.thread._sendEnd()