Skip to content

Commit

Permalink
gui improvements, just need to fix io errors now
Browse files Browse the repository at this point in the history
  • Loading branch information
dmitri-mcguckin committed Apr 29, 2019
1 parent ee41eb8 commit bd064b9
Show file tree
Hide file tree
Showing 6 changed files with 314 additions and 120 deletions.
Empty file modified V0/useless_math.py
100644 → 100755
Empty file.
2 changes: 1 addition & 1 deletion driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def main():
utils.log(3, 'Could not initialize power supply:\n\t' + str(e))
# exit(1)

# Main controlerf_to_c
# Main controler
utils.log(0, 'Begining main runtime!')

if(sys.argv[1] == 'cli'):
Expand Down
45 changes: 19 additions & 26 deletions graph.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import sys, time, math
import pyqtgraph as pg
import utilities as utils
from PyQt5 import QtCore, QtGui, QtWidgets
Expand Down Expand Up @@ -33,39 +32,53 @@ def is_empty(self):
class Graph(QtGui.QWidget):
def __init__(self, parent, graph_range=utils.GRAPH_RANGE):
QtGui.QWidget.__init__(self, parent=parent)
self.resize(640, 640)

#
# Custom graph additions (for tracking data)
#
self.data_size = 0
self.lines = []
self.graph_range = graph_range

#
# Graph semantics
#
self.plot = pg.PlotWidget(title='Cage Magnetic Field')
self.plot.setClipToView(True)
self.plot.showGrid(x=True, y=True)
self.plot.addLegend()
self.plot.setLabel('left', 'Magnetic Field', units='mT')
self.plot.setLabel('bottom', 'Time', units='ms')

#
# Graph Legend
#
self.plot.addLegend()
self.plot.plot([], pen='r', symbolBrush=0.2, name='MagSensor-X')
self.plot.plot([], pen='g', symbolBrush=0.2, name='MagSensor-Y')
self.plot.plot([], pen='b', symbolBrush=0.2, name='MagSensor-Z')

self.dump_button = QtWidgets.QPushButton('Dump Data', self)
self.dump_button.clicked.connect(self.dump_data_to_console)

#
# Layouts
#
self.layout = QtGui.QGridLayout()
self.setLayout(self.layout)
self.layout.addWidget(self.plot, 0, 0)
self.layout.addWidget(self.dump_button, 2, 0)

# Adds a whole new line to the graph, which automatically gets plotted on the tick loop
def add_line(self, name, color, parent=None):
self.lines.append(Line(name, color, parent))
return self.lines

def update_graph(self, numbers=[0,0,0]):
# Adds a point to each line endpoint and redraws the graph
# number: Takes an array of y-values from line 0 to n (x, y, ... z) to update at each endpoint
def update_graph(self, numbers=None):
# Math updates
self.data_size += 1
for i in range(0, len(self.lines)):
self.lines[i].push_point(self.data_size, utils.generate_static(self.lines[i].y))
self.lines[i].push_point(self.data_size, numbers[i])

# Clear the graph
self.plot.clear()
Expand All @@ -90,23 +103,3 @@ def dump_data_to_console(self):
print('\tINDEX:\t\t\tX:\tY:\tZ:')
for i in self.dump_data():
print('\t' + str(i[0]) + '\t' + str(i[1]) + '\t' + str(i[2]) + '\t' + str(i[3]))

def main():
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
widget = QtWidgets.QWidget(window)
graph = Graph(widget)
graph.add_line('Magnetometer X', 'r')
graph.add_line('Magnetometer Y', 'g')
graph.add_line('Magnetometer Z', 'b')
graph.setGeometry(QtCore.QRect(300, 30, 320, 320))
graph.setAutoFillBackground(True)
graph.setObjectName("graph")

for i in range(0, 100):
graph.update_graph([i, i*2, i*i])
utils.log(0, 'base: ' + str(sum(graph.lines[1].y) / len(graph.lines[1].y)) + '\trandom: ' + str(utils.generate_static(graph.lines[1].y)))
time.sleep(1)

