Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PyQt5.QtCore import QDateTime, Qt, QTimer
- from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit,
- QDial, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit,
- QProgressBar, QPushButton, QRadioButton, QScrollBar, QSizePolicy,
- QSlider, QSpinBox, QStyleFactory, QTableWidget, QTabWidget, QTextEdit,
- QTableWidgetItem, QVBoxLayout, QWidget, QHeaderView)
- from PyQt5.QtGui import *
- import time
- import serial
- from QLed import QLed
- from PyQt5 import uic, QtCore, QtWidgets
- #import vrep
- import matplotlib
- matplotlib.use('Qt5Agg')
- from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar
- from matplotlib.figure import Figure
- """
- arduinoData=serial.Serial('COM6',9600)
- def led_on():
- arduinoData.write(b'1')
- def led_off():
- arduinoData.write(b'0')
- def led2_on():
- arduinoData.write(b'3')
- def led2_off():
- arduinoData.write(b'2')
- def led3_on():
- arduinoData.write(b'5')
- def led3_off():
- arduinoData.write(b'4')
- t=0
- while(t<3000000):
- t+=1
- led3_off()
- """
- class MplCanvas(FigureCanvasQTAgg):
- def __init__(self, parent=None, width=5, height=4, dpi=120):
- fig = Figure(figsize=(width, height), dpi=dpi)
- self.axes = fig.add_subplot(111)
- super(MplCanvas, self).__init__(fig)
- class WidgetGallery(QDialog):
- def __init__(self, parent=None):
- super(WidgetGallery, self).__init__(parent)
- self.setFixedHeight(700)
- self.setFixedWidth(1300)
- styleComboBox = QComboBox()
- styleLabel = QLabel("Style:")
- self.useStylePaletteCheckBox = QCheckBox("&Use style's standard palette")
- self.useStylePaletteCheckBox.setChecked(True)
- disableWidgetsCheckBox = QCheckBox("&Disable widgets")
- self.createTopLeftGroupBox()
- self.createTopRightGroupBox()
- self.createBottomLeftTabWidget()
- self.bottomLeftTabWidget.setFixedHeight(220)
- self.createBottomRightGroupBox()
- self.createProgressBar()
- topLayout = QHBoxLayout()
- mainLayout = QGridLayout()
- mainLayout.addWidget(self.topLeftGroupBox, 1, 0)
- mainLayout.addWidget(self.topRightGroupBox, 1, 1)
- mainLayout.addWidget(self.bottomLeftTabWidget, 2, 0)
- mainLayout.addWidget(self.bottomRightGroupBox, 2, 1)
- self.setLayout(mainLayout)
- self.setWindowTitle("Styles")
- self.changeStyle('Windows')
- self.label = QLabel(self)
- # self.label.setFont(QVBoxLayout.QFont("Sanserif", 15))
- def changeStyle(self, styleName):
- QApplication.setStyle(QStyleFactory.create(styleName))
- self.changePalette()
- def changePalette(self):
- if (self.useStylePaletteCheckBox.isChecked()):
- QApplication.setPalette(QApplication.style().standardPalette())
- else:
- QApplication.setPalette(self.originalPalette)
- def advanceProgressBar(self):
- curVal = self.progressBar.value()
- maxVal = self.progressBar.maximum()
- self.progressBar.setValue(curVal + (maxVal - curVal) // 100)
- def createTopLeftGroupBox(self):
- self.topLeftGroupBox = QGroupBox("Dynamic Graph")
- self.sc = MplCanvas(self, width=5, height=4, dpi=120)
- self.toolbar = NavigationToolbar(self.sc, self)
- # self.sc.resize(120,80)
- # self.sc.setMaximumHeight(500)
- self.sc.axes.set_position([0.1, 0.13, 0.85, 0.80])
- #self.sc.axes.legend(handletextpad=0.1)
- self.sc.axes.ymargin=0.1
- layout = QVBoxLayout()
- layout.addWidget(self.toolbar)
- layout.addWidget(self.sc)
- # Create a placeholder widget to hold our toolbar and canvas.
- #widget = QtWidgets.QWidget()
- #widget.setLayout(layout)
- #self.setCentralWidget(widget)
- self.show()
- self.topLeftGroupBox.setLayout(layout)
- def createBottomLeftTabWidget(self):
- self.bottomLeftTabWidget = QTabWidget()
- self.tab1 = QWidget()
- self.tab1.resize(1600,400)
- self.tableWidget = QTableWidget(5, 100)
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(QHeaderView.Stretch)
- self.tableWidget.resize(120,80)
- self.tab1hbox = QHBoxLayout()
- self.tab1hbox.addWidget(self.tableWidget)
- self.tab1.setLayout(self.tab1hbox)
- self.bottomLeftTabWidget.addTab(self.tab1, "&Table")
- def dialMoved(self):
- print(self.dial3.value())
- self.label.setText(" Dialer Value : " + str(getValue))
- def createBottomRightGroupBox(self):
- self.bottomRightGroupBox = QGroupBox("Actuators")
- self.Button_Right = QPushButton("Act: 1")
- self.Button_Right.setCheckable(True)
- self.Button_Right.clicked.connect(self.Button_Right_Handler)
- self.Button_Left = QPushButton("Act: 2")
- self.Button_Left.setCheckable(True)
- self.Button_Left.clicked.connect(self.Button_Left_Handler)
- self.Button_Top = QPushButton("Act: 3")
- self.Button_Top.setCheckable(True)
- self.Button_Top.clicked.connect(self.Button_Top_Handler)
- self.Button_Roll = QPushButton("Act: Roll")
- self.Button_Roll.setCheckable(True)
- self.Button_Roll.clicked.connect(self.Button_Roll_Handler)
- layout2 = QVBoxLayout()
- layout2.addWidget(self.Button_Right)
- layout2.addWidget(self.Button_Left)
- layout2.addWidget(self.Button_Top)
- layout2.addWidget(self.Button_Roll)
- self.bottomRightGroupBox.setLayout(layout2)
- def createTopRightGroupBox(self):
- self.topRightGroupBox = QGroupBox("Control Panel")
- stopAllButton = QPushButton("Turn off the actuators")
- stopAllButton.setDefault(True)
- stopAllButton.clicked.connect(self.StopAll_Handler)
- readForceButton=QPushButton("Read force values")
- readForceButton.setDefault(True)
- readForceButton.clicked.connect(self.readForce)
- readEncButton=QPushButton("Read encoder")
- readEncButton.setDefault(True)
- readEncButton.clicked.connect(self.readEncoder)
- self.dial3 = QDial(self.topRightGroupBox)
- self.dial3.setMinimum(-125)
- self.dial3.setMaximum(125)
- self.dial3.setNotchesVisible(True)
- layout = QVBoxLayout()
- layout.addWidget(stopAllButton)
- layout.addWidget(readForceButton)
- layout.addWidget(readEncButton)
- layout.addWidget(self.dial3)
- self.led1=QLed(self, onColour=QLed.Red, shape=QLed.Circle)
- self.led1.value=False
- self.led2=QLed(self, onColour=QLed.Red, shape=QLed.Circle)
- self.led2.value=False
- self.led3=QLed(self, onColour=QLed.Red, shape=QLed.Circle)
- self.led3.value=False
- self.led4=QLed(self, onColour=QLed.Red, shape=QLed.Circle)
- self.led4.value=False
- self.light = 0
- layout.addWidget(self.led1)
- layout.addWidget(self.led2)
- layout.addWidget(self.led3)
- layout.addWidget(self.led4)
- layout.addStretch(1)
- self.topRightGroupBox.setLayout(layout)
- def sendSerial(self):
- if ((self.dial3.value()>=5) or (self.dial3.value()<-5)):
- ser=serial.Serial('COM3',9600)
- buf = str(self.dial3.value()).encode("utf-8")
- ser.write(b'' + buf)
- ser.close()
- print(self.dial3.value())
- time.sleep(2)
- self.readEncoder()
- else:
- print("low value")
- def readEncoder(self):
- ser=serial.Serial('COM3',9600)
- ser.write(b'254')
- ser.close()
- print("Starting reading...")
- ser=serial.Serial('COM3',9600, timeout=7)
- n_cnt = 0
- n_list = []
- enc_list = []
- enc_val1 = []
- enc_val2 = []
- enc_val3 = []
- enc_val4 = []
- zero_cnt = [0, 0, 0, 0, 0]
- while(n_cnt<=99):
- enc = ser.readline()
- enc_str = str(enc)
- if ("enc" in enc_str):
- enc_list = enc_str.split(":", 5)
- n_list.append(n_cnt)
- if int(enc_list[1])==0:
- zero_cnt[1] += 1
- enc_val1.append(enc_list[1])
- if int(enc_list[2])==0:
- zero_cnt[2] += 1
- enc_val2.append(enc_list[2])
- if int(enc_list[3])==0:
- zero_cnt[3] += 1
- enc_val3.append(enc_list[3])
- if int(enc_list[4])==0:
- zero_cnt[4] += 1
- enc_val4.append(enc_list[4])
- zero_cnt[0] += 1
- print(enc)
- n_cnt = n_cnt + 1
- ser.close()
- print("End")
- self.sc.axes.clear()
- #self.sc.axes.axis([0, 10, 0, 360])
- self.sc.axes.set_ylim(auto=True)
- if zero_cnt[1]<=n_cnt-1:
- self.sc.axes.plot(n_list, enc_val1)
- if zero_cnt[2]<=n_cnt-1:
- self.sc.axes.plot(n_list, enc_val2)
- if zero_cnt[3]<=n_cnt-1:
- self.sc.axes.plot(n_list, enc_val3)
- if zero_cnt[4]<=n_cnt-1:
- self.sc.axes.plot(n_list, enc_val4)
- if zero_cnt[0]!=0:
- for i in range(zero_cnt[0]):
- if i==0:
- self.tableWidget.setItem(0,0, QTableWidgetItem("data no:"))
- self.tableWidget.setItem(1,0, QTableWidgetItem("enc1:"))
- self.tableWidget.setItem(2,0, QTableWidgetItem("enc2:"))
- self.tableWidget.setItem(3,0, QTableWidgetItem("enc3:"))
- self.tableWidget.setItem(4,0, QTableWidgetItem("enc4"))
- else:
- self.tableWidget.setItem(0,i, QTableWidgetItem(str(i)))
- self.tableWidget.setItem(1,i, QTableWidgetItem(enc_val1[i-1]))
- self.tableWidget.setItem(2,i, QTableWidgetItem(enc_val2[i-1]))
- self.tableWidget.setItem(3,i, QTableWidgetItem(enc_val3[i-1]))
- self.tableWidget.setItem(4,i, QTableWidgetItem(enc_val4[i-1]))
- self.sc.axes.set_ylabel("Degrees")
- self.sc.axes.set_xlabel("Time, 100*milliseconds")
- self.sc.axes.set_title("Encoder measurements")
- self.sc.axes.set_yticks([0, 25, 50, 75, 100, 125, 150, 175])
- self.sc.axes.set_yticklabels(('0', '25', '50', '75', '100', '125', '150', '175'))
- #self.sc.axes.set_yticks([0, 50])
- #self.sc.axes.set_yticklabels(('0', '50'))
- self.sc.draw()
- self.StopAll_Handler()
- def readForce(self):
- ser=serial.Serial('COM3',9600)
- ser.write(b'255')
- ser.close()
- print("Starting reading...")
- ser=serial.Serial('COM3',9600, timeout=7)
- n_cnt = 0
- self.n_list = []
- enc_list = []
- self.enc_val1 = []
- self.enc_val2 = []
- self.enc_val3 = []
- zero_cnt = [0, 0, 0, 0]
- self._plot_ref1 = None
- self._plot_ref2 = None
- self._plot_ref3 = None
- self.show()
- while(n_cnt<=99):
- enc = ser.readline()
- enc_str = str(enc)
- if ("fs" in enc_str):
- enc_list = enc_str.split(":", 5)
- self.n_list.append(n_cnt)
- if float(enc_list[1])==0.0:
- zero_cnt[1] += 1
- self.enc_val1.append(enc_list[1])
- if float(enc_list[2])==0.0:
- zero_cnt[2] += 1
- self.enc_val2.append(enc_list[2])
- if float(enc_list[3])==0.0:
- zero_cnt[3] += 1
- self.enc_val3.append(enc_list[3])
- if n_cnt>=10:
- self.update_plot()
- self.show()
- #self.sc.refresh()
- self.sc.draw()
- print(enc)
- n_cnt = n_cnt + 1
- ser.close()
- print("End")
- self.sc.axes.clear()
- self.sc.axes.set_ylim(auto=True)
- #self.sc.axes.set_ylabel("Force, 0.01*Newtons")
- self.sc.axes.set_xlabel("Time, milliseconds", fontsize = 8)
- self.sc.axes.set_title("Force sensor measurements", fontsize = 8)
- #self.sc.axes.set_borders(bottom=0.1)
- #self.sc.axes.autoscale_view(True,True,True)
- #self.sc.axes.yticks(np.arange(0, 15, 1))
- #self.sc.axes.set(aspect=1,ylim=(0, 35))
- self.sc.axes.set_ylabel('Force, 0.01*Newtons', fontsize = 8)
- if zero_cnt[1]<=n_cnt-1:
- self.sc.axes.plot(self.n_list, self.enc_val1)
- if zero_cnt[2]<=n_cnt-1:
- self.sc.axes.plot(self.n_list, self.enc_val2)
- if zero_cnt[3]<=n_cnt-1:
- self.sc.axes.plot(self.n_list, self.enc_val3)
- for i in range(n_cnt):
- if i==0:
- self.tableWidget.setItem(0,0, QTableWidgetItem("data no:"))
- self.tableWidget.setItem(1,0, QTableWidgetItem("FS1: *0.01 N"))
- self.tableWidget.setItem(2,0, QTableWidgetItem("FS2: *0.01 N"))
- self.tableWidget.setItem(3,0, QTableWidgetItem("FS3: *0.01 N"))
- else:
- self.tableWidget.setItem(0,i, QTableWidgetItem(str(i)))
- self.tableWidget.setItem(1,i, QTableWidgetItem(self.enc_val1[i-1]))
- self.tableWidget.setItem(2,i, QTableWidgetItem(self.enc_val2[i-1]))
- self.tableWidget.setItem(3,i, QTableWidgetItem(self.enc_val3[i-1]))
- self.sc.draw()
- def Button_Right_Handler(self):
- if self.Button_Right.isChecked():
- self.led1.setValue(True)
- self.led1.repaint()
- self.sendType_1()
- self.label.setText(" Dialer Value : " + str(getValue))
- else:
- self.led1.value = False
- self.led1.repaint()
- self.sendStop_1()
- def Button_Left_Handler(self):
- if self.Button_Left.isChecked():
- self.led2.setValue(True)
- self.led2.repaint()
- self.sendType_2()
- self.label.setText(" Dialer Value : " + str(getValue))
- else:
- self.led2.value = False
- self.led2.repaint()
- self.sendStop_2()
- def Button_Top_Handler(self):
- if self.Button_Top.isChecked():
- self.led3.setValue(True)
- self.led3.repaint()
- self.sendType_3()
- self.label.setText(" Dialer Value : " + str(getValue))
- else:
- self.led3.value = False
- self.led3.repaint()
- self.sendStop_3()
- def Button_Roll_Handler(self):
- if self.Button_Roll.isChecked():
- self.led4.setValue(True)
- self.led4.repaint()
- self.sendType_4()
- self.label.setText(" Dialer Value : " + str(getValue))
- else:
- self.led4.value = False
- self.led4.repaint()
- self.sendStop_4()
- def StopAll_Handler(self):
- if self.Button_Right.isChecked():
- self.Button_Right.toggle()
- if self.Button_Left.isChecked():
- self.Button_Left.toggle()
- if self.Button_Top.isChecked():
- self.Button_Top.toggle()
- if self.Button_Roll.isChecked():
- self.Button_Roll.toggle()
- self.led1.value = False
- self.led1.repaint()
- self.led2.value = False
- self.led2.repaint()
- self.led3.value = False
- self.led3.repaint()
- self.led4.value = False
- self.led4.repaint()
- self.sendStopAll()
- def sendType_1(self):
- ser=serial.Serial('COM3',9600)
- ser.write(b'1')
- ser.close()
- time.sleep(1)
- print("act: Right")
- self.sendSerial()
- """
- time.sleep(12)
- self.led1.value = False
- self.led1.repaint()
- if self.Button_Right.isChecked():
- self.Button_Right.toggle()
- self.sendStop_1()
- """
- def sendType_2(self):
- ser=serial.Serial('COM3',9600)
- ser.write(b'2')
- ser.close()
- time.sleep(1)
- print("act: Left")
- self.sendSerial()
- """
- time.sleep(12)
- self.led2.value = False
- self.led2.repaint()
- if self.Button_Left.isChecked():
- self.Button_Left.toggle()
- self.sendStop_2()
- """
- def sendType_3(self):
- ser=serial.Serial('COM3',9600)
- ser.write(b'3')
- ser.close()
- time.sleep(1)
- print("act: Top")
- self.sendSerial()
- """
- time.sleep(12)
- self.led3.value = False
- self.led3.repaint()
- if self.Button_Top.isChecked():
- self.Button_Top.toggle()
- self.sendStop_3()
- """
- def sendType_4(self):
- ser=serial.Serial('COM3',9600)
- ser.write(b'4')
- ser.close()
- time.sleep(1)
- print("act: Roll")
- self.sendSerial()
- def sendStop_1(self):
- self.light = -1
- ser=serial.Serial('COM3',9600)
- ser.write(b'-1')
- ser.close()
- def sendStop_2(self):
- self.light = -2
- ser=serial.Serial('COM3',9600)
- ser.write(b'-2')
- ser.close()
- def sendStop_3(self):
- self.light = -3
- ser=serial.Serial('COM3',9600)
- ser.write(b'-3')
- ser.close()
- def sendStop_4(self):
- self.light = -4
- ser=serial.Serial('COM3',9600)
- ser.write(b'-4')
- ser.close()
- def sendStopAll(self):
- self.light = -5
- ser=serial.Serial('COM3',9600)
- ser.write(b'-5')
- ser.close()
- def createProgressBar(self):
- self.progressBar = QProgressBar()
- self.progressBar.setRange(0, 10000)
- self.progressBar.setValue(0)
- timer = QTimer(self)
- timer.timeout.connect(self.advanceProgressBar)
- timer.start(1000)
- if __name__ == '__main__':
- import sys
- app = QApplication(sys.argv)
- gallery = WidgetGallery()
- gallery.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement