diff --git a/arduino/main/main.ino b/arduino/main/main.ino index 8d9684c..b21f457 100644 --- a/arduino/main/main.ino +++ b/arduino/main/main.ino @@ -135,10 +135,14 @@ void setup() { ESP.restart(); } // eeprom 读取 - -float nan = EEPROM.readFloat(0); -if(isnan(nan)) +int k,j; +j = 0; +for(k=0;k<=24;k=k+4) +{ + float nan = EEPROM.readFloat(k); + if(isnan(nan)) { + j = 1; Serial.println("frist write"); EEPROM.writeFloat(0, target_angle); delay(10);EEPROM.commit(); EEPROM.writeFloat(4, swing_up_voltage); delay(10);EEPROM.commit(); @@ -148,8 +152,9 @@ if(isnan(nan)) EEPROM.writeFloat(20, v_p_2); delay(10);EEPROM.commit(); EEPROM.writeFloat(24, v_i_2); delay(10);EEPROM.commit(); } - else - { +} +if(j == 0) +{ target_angle = EEPROM.readFloat(0); swing_up_voltage = EEPROM.readFloat(4); swing_up_angle = EEPROM.readFloat(8); @@ -159,7 +164,7 @@ if(isnan(nan)) v_i_2 = EEPROM.readFloat(24); motor.PID_velocity.P = v_p_1; motor.PID_velocity.I = v_i_1; - } +} //命令设置 comm.add("TA",do_TA); comm.add("START",do_START); @@ -364,12 +369,14 @@ if (abs(pendulum_angle) < swing_up_angle) // if angle small enough stabilize 0.5 Serial.print(pitch);Serial.print("\t"); Serial.print(kalAngleZ);Serial.print("\t"); -// Serial.print(target_voltage);Serial.print("\t"); -//// Serial.print(target_velocity);Serial.print("\t"); -// Serial.print(motor.shaft_velocity);Serial.print("\t"); -// Serial.print(target_angle);Serial.print("\t"); -// Serial.print(pendulum_angle);Serial.print("\t"); -// Serial.print(gyroZrate);Serial.print("\t"); + Serial.print(target_voltage);Serial.print("\t"); +// Serial.print(target_velocity);Serial.print("\t"); + Serial.print(motor.shaft_velocity);Serial.print("\t"); + Serial.print(motor.voltage.q);Serial.print("\t"); + + Serial.print(target_angle);Serial.print("\t"); + Serial.print(pendulum_angle);Serial.print("\t"); + Serial.print(gyroZrate);Serial.print("\t"); Serial.print("\r\n"); #endif // motor.move(target_velocity); diff --git a/python_gui/gui/__pycache__/main_ui.cpython-37.pyc b/python_gui/gui/__pycache__/main_ui.cpython-37.pyc index ee35059..15fecf5 100644 Binary files a/python_gui/gui/__pycache__/main_ui.cpython-37.pyc and b/python_gui/gui/__pycache__/main_ui.cpython-37.pyc differ diff --git a/python_gui/gui/main.py b/python_gui/gui/main.py index d88aae5..20ba125 100644 --- a/python_gui/gui/main.py +++ b/python_gui/gui/main.py @@ -1,5 +1,6 @@ import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox +from PyQt5.QtGui import QTextCursor from main_ui import * from wifi_udp import * import threading #引入并行 @@ -7,12 +8,13 @@ import numpy as np import pyqtgraph as pg import re from sharedcomponets import GUIToolKit +import copy class MyWindow(QMainWindow, Ui_MainWindow): signalColors = [GUIToolKit.RED_COLOR, GUIToolKit.BLUE_COLOR, GUIToolKit.PURPLE_COLOR, GUIToolKit.YELLOW_COLOR, GUIToolKit.MAROON_COLOR, GUIToolKit.ORANGE_COLOR, GUIToolKit.GREEN_COLOR] signalIcons = ['reddot', 'bluedot', 'purpledot', 'yellowdot', 'maroondot', 'orangedot', 'greendot'] - + textColors = ['FF5C5C','398AD9','5BEC8D','FD42AC','FF33FF','4B8200','DE87B8'] def __init__(self, parent=None): super(MyWindow, self).__init__(parent) self.setupUi(self) @@ -23,8 +25,6 @@ class MyWindow(QMainWindow, Ui_MainWindow): # self.CreateItems() # 设置信号与槽 self.CreateSignalSlot() - - # 设置信号与槽 def CreateSignalSlot(self): self.horizontalSlider_1.valueChanged.connect(self.horizontalSlider_1_valueChanged) @@ -41,6 +41,25 @@ class MyWindow(QMainWindow, Ui_MainWindow): self.VI1_pushButton.clicked.connect(self.VI1_pushButton_clicked) self.VP2_pushButton.clicked.connect(self.VP2_pushButton_clicked) self.VI2_pushButton.clicked.connect(self.VI2_pushButton_clicked) + + self.raw_pushButton.clicked.connect(self.raw_pushButton_clicked) + self.wave_pushButton.clicked.connect(self.wave_pushButton_clicked) + def raw_pushButton_clicked(self): + self.change_state = 1 + self.stackedWidget.setCurrentIndex(1) + # for i in range(self.gridLayout.count()): + # self.gridLayout.removeWidget(self.gridLayout.itemAt(i).widget()) + # self.gridLayout.addWidget(self.raw_line) + + def wave_pushButton_clicked(self): + self.change_state = 0 + self.stackedWidget.setCurrentIndex(0) + # for i in range(self.gridLayout.count()): + # self.gridLayout.removeWidget(self.gridLayout.itemAt(i).widget()) + # + # + # self.gridLayout.addWidget(self.plotWidget) + # 设置实例 def CreateItems(self): # 定时器-绘图刷新 @@ -54,7 +73,9 @@ class MyWindow(QMainWindow, Ui_MainWindow): # wifi变量 self.wifi_recv_flag = 0 self.close_flag = 1 + self.change_state = 0 self.re_item = [] + self.raw_roll = 0 def plot_init(self): # 绘图对象 pg.setConfigOptions(antialias=True) @@ -81,8 +102,16 @@ class MyWindow(QMainWindow, Ui_MainWindow): self.signalPlotFlags.append(True) # add callback checkBox.stateChanged.connect(self.signalPlotFlagUpdate) - self.gridLayout.addWidget(self.plotWidget) + self.stackedWidget = QtWidgets.QStackedWidget() + self.gridLayout.addWidget(self.stackedWidget) + self.raw_line = QtWidgets.QTextEdit() + self.raw_line.setStyleSheet('background: rgb(0, 0, 0)') + self.stackedWidget.addWidget(self.plotWidget) + self.stackedWidget.addWidget(self.raw_line) self.tool_layout.addWidget(self.controlPlotWidget) + + + # checkbox def signalPlotFlagUpdate(self): for i, (checkBox, plotFlag) in enumerate(zip(self.controlPlotWidget.signalCheckBox, self.signalPlotFlags)): @@ -178,24 +207,32 @@ class MyWindow(QMainWindow, Ui_MainWindow): recv_data = recv_data.split(',') """处理接受的信息""" # print(recv_data) + self.re_text = '' for i, data in enumerate(recv_data): if self.signalPlotFlags[i]: - self.re_item.append(''.join(re.split(r'[^A-Za-z]', data))) + # self.re_item.append(''.join(re.split(r'[^A-Za-z]', data))) data = data.replace(self.re_item[i],'') - - self.signalDataArrays[i] = np.roll(self.signalDataArrays[i], -1) - self.signalDataArrays[i][-1] = data - + if self.change_state: + self.re_text += '{0}\t'.format(data,self.textColors[i]) + else: + self.signalDataArrays[i] = np.roll(self.signalDataArrays[i], -1) + self.signalDataArrays[i][-1] = data def update_plot(self): if self.wifi_recv_flag: - for i, plotFlag in enumerate(self.signalPlotFlags): - if plotFlag: - self.signalPlots[i].setData(self.timeArray, self.signalDataArrays[i]) - self.signalPlots[i].updateItems() - self.signalPlots[i].sigPlotChanged.emit(self.signalPlots[i]) + if self.change_state: + self.raw_line.append(self.re_text) + if self.raw_roll: + self.raw_line.moveCursor(QTextCursor.End) + else: + for i, plotFlag in enumerate(self.signalPlotFlags): + if plotFlag: + self.signalPlots[i].setData(self.timeArray, self.signalDataArrays[i]) + self.signalPlots[i].updateItems() + self.signalPlots[i].sigPlotChanged.emit(self.signalPlots[i]) def closeEvent(self, a0: QtGui.QCloseEvent) -> None: print("关闭") + self.udp.send_message('START') self.close_flag = 0 self.udp.udpClientSocket.close() @@ -247,7 +284,10 @@ class ControlPlotPanel(QtWidgets.QWidget): self.signalCheckBox.append(checkBox) self.horizontalLayout1.addWidget(checkBox) def zoomAllPlot(self): - self.controlledPlot.plotWidget.enableAutoRange() + if self.controlledPlot.change_state: + self.controlledPlot.raw_roll = ~self.controlledPlot.raw_roll + else: + self.controlledPlot.plotWidget.enableAutoRange() def wifi_recv_open_pushButton_clicked(self): if self.controlledPlot.wifi_recv_flag == 0: # 打开wifi接收 diff --git a/python_gui/gui/main_ui.py b/python_gui/gui/main_ui.py index 0c92d07..5929b95 100644 --- a/python_gui/gui/main_ui.py +++ b/python_gui/gui/main_ui.py @@ -54,6 +54,12 @@ class Ui_MainWindow(object): self.tool_layout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_6) self.tool_layout_2.setContentsMargins(0, 0, 0, 0) self.tool_layout_2.setObjectName("tool_layout_2") + self.wave_pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget_6) + self.wave_pushButton.setObjectName("wave_pushButton") + self.tool_layout_2.addWidget(self.wave_pushButton) + self.raw_pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget_6) + self.raw_pushButton.setObjectName("raw_pushButton") + self.tool_layout_2.addWidget(self.raw_pushButton) self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget) self.groupBox_3.setGeometry(QtCore.QRect(10, 10, 291, 381)) self.groupBox_3.setObjectName("groupBox_3") @@ -354,6 +360,8 @@ class Ui_MainWindow(object): self.wifi_IP_lineEdit.setText(_translate("MainWindow", "192.168.4.2")) self.wifi_config_pushButton.setText(_translate("MainWindow", "设置")) self.groupBox_2.setTitle(_translate("MainWindow", "可视化图表")) + self.wave_pushButton.setText(_translate("MainWindow", "波形图")) + self.raw_pushButton.setText(_translate("MainWindow", "原始数据")) self.groupBox_3.setTitle(_translate("MainWindow", "command命令")) self.wifi_command_pushButton_1.setText(_translate("MainWindow", "发送")) self.wifi_command_pushButton_2.setText(_translate("MainWindow", "发送")) diff --git a/python_gui/gui/main_ui.ui b/python_gui/gui/main_ui.ui index 11123cc..ed57e99 100644 --- a/python_gui/gui/main_ui.ui +++ b/python_gui/gui/main_ui.ui @@ -99,7 +99,22 @@ 31 - + + + + + 波形图 + + + + + + + 原始数据 + + + + diff --git a/物料清单.xlsx b/物料清单.xlsx index 94c4650..fdf5b1a 100644 Binary files a/物料清单.xlsx and b/物料清单.xlsx differ