if(__name__ == '__main__'):
main()
117 changes: 117 additions & 0 deletions new_window.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'window.ui'
#
# Created by: PyQt5 UI code generator 5.12.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(402, 311)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(200, 10, 191, 241))
self.frame.setAutoFillBackground(True)
self.frame.setFrameShape(QtWidgets.QFrame.Box)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setLineWidth(8)
self.frame.setObjectName("frame")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(10, 10, 184, 248))
self.widget.setObjectName("widget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setSpacing(15)
self.verticalLayout.setObjectName("verticalLayout")
self.label_5 = QtWidgets.QLabel(self.widget)
self.label_5.setObjectName("label_5")
self.verticalLayout.addWidget(self.label_5)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_2 = QtWidgets.QLabel(self.widget)
self.label_2.setObjectName("label_2")
self.horizontalLayout.addWidget(self.label_2)
self.lineEdit = QtWidgets.QLineEdit(self.widget)
self.lineEdit.setObjectName("lineEdit")
self.horizontalLayout.addWidget(self.lineEdit)
self.verticalLayout.addLayout(self.horizontalLayout)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_3 = QtWidgets.QLabel(self.widget)
self.label_3.setObjectName("label_3")
self.horizontalLayout_4.addWidget(self.label_3)
self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
self.lineEdit_2.setObjectName("lineEdit_2")
self.horizontalLayout_4.addWidget(self.lineEdit_2)
self.verticalLayout.addLayout(self.horizontalLayout_4)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_4 = QtWidgets.QLabel(self.widget)
self.label_4.setObjectName("label_4")
self.horizontalLayout_5.addWidget(self.label_4)
self.lineEdit_3 = QtWidgets.QLineEdit(self.widget)
self.lineEdit_3.setObjectName("lineEdit_3")
self.horizontalLayout_5.addWidget(self.lineEdit_3)
self.verticalLayout.addLayout(self.horizontalLayout_5)
self.spinBox = QtWidgets.QSpinBox(self.widget)
self.spinBox.setObjectName("spinBox")
self.verticalLayout.addWidget(self.spinBox)
self.label = QtWidgets.QLabel(self.widget)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 402, 26))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionSave = QtWidgets.QAction(MainWindow)
self.actionSave.setObjectName("actionSave")
self.actionSave_As = QtWidgets.QAction(MainWindow)
self.actionSave_As.setCheckable(True)
self.actionSave_As.setObjectName("actionSave_As")
self.actionQuit = QtWidgets.QAction(MainWindow)
self.actionQuit.setObjectName("actionQuit")
self.menuFile.addAction(self.actionSave)
self.menuFile.addAction(self.actionSave_As)
self.menuFile.addSeparator()
self.menuFile.addAction(self.actionQuit)
self.menubar.addAction(self.menuFile.menuAction())

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label_5.setText(_translate("MainWindow", "Voltage (V)"))
self.label_2.setText(_translate("MainWindow", "Power Supply 1"))
self.label_3.setText(_translate("MainWindow", "Power Supply 2"))
self.label_4.setText(_translate("MainWindow", "Power Supply 3"))
self.label.setText(_translate("MainWindow", "Data Acuracy"))
self.menuFile.setTitle(_translate("MainWindow", "File"))
self.actionSave.setText(_translate("MainWindow", "Save"))
self.actionSave_As.setText(_translate("MainWindow", "Save As"))
self.actionQuit.setText(_translate("MainWindow", "Quit"))




if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
3 changes: 2 additions & 1 deletion utilities.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import os, math, random, time
import os, random, time

DEBUG = False
TICK_TIME = 500
Expand All @@ -7,6 +7,7 @@
DATA_ACCURACY = 4
POWER_SUPPLIES = []
PSU_ADDRS = [ 'ttyUSB0', 'ttyUSB1', 'ttyUSB2' ]
ICON_IMG_PATH='./img/icon.png'
CAGE_DATA_PATH = '/cage_data/'

def data_file_path(filename=''):
Expand Down
Loading

0 comments on commit bd064b9

Please sign in to comment.