spacepaste

  1.  
  2. from PyQt4 import QtCore, QtGui
  3. import pyqtgraph as pg
  4. import random
  5. import serial
  6. from collections import deque
  7. import sys
  8. import os
  9. ser = serial.Serial("COM3", 115200)
  10. def updateBPM(bpm):
  11. newString = ("HR:\n" + bpm)
  12. with open(os.path.join(os.path.dirname(__file__), "currentBPM.txt"), "w+") as bpmFile:
  13. bpmFile.write(newString)
  14. class MainWindow(QtGui.QMainWindow):
  15. def __init__(self, parent=None):
  16. super(MainWindow, self).__init__(parent)
  17. self.central_widget = QtGui.QStackedWidget()
  18. self.setCentralWidget(self.central_widget)
  19. self.login_widget = LoginWidget(self)
  20. self.login_widget.button.clicked.connect(self.plotter)
  21. self.central_widget.addWidget(self.login_widget)
  22. def plotter(self):
  23. self.data = deque(maxlen=450)
  24. self.curve = self.login_widget.plot.getPlotItem().plot()
  25. self.timer = QtCore.QTimer()
  26. self.timer.timeout.connect(self.updater)
  27. self.timer.start(0)
  28. def updater(self):
  29. while (ser.inWaiting()==0):
  30. pass
  31. try:
  32. data = str(ser.readline()).split(",")
  33. bpm = data[0][2:]
  34. cl = int(float(data[2][:-5]))
  35. except:
  36. return
  37. updateBPM(bpm)
  38. self.data.append(cl)
  39. self.curve.setData(self.data)
  40. class LoginWidget(QtGui.QWidget):
  41. def __init__(self, parent=None):
  42. super(LoginWidget, self).__init__(parent)
  43. layout = QtGui.QHBoxLayout()
  44. self.button = QtGui.QPushButton('Start Plotting')
  45. layout.addWidget(self.button)
  46. self.plot = pg.PlotWidget()
  47. layout.addWidget(self.plot)
  48. self.setLayout(layout)
  49. if __name__ == '__main__':
  50. app = QtGui.QApplication([])
  51. window = MainWindow()
  52. window.resize(1083,334)
  53. window.show()
  54. app.exec_()
  55.