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