上位机添加了调试模式,可以显示原始文本数据。更新了物料清单里面的电机购买链接
parent
3b5ff6d51c
commit
f69c3008c8
|
@ -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);
|
||||
|
|
Binary file not shown.
|
@ -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 += '<font color=\"#{1}\">{0}\t</font>'.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接收
|
||||
|
|
|
@ -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", "发送"))
|
||||
|
|
|
@ -99,7 +99,22 @@
|
|||
<height>31</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="tool_layout_2"/>
|
||||
<layout class="QHBoxLayout" name="tool_layout_2">
|
||||
<item>
|
||||
<widget class="QPushButton" name="wave_pushButton">
|
||||
<property name="text">
|
||||
<string>波形图</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="raw_pushButton">
|
||||
<property name="text">
|
||||
<string>原始数据</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
|
|
Loading…
Reference in New Issue