From c737ec79d478229d2722c4a08c48f28445c14906 Mon Sep 17 00:00:00 2001 From: Robofish <1683502971@qq.com> Date: Thu, 19 Jun 2025 23:42:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=89=88MRobotv1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes MR_Tool.py | 2339 --------------------------- MRobot.iss | 17 + MRobot.py | 1264 +++++++++++++-- MRobot_old.py | 719 -------- README.md | 34 +- User_code/.DS_Store | Bin 6148 -> 6148 bytes User_code/bsp/describe.csv | 2 + User_code/component/describe.csv | 1 + User_code/device/describe.csv | 1 + User_code/module/dependencies.csv | 5 + User_code/module/describe.csv | 0 User_code/task/init.c.template | 14 +- User_code/task/task.c.template | 22 +- User_code/task/user_task.c.template | 4 +- User_code/task/user_task.h.template | 61 +- fluentui.py | 168 -- img/.DS_Store | Bin 6148 -> 6148 bytes img/M.ico | Bin 34573 -> 20389 bytes img/M2.ico | Bin 0 -> 34573 bytes img/m1.png | Bin 0 -> 575880 bytes mech_lib/README.md | 1 + pngico.py | 50 +- polynomial.py | 286 ---- src/freertos.c | 131 -- 25 files changed, 1298 insertions(+), 3821 deletions(-) delete mode 100644 MR_Tool.py create mode 100644 MRobot.iss delete mode 100644 MRobot_old.py create mode 100644 User_code/bsp/describe.csv create mode 100644 User_code/component/describe.csv create mode 100644 User_code/device/describe.csv create mode 100644 User_code/module/dependencies.csv create mode 100644 User_code/module/describe.csv delete mode 100644 fluentui.py create mode 100644 img/M2.ico create mode 100644 img/m1.png create mode 100644 mech_lib/README.md delete mode 100644 polynomial.py delete mode 100644 src/freertos.c diff --git a/.DS_Store b/.DS_Store index e09c1581539dc7daf1f7ed0da0b21dd7edb272df..3adcc36f2cce09f25063cfaeecb7d117447e41d2 100644 GIT binary patch literal 8196 zcmeHL&2G~`5S~o}afpf{0iqHYOI#yJ)09#np^!F*O2DBh<-m`Lk$2X+^Lcl^ogHUPM65A%=7?sA$iT&Asfa42 z@Ns@km5l1S1j&G>pksT1jl0s6uI|tbXa+O`ngPv#X5jB&0Pk#Gj6>f0a#Yuv0nNaF z$pDWJCN3`PN=~E{p#zmj0U&ee76onb=O5DK9guY;CsLvZg-Ix+gff+4FqJzn3CDO{ z=})ATaAIO+JV(vUREEM->cLE*POL7at~CRifoTSK?w+MNxAaCQ zipHbXb}(uU+Jj-(X!jrRyY(RO?1OgO-f+7kt8{)j@CR+z@Ad`2b-GY_c;EG%VAKeP zz7q;;OAZ(XqhOV0$K!>iYT2BhzrI&C$4k{p*{ofw?d=te3zx6nShJpbJAUvAD@S1} z4AG3d|5m?7OWEv%9nZ$<_?YT?*6RCS;BTRaKOj%HX_c0#Nq4D5%{WP!Dm0=SV1URj zb!eL`Y=ld8T%SJUp*JHNHl=^u^ww&NWwW|i`AvGK>`JhDhVIZBI9jIwKQGNq1-Bm} zTou7>ADDr{SgCFc=Z-NfX9~y$YJhoM3Mq{53WKZ1Fa@!?@0h70lzEfb_n8>N5;i$$ zR?!O}qgI`ZAy;v5L#(q6PCR&0AJ6F0bLz%d%;!(6xCi7Gtm|Ozlta(wjUi?b7&!C0 zzy)B|6?3K`;j=LxFJR}Ibc-RrDMZaFY0;$KjH2?qr delta 399 zcmZp1XmOa}FDlHyz`)4BAi%(o$56sh%8<#R$561ba2or>2Hwr=94s7+!jp{zG>v6} z>h%7D0g%POzzkHG%aHDwlb@WFlb-|>0UE*B4W!|!Cie;4m|Q8S!^ij&MfkRm8boLw z%)H6`!kWB58yNZEB9+3byy+;~RtxL$Is!!yy0k@9K_W=HVnuX$*Q4l~E~07-5`pUi zvY8o*8HyN^(cBL5Azanu_ae^?Sr|frDpMJX&{Tqa30DbZ!_`fe7CXj?;0cTCa)Vq9 Y4Uvt7SC}@lOMGLQEGn*zDshns0BT~9>i_@% diff --git a/MR_Tool.py b/MR_Tool.py deleted file mode 100644 index 29bf82c..0000000 --- a/MR_Tool.py +++ /dev/null @@ -1,2339 +0,0 @@ -import sys -import os -import numpy as np -import pandas as pd -import requests -import webbrowser -import serial -import serial.tools.list_ports -from PyQt5.QtWidgets import ( - QApplication, QWidget, QLabel, QPushButton, QTextEdit, QVBoxLayout, - QHBoxLayout, QStackedWidget, QSizePolicy, QFrame, QGraphicsDropShadowEffect, - QSpinBox, QTableWidget, QTableWidgetItem, QFileDialog, QComboBox, QMessageBox, QHeaderView, - QGroupBox, QGridLayout, QLineEdit, QTextBrowser, QCheckBox -) -from PyQt5.QtGui import QPixmap, QFont, QIcon, QPainter, QPen, QColor -from PyQt5.QtCore import Qt, QTimer, QPointF, pyqtSlot -import matplotlib -from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas -from matplotlib.figure import Figure -from PyQt5.QtCore import pyqtSignal, pyqtSlot -from PyQt5.QtWebEngineWidgets import QWebEngineView # 新增 -from PyQt5.QtCore import QUrl -from PyQt5.QtCore import QThread -from PyQt5.QtWebEngineWidgets import QWebEngineProfile -from PyQt5.QtWidgets import QFileDialog -from PyQt5.QtWebEngineWidgets import QWebEngineView -from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile, QWebEnginePage -from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage -from PyQt5.QtWidgets import QSplashScreen -from PyQt5.QtCore import Qt, QTimer -from PyQt5.QtGui import QPixmap - - -def resource_path(relative_path): - """兼容PyInstaller打包后资源路径""" - if hasattr(sys, '_MEIPASS'): - return os.path.join(sys._MEIPASS, relative_path) - return os.path.join(os.path.abspath("."), relative_path) - -# --------- 主页 --------- -class HomePage(QWidget): - def __init__(self): - super().__init__() - layout = QVBoxLayout(self) - layout.setContentsMargins(60, 60, 60, 60) - layout.setSpacing(32) - self.setStyleSheet(""" - QWidget { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fbfd, stop:1 #eaf6fb); - border-radius: 18px; - } - """) - - # 欢迎标题 - title = QLabel("欢迎来到 MRobot 工具箱!") - title.setFont(QFont("微软雅黑", 26, QFont.Bold)) - title.setAlignment(Qt.AlignCenter) - title.setStyleSheet("color: #2980b9; letter-spacing: 3px;") - layout.addWidget(title) - # 设置高度 - title.setFixedHeight(120) - - # 分割线 - line = QFrame() - line.setFrameShape(QFrame.HLine) - line.setFrameShadow(QFrame.Sunken) - line.setStyleSheet("color: #d6eaf8; background: #d6eaf8; min-height: 2px;") - layout.addWidget(line) - - # 介绍内容 - desc = QLabel( - "🤖 本工具箱由青岛理工大学(QUT)机器人战队开发,\n" - "涵盖沧溟(Robocon)与MOVE(Robomaster)两支队伍。\n\n" - "集成了常用小工具与助手功能,持续更新中ing!\n" - "👉 可通过左侧选择不同模块,助力更高效的机器人开发,\n" - "节约开发时间,减少繁琐操作。\n\n" - "欢迎反馈建议,共同完善工具箱!" - ) - desc.setFont(QFont("微软雅黑", 16)) - desc.setAlignment(Qt.AlignCenter) - desc.setStyleSheet("color: #34495e;") - desc.setWordWrap(True) - layout.addWidget(desc) - - # 作者&版本信息 - info = QLabel( - "作者: QUT RMer & RCer   |   " - "版本: 0.0.2   |   " - "联系方式: QQ群 : 857466609" - ) - info.setFont(QFont("微软雅黑", 14)) - info.setAlignment(Qt.AlignCenter) - info.setStyleSheet("color: #7f8c8d; margin-top: 24px;") - info.setFixedHeight(100) # 修改为固定高度 - layout.addWidget(info) - - # 页脚 - footer = QLabel("© 2025 MRobot. 保留所有权利。") - footer.setFont(QFont("微软雅黑", 12)) - footer.setAlignment(Qt.AlignCenter) - footer.setStyleSheet("color: #b2bec3; margin-top: 18px;") - footer.setFixedHeight(100) # 修改为固定高度 - layout.addWidget(footer) - -# --------- 功能一:多项式拟合工具页面 --------- -class PolyFitApp(QWidget): - def __init__(self): - super().__init__() - self.setFont(QFont("微软雅黑", 15)) - self.data_x = [] - self.data_y = [] - self.last_coeffs = None - self.last_xmin = None - self.last_xmax = None - - # 统一背景和边框 - self.setStyleSheet(""" - QWidget { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - border-radius: 16px; - border: 1px solid #d6eaf8; - } - """) - - main_layout = QHBoxLayout(self) - main_layout.setContentsMargins(24, 24, 24, 24) - main_layout.setSpacing(24) - left_layout = QVBoxLayout() - left_layout.setSpacing(18) - right_layout = QVBoxLayout() - right_layout.setSpacing(18) - main_layout.addLayout(left_layout, 0) - main_layout.addLayout(right_layout, 1) - - # 标题 - title = QLabel("曲线拟合工具") - # title.setFont(QFont("微软雅黑", 2, QFont.Bold)) - # 设置文字大小 - title.setFont(QFont("微软雅黑", 14, QFont.Bold)) - title.setAlignment(Qt.AlignCenter) - title.setStyleSheet("color: #2980b9; letter-spacing: 2px;") - left_layout.addWidget(title) - - # 数据表 - self.table = QTableWidget(0, 2) - self.table.setFont(QFont("Consolas", 16)) - self.table.setHorizontalHeaderLabels(["x", "y"]) - self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) - self.table.setSelectionBehavior(QTableWidget.SelectRows) - self.table.setStyleSheet(""" - QTableWidget { - background: #f8fbfd; - border-radius: 10px; - border: 1px solid #d6eaf8; - font-size: 16px; - } - QHeaderView::section { - background-color: #eaf6fb; - color: #2980b9; - font-size: 16px; - font-weight: bold; - border: 1px solid #d6eaf8; - height: 36px; - } - """) - self.table.setMinimumHeight(200) # 设置最小高度 - left_layout.addWidget(self.table, stretch=1) # 让表格尽量撑大 - - # 添加/删除行 - btn_row = QHBoxLayout() - self.add_row_btn = QPushButton("添加数据") - self.add_row_btn.setFont(QFont("微软雅黑", 20, QFont.Bold)) - self.add_row_btn.setMinimumHeight(44) - self.add_row_btn.clicked.connect(self.add_point_row) - self.del_row_btn = QPushButton("删除选中行") - self.del_row_btn.setFont(QFont("微软雅黑", 20, QFont.Bold)) - self.del_row_btn.setMinimumHeight(44) - self.del_row_btn.clicked.connect(self.delete_selected_rows) - for btn in [self.add_row_btn, self.del_row_btn]: - btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2980b9; - border-radius: 20px; - font-size: 20px; - font-weight: 600; - padding: 10px 0; - border: 1px solid #d6eaf8; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 1.5px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 1.5px solid #a4cbe3; - } - """) - btn_row.addWidget(self.add_row_btn) - btn_row.addWidget(self.del_row_btn) - left_layout.addLayout(btn_row) - - # 导入/导出 - file_btn_row = QHBoxLayout() - self.import_btn = QPushButton("导入Excel文件") - self.import_btn.setFont(QFont("微软雅黑", 18, QFont.Bold)) - self.import_btn.setMinimumHeight(44) - self.import_btn.clicked.connect(self.load_excel) - self.export_btn = QPushButton("导出Excel文件") - self.export_btn.setFont(QFont("微软雅黑", 18, QFont.Bold)) - self.export_btn.setMinimumHeight(44) - self.export_btn.clicked.connect(self.export_excel_and_plot) - for btn in [self.import_btn, self.export_btn]: - btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2980b9; - border-radius: 20px; - font-size: 20px; - font-weight: 600; - padding: 10px 0; - border: 1px solid #d6eaf8; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 1.5px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 1.5px solid #a4cbe3; - } - """) - file_btn_row.addWidget(self.import_btn) - file_btn_row.addWidget(self.export_btn) - left_layout.addLayout(file_btn_row) - - # 阶数选择 - param_layout = QHBoxLayout() - label_order = QLabel("多项式阶数:") - # 文字居中 - label_order.setAlignment(Qt.AlignCenter) - # 文字加粗 - label_order.setStyleSheet("color: #2980b9;") - param_layout.addWidget(label_order) - self.order_spin = QSpinBox() - self.order_spin.setFont(QFont("微软雅黑", 18)) - self.order_spin.setRange(1, 10) - self.order_spin.setValue(2) - self.order_spin.setStyleSheet(""" - QSpinBox { - background: #f8fbfd; - border-radius: 10px; - border: 1px solid #d6eaf8; - font-size: 18px; - padding: 4px 12px; - } - """) - param_layout.addWidget(self.order_spin) - left_layout.addLayout(param_layout) - - # 拟合按钮 - self.fit_btn = QPushButton("拟合并显示") - self.fit_btn.setFont(QFont("微软雅黑", 20, QFont.Bold)) - self.fit_btn.setMinimumHeight(48) - self.fit_btn.clicked.connect(self.fit_and_plot) - self.fit_btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2980b9; - border-radius: 20px; - font-size: 22px; - font-weight: 600; - padding: 12px 0; - border: 1px solid #d6eaf8; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 1.5px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 1.5px solid #a4cbe3; - } - """) - left_layout.addWidget(self.fit_btn) - # 输出区 - self.output = QTextEdit() - self.output.setReadOnly(False) - self.output.setFont(QFont("Consolas", 16)) - self.output.setMaximumHeight(160) - self.output.setStyleSheet(""" - QTextEdit { - background: #f4f6f7; - border-radius: 8px; - border: 1px solid #d6eaf8; - font-size: 16px; - color: #2c3e50; - padding: 10px; - } - """) - # self.table.setFixedHeight(400) # 设置表格高度为260像素 - left_layout.addWidget(self.output) - # 代码生成 - code_layout = QHBoxLayout() - label_code = QLabel("输出代码格式:") - # label_code.setFont(QFont("微软雅黑", 18, QFont.Bold)) - label_code.setStyleSheet("color: #2980b9;") - code_layout.addWidget(label_code) - self.code_type = QComboBox() - self.code_type.setFont(QFont("微软雅黑", 18)) - self.code_type.addItems(["C", "C++", "Python"]) - self.code_type.setStyleSheet(""" - QComboBox { - background: #f8fbfd; - border-radius: 10px; - border: 1px solid #d6eaf8; - font-size: 18px; - padding: 4px 12px; - } - """) - code_layout.addWidget(self.code_type) - self.gen_code_btn = QPushButton("生成代码") - self.gen_code_btn.setFont(QFont("微软雅黑", 18, QFont.Bold)) - self.gen_code_btn.setMinimumHeight(44) - self.gen_code_btn.clicked.connect(self.generate_code) - self.gen_code_btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2980b9; - border-radius: 20px; - font-size: 20px; - font-weight: 600; - padding: 10px 0; - border: 1px solid #d6eaf8; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 1.5px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 1.5px solid #a4cbe3; - } - """) - code_layout.addWidget(self.gen_code_btn) - left_layout.addLayout(code_layout) - - - # 曲线区加圆角和阴影 - curve_frame = QFrame() - curve_frame.setStyleSheet(""" - QFrame { - background: #fff; - border-radius: 16px; - border: 1px solid #d6eaf8; - } - """) - curve_shadow = QGraphicsDropShadowEffect(self) - curve_shadow.setBlurRadius(24) - curve_shadow.setOffset(0, 4) - curve_shadow.setColor(Qt.gray) - curve_frame.setGraphicsEffect(curve_shadow) - curve_layout = QVBoxLayout(curve_frame) - curve_layout.setContentsMargins(10, 10, 10, 10) - self.figure = Figure(figsize=(6, 5)) - self.canvas = FigureCanvas(self.figure) - curve_layout.addWidget(self.canvas) - right_layout.addWidget(curve_frame) - - # 默认显示空坐标系 - self.figure.clear() - ax = self.figure.add_subplot(111) - # ax.set_title("拟合结果", fontsize=22, fontweight='bold') - ax.set_xlabel("x", fontsize=18) - ax.set_ylabel("y", fontsize=18) - ax.tick_params(labelsize=15) - # ax.set_title("拟合结果", fontsize=22, fontweight='bold') # 中文标题 - self.canvas.draw() - - def add_point_row(self, x_val="", y_val=""): - row = self.table.rowCount() - self.table.insertRow(row) - self.table.setItem(row, 0, QTableWidgetItem(str(x_val))) - self.table.setItem(row, 1, QTableWidgetItem(str(y_val))) - - def delete_selected_rows(self): - selected = self.table.selectionModel().selectedRows() - for idx in sorted(selected, reverse=True): - self.table.removeRow(idx.row()) - - def load_excel(self): - file, _ = QFileDialog.getOpenFileName(self, "选择Excel文件", "", "Excel Files (*.xlsx *.xls)") - if file: - try: - data = pd.read_excel(file, usecols=[0, 1]) - new_x = data.iloc[:, 0].values.tolist() - new_y = data.iloc[:, 1].values.tolist() - for x, y in zip(new_x, new_y): - self.add_point_row(x, y) - QMessageBox.information(self, "成功", "数据导入成功!") - except Exception as e: - QMessageBox.critical(self, "错误", f"读取Excel失败: {e}") - - def export_excel_and_plot(self): - file, _ = QFileDialog.getSaveFileName(self, "导出Excel文件", "", "Excel Files (*.xlsx *.xls)") - if file: - x_list, y_list = [], [] - for row in range(self.table.rowCount()): - try: - x = float(self.table.item(row, 0).text()) - y = float(self.table.item(row, 1).text()) - x_list.append(x) - y_list.append(y) - except Exception: - continue - if not x_list or not y_list: - QMessageBox.warning(self, "导出失败", "没有可导出的数据!") - return - df = pd.DataFrame({'x': x_list, 'y': y_list}) - try: - df.to_excel(file, index=False) - png_file = file - if png_file.lower().endswith('.xlsx') or png_file.lower().endswith('.xls'): - png_file = png_file.rsplit('.', 1)[0] + '.png' - else: - png_file = png_file + '.png' - self.figure.savefig(png_file, dpi=150, bbox_inches='tight') - QMessageBox.information(self, "导出成功", f"数据已成功导出到Excel文件!\n图像已导出为:{png_file}") - except Exception as e: - QMessageBox.critical(self, "导出错误", f"导出Excel或图像失败: {e}") - - def get_manual_points(self): - x_list, y_list = [], [] - for row in range(self.table.rowCount()): - try: - x = float(self.table.item(row, 0).text()) - y = float(self.table.item(row, 1).text()) - x_list.append(x) - y_list.append(y) - except Exception: - continue - return x_list, y_list - - def fit_and_plot(self): - self.data_x, self.data_y = self.get_manual_points() - try: - order = int(self.order_spin.value()) - except ValueError: - QMessageBox.warning(self, "输入错误", "阶数必须为整数!") - return - n_points = len(self.data_x) - if n_points < order + 1: - QMessageBox.warning(self, "数据不足", "数据点数量不足以拟合该阶多项式!") - return - x = np.array(self.data_x, dtype=np.float64) - y = np.array(self.data_y, dtype=np.float64) - x_min, x_max = x.min(), x.max() - if x_max - x_min == 0: - QMessageBox.warning(self, "数据错误", "所有x值都相同,无法拟合!") - return - try: - coeffs = np.polyfit(x, y, order) - except Exception as e: - QMessageBox.critical(self, "拟合错误", f"多项式拟合失败:{e}") - return - poly = np.poly1d(coeffs) - expr = "y = " + " + ".join([f"{c:.6g}*x^{order-i}" for i, c in enumerate(coeffs)]) - self.output.setPlainText(f"{expr}\n") - self.figure.clear() - ax = self.figure.add_subplot(111) - # ax.set_title("拟合结果", fontsize=22, fontweight='bold') - ax.set_xlabel("x", fontsize=18) - ax.set_ylabel("y", fontsize=18) - ax.scatter(x, y, color='red', label='Data') - x_fit = np.linspace(x_min, x_max, 200) - y_fit = poly(x_fit) - ax.plot(x_fit, y_fit, label='Fit Curve') - ax.legend() - self.canvas.draw() - self.last_coeffs = coeffs - self.last_xmin = x_min - self.last_xmax = x_max - - def generate_code(self): - if self.last_coeffs is None: - QMessageBox.warning(self, "未拟合", "请先拟合数据!") - return - coeffs = self.last_coeffs - code_type = self.code_type.currentText() - if code_type == "C": - code = self.create_c_function(coeffs) - elif code_type == "C++": - code = self.create_cpp_function(coeffs) - else: - code = self.create_py_function(coeffs) - self.output.setPlainText(code) - - def create_c_function(self, coeffs): - lines = ["#include ", "double polynomial(double x) {", " return "] - n = len(coeffs) - terms = [] - for i, c in enumerate(coeffs): - exp = n - i - 1 - if exp == 0: - terms.append(f"{c:.8g}") - elif exp == 1: - terms.append(f"{c:.8g}*x") - else: - terms.append(f"{c:.8g}*pow(x,{exp})") - lines[-1] += " + ".join(terms) + ";" - lines.append("}") - return "\n".join(lines) - - def create_cpp_function(self, coeffs): - lines = ["#include ", "double polynomial(double x) {", " return "] - n = len(coeffs) - terms = [] - for i, c in enumerate(coeffs): - exp = n - i - 1 - if exp == 0: - terms.append(f"{c:.8g}") - elif exp == 1: - terms.append(f"{c:.8g}*x") - else: - terms.append(f"{c:.8g}*pow(x,{exp})") - lines[-1] += " + ".join(terms) + ";" - lines.append("}") - return "\n".join(lines) - - def create_py_function(self, coeffs): - n = len(coeffs) - lines = ["def polynomial(x):", " return "] - terms = [] - for i, c in enumerate(coeffs): - exp = n - i - 1 - if exp == 0: - terms.append(f"{c:.8g}") - elif exp == 1: - terms.append(f"{c:.8g}*x") - else: - terms.append(f"{c:.8g}*x**{exp}") - lines[-1] += " + ".join(terms) - return "\n".join(lines) - -# --------- 功能二:下载 --------- -class DownloadPage(QWidget): - def __init__(self): - super().__init__() - self.setFont(QFont("微软雅黑", 15)) - self.setStyleSheet(""" - QWidget { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - border-radius: 18px; - border: 1px solid #d6eaf8; - } - """) - main_layout = QVBoxLayout(self) - main_layout.setContentsMargins(60, 60, 60, 60) - main_layout.setSpacing(32) - - # 标题 - title = QLabel("常用工具下载") - title.setFont(QFont("微软雅黑", 26, QFont.Bold)) - title.setAlignment(Qt.AlignCenter) - title.setStyleSheet("color: #2980b9; letter-spacing: 3px; margin-bottom: 10px;") - main_layout.addWidget(title) - - # 分割线 - line = QFrame() - line.setFrameShape(QFrame.HLine) - line.setFrameShadow(QFrame.Sunken) - line.setStyleSheet("color: #d6eaf8; background: #d6eaf8; min-height: 2px;") - main_layout.addWidget(line) - - # # 说明 - # desc = QLabel("点击下方按钮可直接跳转到常用工具或开发软件的官方下载页面:") - # desc.setFont(QFont("微软雅黑", 17)) - # desc.setAlignment(Qt.AlignCenter) - # desc.setStyleSheet("color: #34495e; margin-bottom: 18px;") - # main_layout.addWidget(desc) - - spacer = QFrame() - spacer.setFixedHeight(4) # 可根据需要调整间隔高度 - spacer.setStyleSheet("background: transparent; border: none;") - main_layout.addWidget(spacer) - - # 小工具类 - tools_tools = [ - ("Geek Uninstaller", "https://geekuninstaller.com/download", "🧹"), - ("Neat Download Manager", "https://www.neatdownloadmanager.com/index.php/en/", "⬇️"), - ("Everything", "https://www.voidtools.com/zh-cn/downloads/", "🔍"), - ("Bandizip", "https://www.bandisoft.com/bandizip/", "🗜️"), - ("PotPlayer", "https://potplayer.daum.net/", "🎬"), - ("Typora", "https://typora.io/", "📝"), - ("Git", "https://git-scm.com/download/win", "🟥"), - ("Python", "https://www.python.org/downloads/", "🐍"), - ] - tools_group = QGroupBox("常用小工具") - tools_group.setFont(QFont("微软雅黑", 14, QFont.Bold)) - tools_group.setStyleSheet(""" - QGroupBox { - border: 2px solid #b5d0ea; - border-radius: 12px; - margin-top: 16px; - background: #f8fbfd; - color: #2471a3; - padding: 10px 0 0 0; - } - QGroupBox:title { - subcontrol-origin: margin; - left: 18px; - top: -10px; - background: transparent; - padding: 0 8px; - } - """) - tools_layout = QGridLayout() - tools_layout.setSpacing(18) - tools_layout.setContentsMargins(24, 24, 24, 24) - for idx, (name, url, icon) in enumerate(tools_tools): - btn = QPushButton(f"{icon} {name}") - btn.setFont(QFont("微软雅黑", 16, QFont.Bold)) - btn.setMinimumHeight(60) - btn.setCursor(Qt.PointingHandCursor) - btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2471a3; - border-radius: 14px; - font-size: 16px; - font-weight: 600; - padding: 8px 0; - border: 1.5px solid #d6eaf8; - letter-spacing: 1px; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 2px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 2px solid #a4cbe3; - } - """) - btn.clicked.connect(lambda checked, link=url: webbrowser.open(link)) - row, col = divmod(idx, 4) - tools_layout.addWidget(btn, row, col) - tools_group.setLayout(tools_layout) - main_layout.addWidget(tools_group) - spacer = QFrame() - spacer.setFixedHeight(4) # 可根据需要调整间隔高度 - spacer.setStyleSheet("background: transparent; border: none;") - main_layout.addWidget(spacer) - - # 开发/设计软件类 - dev_tools = [ - ("STM32CubeMX", "https://www.st.com/zh/development-tools/stm32cubemx.html", "🟦"), - ("Keil MDK", "https://www.keil.com/download/product/", "🟩"), - ("Visual Studio Code", "https://code.visualstudio.com/", "🟦"), - ("CLion", "https://www.jetbrains.com/clion/download/", "🟧"), - ("MATLAB", "https://www.mathworks.com/downloads/", "🟨"), - ("SolidWorks", "https://www.solidworks.com/sw/support/downloads.htm", "🟫"), - ("Altium Designer", "https://www.altium.com/zh/altium-designer/downloads", "🟪"), - ("原神", "https://download-porter.hoyoverse.com/download-porter/2025/03/27/GenshinImpact_install_202503072011.exe?trace_key=GenshinImpact_install_ua_679d0b4e9b10", "🟫"), - ] - dev_group = QGroupBox("开发/设计软件") - dev_group.setFont(QFont("微软雅黑", 14, QFont.Bold)) - dev_group.setStyleSheet(""" - QGroupBox { - border: 2px solid #b5d0ea; - border-radius: 12px; - margin-top: 16px; - background: #f8fbfd; - color: #2471a3; - padding: 10px 0 0 0; - } - QGroupBox:title { - subcontrol-origin: margin; - left: 18px; - top: -10px; - background: transparent; - padding: 0 8px; - } - """) - dev_layout = QGridLayout() - dev_layout.setSpacing(18) - dev_layout.setContentsMargins(24, 24, 24, 24) - for idx, (name, url, icon) in enumerate(dev_tools): - btn = QPushButton(f"{icon} {name}") - btn.setFont(QFont("微软雅黑", 16, QFont.Bold)) - btn.setMinimumHeight(60) - btn.setCursor(Qt.PointingHandCursor) - btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2471a3; - border-radius: 14px; - font-size: 16px; - font-weight: 600; - padding: 8px 0; - border: 1.5px solid #d6eaf8; - letter-spacing: 1px; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 2px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 2px solid #a4cbe3; - } - """) - btn.clicked.connect(lambda checked, link=url: webbrowser.open(link)) - row, col = divmod(idx, 4) - dev_layout.addWidget(btn, row, col) - dev_group.setLayout(dev_layout) - main_layout.addWidget(dev_group) - - main_layout.addStretch(1) - - # 页脚 - footer = QLabel("如有问题或建议,欢迎反馈至QQ群:857466609") - footer.setFont(QFont("微软雅黑", 13)) - footer.setAlignment(Qt.AlignCenter) - footer.setStyleSheet("color: #b2bec3; margin-top: 18px;") - main_layout.addWidget(footer) - -# --------- 功能三:串口助手 --------- -class SerialAssistant(QWidget): - def __init__(self): - super().__init__() - self.setFont(QFont("微软雅黑", 15)) - self.ser = None - self.timer = None - self.recv_buffer = b"" - self.plot_data = {} - self.curve_colors = ["#e74c3c", "#2980b9", "#27ae60", "#f1c40f", "#8e44ad", "#16a085"] - self.data_types = ["float", "int16", "uint16", "int8", "uint8"] - self.data_type = "float" - self.data_count = 2 - self.sample_idx = 0 - - # 新增:HEX模式复选框 - self.hex_send_chk = QCheckBox("HEX发送") - self.hex_recv_chk = QCheckBox("HEX接收") - self.hex_send_chk.setFont(QFont("微软雅黑", 12)) - self.hex_recv_chk.setFont(QFont("微软雅黑", 12)) - self.hex_send_chk.setChecked(False) - self.hex_recv_chk.setChecked(False) - - # 主体布局 - main_layout = QHBoxLayout(self) - main_layout.setContentsMargins(32, 32, 32, 32) - main_layout.setSpacing(28) - - # 左侧面板 - left_panel = QVBoxLayout() - left_panel.setSpacing(20) - left_panel.setContentsMargins(0, 0, 0, 0) - - # 串口配置区 - config_group = QGroupBox("串口配置") - config_group.setFont(QFont("微软雅黑", 14, QFont.Bold)) - config_group.setStyleSheet(""" - QGroupBox { - border: 2px solid #b5d0ea; - border-radius: 12px; - margin-top: 12px; - background: #f8fbfd; - color: #2471a3; - padding: 8px 0 0 0; - } - QGroupBox:title { - subcontrol-origin: margin; - left: 16px; - top: -8px; - background: transparent; - padding: 0 8px; - } - """) - config_layout = QGridLayout() - config_layout.setSpacing(12) - config_layout.setContentsMargins(16, 16, 16, 16) - config_layout.addWidget(QLabel("串口号:"), 0, 0) - self.port_box = QComboBox() - self.port_box.setMinimumWidth(120) - self.refresh_ports() - config_layout.addWidget(self.port_box, 0, 1) - config_layout.addWidget(QLabel("波特率:"), 1, 0) - self.baud_box = QComboBox() - self.baud_box.addItems(["9600", "115200", "57600", "38400", "19200", "4800"]) - self.baud_box.setCurrentText("115200") - config_layout.addWidget(self.baud_box, 1, 1) - self.refresh_btn = QPushButton("刷新串口") - self.refresh_btn.clicked.connect(self.refresh_ports) - self.refresh_btn.setStyleSheet(self._btn_style()) - config_layout.addWidget(self.refresh_btn, 2, 0) - self.open_btn = QPushButton("打开串口") - self.open_btn.setCheckable(True) - self.open_btn.clicked.connect(self.toggle_serial) - self.open_btn.setStyleSheet(self._btn_style("#27ae60")) - config_layout.addWidget(self.open_btn, 2, 1) - config_group.setLayout(config_layout) - left_panel.addWidget(config_group) - - # 数据协议配置区 - proto_group = QGroupBox("数据协议配置") - proto_group.setFont(QFont("微软雅黑", 14, QFont.Bold)) - proto_group.setStyleSheet(config_group.styleSheet()) - proto_layout = QHBoxLayout() - proto_layout.setSpacing(18) - proto_layout.setContentsMargins(16, 16, 16, 16) - proto_layout.addWidget(QLabel("数据数量:")) - self.data_count_spin = QSpinBox() - self.data_count_spin.setRange(1, 16) - self.data_count_spin.setValue(self.data_count) - self.data_count_spin.setFixedWidth(80) - self.data_count_spin.valueChanged.connect(self.apply_proto_config) - proto_layout.addWidget(self.data_count_spin) - proto_layout.addSpacing(18) - proto_layout.addWidget(QLabel("数据类型:")) - self.data_type_box = QComboBox() - self.data_type_box.addItems(self.data_types) - self.data_type_box.setCurrentText(self.data_type) - self.data_type_box.setFixedWidth(100) - self.data_type_box.currentTextChanged.connect(self.apply_proto_config) - proto_layout.addWidget(self.data_type_box) - # proto_layout.addStretch(1) - proto_group.setLayout(proto_layout) - left_panel.addWidget(proto_group) - - # 发送数据区美化 - send_group = QGroupBox("发送数据") - send_group.setFont(QFont("微软雅黑", 14, QFont.Bold)) - send_group.setStyleSheet(""" - QGroupBox { - border: 2px solid #b5d0ea; - border-radius: 12px; - margin-top: 12px; - background: #f8fbfd; - color: #2471a3; - padding: 8px 0 0 0; - } - QGroupBox:title { - subcontrol-origin: margin; - left: 16px; - top: -8px; - background: transparent; - padding: 0 8px; - } - """) - send_layout = QVBoxLayout() - send_layout.setSpacing(16) - send_layout.setContentsMargins(18, 18, 18, 18) - - # 输入框(多行) - self.send_edit = QTextEdit() - self.send_edit.setFont(QFont("Consolas", 18)) - self.send_edit.setPlaceholderText("输入要发送的数据,可多行(支持HEX/文本)...") - self.send_edit.setMinimumHeight(140) - self.send_edit.setMaximumHeight(220) - self.send_edit.setStyleSheet(""" - QTextEdit { - background: #f8fbfd; - border-radius: 12px; - border: 2px solid #d6eaf8; - font-size: 18px; - padding: 14px 20px; - } - """) - send_layout.addWidget(self.send_edit) - - # HEX复选框和按钮行 - row1 = QHBoxLayout() - row1.setSpacing(24) - self.hex_send_chk.setStyleSheet(""" - QCheckBox { - color: #2471a3; - font-size: 15px; - } - QCheckBox::indicator { - width: 22px; - height: 22px; - } - QCheckBox::indicator:checked { - background-color: #2980b9; - border: 1.5px solid #2980b9; - } - QCheckBox::indicator:unchecked { - background-color: #fff; - border: 1.5px solid #b5d0ea; - } - """) - self.hex_recv_chk.setStyleSheet(self.hex_send_chk.styleSheet()) - row1.addWidget(self.hex_send_chk) - row1.addWidget(self.hex_recv_chk) - row1.addStretch(1) - send_layout.addLayout(row1) - - # 发送和持续发送按钮+频率(优化为“每秒发送次数”) - row2 = QHBoxLayout() - row2.setSpacing(18) - self.send_btn = QPushButton("发送") - self.send_btn.clicked.connect(self.send_data) - self.send_btn.setFont(QFont("微软雅黑", 16, QFont.Bold)) - self.send_btn.setFixedHeight(44) - self.send_btn.setFixedWidth(120) - self.send_btn.setStyleSheet(self._btn_style("#2980b9")) - row2.addWidget(self.send_btn) - - self.cont_send_btn = QPushButton("持续发送") - self.cont_send_btn.setCheckable(True) - self.cont_send_btn.setFont(QFont("微软雅黑", 15)) - self.cont_send_btn.setFixedHeight(44) - self.cont_send_btn.setFixedWidth(120) - self.cont_send_btn.setStyleSheet(self._btn_style("#f1c40f")) - self.cont_send_btn.clicked.connect(self.toggle_cont_send) - row2.addWidget(self.cont_send_btn) - - freq_label = QLabel(" 每秒发送次数:") - freq_label.setFont(QFont("微软雅黑", 8)) - freq_label.setFixedWidth(180) - #文本居中 - # freq_label.setAlignment(Qt.AlignRight | Qt.AlignVCenter) - row2.addWidget(freq_label) - - self.freq_input = QSpinBox() - self.freq_input.setRange(1, 1000) - self.freq_input.setValue(5) - self.freq_input.setFont(QFont("Consolas", 14)) - self.freq_input.setFixedWidth(100) - self.freq_input.setStyleSheet(""" - QSpinBox { - background: #f8fbfd; - border-radius: 8px; - border: 1px solid #d6eaf8; - font-size: 15px; - padding: 2px 8px; - } - """) - row2.addWidget(self.freq_input) - - # freq_unit = QLabel("次/秒") - # freq_unit.setFont(QFont("微软雅黑", 13)) - # freq_unit.setFixedWidth(40) - # row2.addWidget(freq_unit) - row2.addStretch(1) - send_layout.addLayout(row2) - - self.cont_send_timer = QTimer(self) - self.cont_send_timer.timeout.connect(self.send_data) - - send_group.setLayout(send_layout) - left_panel.addWidget(send_group, stretch=1) # 让发送区弹性填充 - - # 使用说明始终在最下方 - usage_group = QGroupBox("使用说明") - usage_group.setFont(QFont("微软雅黑", 13, QFont.Bold)) - usage_group.setStyleSheet(""" - QGroupBox { - border: 2px solid #b5d0ea; - border-radius: 10px; - margin-top: 10px; - background: #f8fbfd; - color: #2471a3; - padding: 6px 0 0 0; - } - QGroupBox:title { - subcontrol-origin: margin; - left: 10px; - top: -8px; - background: transparent; - padding: 0 6px; - } - """) - usage_layout = QVBoxLayout() - usage_label = QLabel( - "1. 在“数据协议配置”中选择数据数量和数据类型。\n" - "2. 下位机发送格式:\n" - " 0x55 + 数据数量(1字节) + 数据 + 校验和(1字节)\n" - " 校验和为包头到最后一个数据字节的累加和的低8位。\n" - "3. 每包数据自动绘制曲线,X轴为采样点(或时间),Y轴为各通道数据。\n" - ) - usage_label.setWordWrap(True) - usage_label.setFont(QFont("微软雅黑", 9)) - usage_layout.addWidget(usage_label) - usage_group.setLayout(usage_layout) - left_panel.addWidget(usage_group) - - # 清空按钮紧贴使用说明 - self.clear_btn = QPushButton("清空接收和曲线") - self.clear_btn.clicked.connect(self.clear_all) - self.clear_btn.setStyleSheet(self._btn_style("#e74c3c")) - self.clear_btn.setFixedHeight(38) - left_panel.addWidget(self.clear_btn) - - main_layout.addLayout(left_panel, 0) - - # 右侧面板 - right_panel = QVBoxLayout() - right_panel.setSpacing(20) - - # 接收区 - recv_group = QGroupBox("串口接收区") - recv_group.setFont(QFont("微软雅黑", 14, QFont.Bold)) - recv_group.setStyleSheet(config_group.styleSheet()) - recv_layout = QVBoxLayout() - self.recv_box = QTextEdit() - self.recv_box.setFont(QFont("Consolas", 13)) - self.recv_box.setReadOnly(True) - self.recv_box.setMinimumHeight(120) - self.recv_box.setStyleSheet(""" - QTextEdit { - background: #f8fbfd; - border-radius: 10px; - border: 1px solid #d6eaf8; - font-size: 15px; - color: #2c3e50; - padding: 8px; - } - """) - recv_layout.addWidget(self.recv_box) - recv_group.setLayout(recv_layout) - right_panel.addWidget(recv_group) - - # 曲线绘图区 - plot_frame = QFrame() - plot_frame.setStyleSheet(""" - QFrame { - background: #fff; - border-radius: 16px; - border: 1px solid #d6eaf8; - } - """) - plot_shadow = QGraphicsDropShadowEffect(self) - plot_shadow.setBlurRadius(18) - plot_shadow.setOffset(0, 4) - plot_shadow.setColor(Qt.gray) - plot_frame.setGraphicsEffect(plot_shadow) - plot_layout2 = QVBoxLayout(plot_frame) - plot_layout2.setContentsMargins(10, 10, 10, 10) - self.figure = Figure(figsize=(7, 4)) - self.canvas = FigureCanvas(self.figure) - plot_layout2.addWidget(self.canvas) - right_panel.addWidget(plot_frame, 2) - - main_layout.addLayout(right_panel, 1) - - # 定时器接收 - self.timer = QTimer(self) - self.timer.timeout.connect(self.read_serial) - - # 新增:正弦波测试定时器 - self.sine_timer = QTimer(self) - self.sine_timer.timeout.connect(self.send_sine_data) - self.sine_phase = 0 - # 默认配置 - self.apply_proto_config() - - def parse_hex_string(self, s): - """支持 0x11 0x22 33 44 格式转bytes""" - s = s.strip().replace(',', ' ').replace(';', ' ') - parts = s.split() - result = [] - for part in parts: - if part.startswith('0x') or part.startswith('0X'): - try: - result.append(int(part, 16)) - except Exception: - pass - else: - try: - result.append(int(part, 16)) - except Exception: - pass - return bytes(result) - - def send_data(self): - if self.ser and self.ser.is_open: - data = self.send_edit.toPlainText() - try: - if self.hex_send_chk.isChecked(): - # 支持 0x11 0x22 33 44 格式 - data_bytes = self.parse_hex_string(data) - if not data_bytes: - self.recv_box.append("HEX格式错误,未发送。") - return - self.ser.write(data_bytes) - self.recv_box.append(f"发送(HEX): {' '.join(['%02X'%b for b in data_bytes])}") - else: - self.ser.write(data.encode('utf-8')) - self.recv_box.append(f"发送: {data}") - except Exception as e: - self.recv_box.append(f"发送失败: {e}") - else: - self.recv_box.append("串口未打开,无法发送。") - - def toggle_cont_send(self): - if self.cont_send_btn.isChecked(): - try: - interval = int(self.freq_box.currentText()) - except Exception: - interval = 200 - self.cont_send_timer.start(interval) - self.cont_send_btn.setText("停止发送") - else: - self.cont_send_timer.stop() - self.cont_send_btn.setText("持续发送") - - def simulate_data(self): - """模拟一包数据并自动解析绘图""" - import struct - import random - # 构造协议包 - head = 0x55 - count = self.data_count - dtype = self.data_type - # 随机生成数据 - if dtype == "float": - vals = [random.uniform(-10, 10) for _ in range(count)] - data_bytes = struct.pack(f"<{count}f", *vals) - elif dtype == "int16": - vals = [random.randint(-30000, 30000) for _ in range(count)] - data_bytes = struct.pack(f"<{count}h", *vals) - elif dtype == "uint16": - vals = [random.randint(0, 65535) for _ in range(count)] - data_bytes = struct.pack(f"<{count}H", *vals) - elif dtype == "int8": - vals = [random.randint(-128, 127) for _ in range(count)] - data_bytes = struct.pack(f"<{count}b", *vals) - elif dtype == "uint8": - vals = [random.randint(0, 255) for _ in range(count)] - data_bytes = struct.pack(f"<{count}B", *vals) - else: - vals = [0] * count - data_bytes = b"\x00" * (count * self._type_size()) - # 拼包 - pkt = bytes([head, count]) + data_bytes - checksum = sum(pkt) & 0xFF - pkt += bytes([checksum]) - # 加入接收缓冲区并解析 - self.recv_buffer += pkt - self.parse_and_plot_bin() - - def _btn_style(self, color="#2980b9"): - return f""" - QPushButton {{ - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: {color}; - border-radius: 14px; - font-size: 16px; - font-weight: 600; - padding: 8px 0; - border: 1.5px solid #d6eaf8; - letter-spacing: 1px; - }} - QPushButton:hover {{ - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 2px solid #b5d0ea; - }} - QPushButton:pressed {{ - background: #e3f0fa; - color: {color}; - border: 2px solid #a4cbe3; - }} - """ - - def apply_proto_config(self): - self.data_count = self.data_count_spin.value() - self.data_type = self.data_type_box.currentText() - self.plot_data = {i: [[], []] for i in range(self.data_count)} - self.sample_idx = 0 - self.update_plot() - - def refresh_ports(self): - self.port_box.clear() - ports = serial.tools.list_ports.comports() - for port in ports: - self.port_box.addItem(port.device) - if self.port_box.count() == 0: - self.port_box.addItem("无可用串口") - - def toggle_serial(self): - if self.open_btn.isChecked(): - port = self.port_box.currentText() - baud = int(self.baud_box.currentText()) - try: - self.ser = serial.Serial(port, baud, timeout=0.1) - self.open_btn.setText("关闭串口") - self.recv_box.append(f"已打开串口 {port} @ {baud}bps") - self.timer.start(50) - except Exception as e: - self.recv_box.append(f"打开串口失败: {e}") - self.open_btn.setChecked(False) - else: - if self.ser and self.ser.is_open: - self.ser.close() - self.open_btn.setText("打开串口") - self.recv_box.append("串口已关闭") - self.timer.stop() - - def send_multi_data(self): - if self.ser and self.ser.is_open: - text = self.send_edit.text() - lines = text.split(";") - for line in lines: - if line.strip(): - try: - if self.hex_send_chk.isChecked(): - data_bytes = self.parse_hex_string(line.strip()) - self.ser.write(data_bytes) - self.recv_box.append(f"发送(HEX): {' '.join(['%02X'%b for b in data_bytes])}") - else: - self.ser.write(line.strip().encode('utf-8')) - self.recv_box.append(f"发送: {line.strip()}") - except Exception as e: - self.recv_box.append(f"发送失败: {e}") - else: - self.recv_box.append("串口未打开,无法发送。") - - def read_serial(self): - if self.ser and self.ser.is_open: - try: - data = self.ser.read_all() - if data: - if self.hex_recv_chk.isChecked(): - self.recv_box.append(f"接收(HEX): {data.hex(' ').upper()}") - else: - try: - self.recv_box.append(f"接收: {data.decode('utf-8', errors='replace')}") - except Exception: - self.recv_box.append(f"接收(HEX): {data.hex(' ').upper()}") - self.recv_buffer += data - self.parse_and_plot_bin() - except Exception as e: - self.recv_box.append(f"接收失败: {e}") - - def toggle_sine_test(self): - if self.test_btn.isChecked(): - self.test_btn.setText("停止测试") - self.sine_phase = 0 - self.sine_timer.start(80) # 80ms周期 - else: - self.test_btn.setText("测试正弦波(持续)") - self.sine_timer.stop() - - def send_sine_data(self): - import struct, math - head = 0x55 - count = self.data_count - dtype = self.data_type - t = self.sine_phase - vals = [] - for i in range(count): - # 多通道不同相位 - val = math.sin(t / 10.0 + i * math.pi / 4) * 10 - if dtype == "float": - vals.append(float(val)) - elif dtype == "int16": - vals.append(int(val * 1000)) - elif dtype == "uint16": - vals.append(int(val * 1000 + 20000)) - elif dtype == "int8": - vals.append(int(val * 10)) - elif dtype == "uint8": - vals.append(int(val * 10 + 100)) - # 打包 - if dtype == "float": - data_bytes = struct.pack(f"<{count}f", *vals) - elif dtype == "int16": - data_bytes = struct.pack(f"<{count}h", *vals) - elif dtype == "uint16": - data_bytes = struct.pack(f"<{count}H", *vals) - elif dtype == "int8": - data_bytes = struct.pack(f"<{count}b", *vals) - elif dtype == "uint8": - data_bytes = struct.pack(f"<{count}B", *vals) - else: - data_bytes = b"\x00" * (count * self._type_size()) - pkt = bytes([head, count]) + data_bytes - checksum = sum(pkt) & 0xFF - pkt += bytes([checksum]) - # 直接走接收流程模拟 - self.recv_buffer += pkt - self.parse_and_plot_bin() - # 在接收区实时显示理论值 - self.recv_box.append(f"理论: {['%.3f'%v for v in vals]}") - self.sine_phase += 1 - - def parse_and_plot_bin(self): - # 协议:0x55 + 数据数量(1B) + 数据 + 校验(1B) - min_len = 1 + 1 + self.data_count * self._type_size() + 1 - while len(self.recv_buffer) >= min_len: - idx = self.recv_buffer.find(b'\x55') - if idx == -1: - self.recv_buffer = b"" - break - if idx > 0: - self.recv_buffer = self.recv_buffer[idx:] - if len(self.recv_buffer) < min_len: - break - # 检查数量 - count = self.recv_buffer[1] - if count != self.data_count: - self.recv_buffer = self.recv_buffer[2:] - continue - data_bytes = self.recv_buffer[2:2+count*self._type_size()] - checksum = self.recv_buffer[2+count*self._type_size()] - calc_sum = (sum(self.recv_buffer[:2+count*self._type_size()])) & 0xFF - if checksum != calc_sum: - self.recv_box.append("校验和错误,丢弃包") - self.recv_buffer = self.recv_buffer[1:] - continue - # 解析数据 - values = self._unpack_data(data_bytes, count) - self.recv_box.append(f"接收: {values}") - for i, v in enumerate(values): - self.plot_data[i][0].append(self.sample_idx) - self.plot_data[i][1].append(v) - if len(self.plot_data[i][0]) > 200: - self.plot_data[i][0].pop(0) - self.plot_data[i][1].pop(0) - self.sample_idx += 1 - self.recv_buffer = self.recv_buffer[min_len:] - self.update_plot() - - def _type_size(self): - if self.data_type == "float": - return 4 - elif self.data_type in ("int16", "uint16"): - return 2 - elif self.data_type in ("int8", "uint8"): - return 1 - return 4 - - def _unpack_data(self, data_bytes, count): - import struct - fmt = { - "float": f"<{count}f", - "int16": f"<{count}h", - "uint16": f"<{count}H", - "int8": f"<{count}b", - "uint8": f"<{count}B" - }[self.data_type] - try: - return struct.unpack(fmt, data_bytes) - except Exception: - return [0] * count - - def update_plot(self): - self.figure.clear() - ax = self.figure.add_subplot(111) - ax.set_xlabel("Sample", fontsize=14) - ax.set_ylabel("Value", fontsize=14) - has_curve = False - for idx in range(self.data_count): - color = self.curve_colors[idx % len(self.curve_colors)] - x_list, y_list = self.plot_data.get(idx, ([], [])) - if x_list and y_list: - ax.plot(x_list, y_list, label=f"CH{idx+1}", color=color, linewidth=2) - has_curve = True - if has_curve: - ax.legend() - ax.grid(True, linestyle="--", alpha=0.5) - self.canvas.draw() - - def clear_all(self): - self.recv_box.clear() - self.plot_data = {i: [[], []] for i in range(self.data_count)} - self.sample_idx = 0 - self.update_plot() - -# --------- 功能四:MRobot架构生成 --------- -class GenerateMRobotCode(QWidget): - repo_ready_signal = pyqtSignal() - - def __init__(self): - super().__init__() - self.setFont(QFont("微软雅黑", 15)) - self.setStyleSheet(""" - QWidget { - background: #f8fbfd; - border-radius: 16px; - padding: 20px; - } - """) - # 变量初始化 - self.repo_dir = "MRobot_repo" - self.repo_url = "http://gitea.qutrobot.top/robofish/MRobot.git" - self.header_file_vars = {} - self.task_vars = [] - self.ioc_data = None - self.add_gitignore = False - self.auto_configure = False - self.repo_ready = False # 标志:仓库是否已准备好 - self.init_ui() - self.repo_ready_signal.connect(self.on_repo_ready) - - def showEvent(self, event): - super().showEvent(event) - if not self.repo_ready: - self.log("首次进入,正在克隆MRobot仓库...") - self.clone_repo_and_refresh() - - def clone_repo_and_refresh(self): - import threading - def do_clone(): - self.clone_repo() - self.repo_ready = True - self.ioc_data = self.find_and_read_ioc_file() - self.repo_ready_signal.emit() - threading.Thread(target=do_clone).start() - - @pyqtSlot() - def on_repo_ready(self): - self.update_freertos_status() - self.update_header_files() - self.update_task_ui() - self.log("仓库准备完成!") - - def init_ui(self): - main_layout = QVBoxLayout(self) - main_layout.setSpacing(18) - main_layout.setContentsMargins(32, 32, 32, 32) - self.setStyleSheet(""" - QWidget { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - border-radius: 16px; - } - """) - - # 顶部标题区 - title = QLabel("MRobot 架构生成工具") - title.setFont(QFont("微软雅黑", 22, QFont.Bold)) - title.setAlignment(Qt.AlignCenter) - title.setStyleSheet("color: #2980b9; letter-spacing: 2px; margin-bottom: 2px;") - main_layout.addWidget(title) - - desc = QLabel("快速生成 MRobot 项目代码,自动管理模块、任务与环境配置。") - desc.setFont(QFont("微软雅黑", 13)) - desc.setAlignment(Qt.AlignCenter) - desc.setStyleSheet("color: #34495e; margin-bottom: 8px;") - main_layout.addWidget(desc) - - # 状态与选项区 - status_opt_row = QHBoxLayout() - status_opt_row.setSpacing(24) - - # 状态区 - status_col = QVBoxLayout() - self.freertos_status_label = QLabel("FreeRTOS 状态: 检测中...") - self.freertos_status_label.setFont(QFont("微软雅黑", 12)) - self.freertos_status_label.setStyleSheet("color: #2471a3;") - status_col.addWidget(self.freertos_status_label) - status_col.addStretch(1) - status_opt_row.addLayout(status_col, 1) - - # 选项区 - option_col = QVBoxLayout() - self.gitignore_chk = QCheckBox("生成 .gitignore") - self.gitignore_chk.setFont(QFont("微软雅黑", 12)) - self.gitignore_chk.stateChanged.connect(lambda x: setattr(self, "add_gitignore", x == Qt.Checked)) - option_col.addWidget(self.gitignore_chk) - self.auto_env_chk = QCheckBox("自动环境配置") - self.auto_env_chk.setFont(QFont("微软雅黑", 12)) - self.auto_env_chk.stateChanged.connect(lambda x: setattr(self, "auto_configure", x == Qt.Checked)) - option_col.addWidget(self.auto_env_chk) - option_col.addStretch(1) - status_opt_row.addLayout(option_col, 1) - - status_opt_row.addStretch(2) - main_layout.addLayout(status_opt_row) - - # 主体分区:左侧模块选择,右侧任务管理 - body_layout = QHBoxLayout() - body_layout.setSpacing(24) - - # 左侧:模块文件选择 - left_col = QVBoxLayout() - self.header_group = QGroupBox("模块文件选择") - self.header_group.setFont(QFont("微软雅黑", 15, QFont.Bold)) - self.header_group.setStyleSheet(""" - QGroupBox { - border: 2px solid #b5d0ea; - border-radius: 12px; - margin-top: 8px; - background: #f8fbfd; - color: #2471a3; - padding: 10px 0 0 0; - } - QGroupBox:title { - subcontrol-origin: margin; - left: 18px; - top: -10px; - background: transparent; - padding: 0 8px; - } - """) - self.header_layout = QVBoxLayout(self.header_group) - self.header_layout.setSpacing(8) - left_col.addWidget(self.header_group) - left_col.addStretch(1) - body_layout.addLayout(left_col, 2) - - # 右侧:任务管理 - right_col = QVBoxLayout() - self.task_group = QGroupBox("任务管理 (FreeRTOS)") - self.task_group.setFont(QFont("微软雅黑", 15, QFont.Bold)) - self.task_group.setStyleSheet(self.header_group.styleSheet()) - self.task_layout = QVBoxLayout(self.task_group) - self.task_layout.setSpacing(8) - right_col.addWidget(self.task_group) - right_col.addStretch(1) - body_layout.addLayout(right_col, 2) - - main_layout.addLayout(body_layout) - - # 生成按钮区 - btn_row = QHBoxLayout() - btn_row.addStretch(1) - self.generate_btn = QPushButton("一键生成 MRobot 代码") - self.generate_btn.setFont(QFont("微软雅黑", 18, QFont.Bold)) - self.generate_btn.setMinimumHeight(48) - self.generate_btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2980b9; - border-radius: 20px; - font-size: 20px; - font-weight: 600; - padding: 12px 0; - border: 1px solid #d6eaf8; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 1.5px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 1.5px solid #a4cbe3; - } - """) - self.generate_btn.clicked.connect(self.generate_action) - btn_row.addWidget(self.generate_btn) - btn_row.addStretch(1) - main_layout.addLayout(btn_row) - - # 日志输出区 - self.msg_box = QTextEdit() - self.msg_box.setReadOnly(True) - self.msg_box.setFont(QFont("Consolas", 13)) - self.msg_box.setMaximumHeight(100) - self.msg_box.setStyleSheet(""" - QTextEdit { - background: #f4f6f7; - border-radius: 8px; - border: 1px solid #d6eaf8; - font-size: 15px; - color: #2c3e50; - padding: 8px; - } - """) - main_layout.addWidget(self.msg_box) - - # 页脚 - footer = QLabel("如遇问题请反馈至 QUT 机器人战队") - footer.setFont(QFont("微软雅黑", 11)) - footer.setAlignment(Qt.AlignCenter) - footer.setStyleSheet("color: #b2bec3; margin-top: 6px;") - main_layout.addWidget(footer) - - # 初始化内容 - self.update_header_files() - self.update_task_ui() - - # ...其余方法保持不变... - - def log(self, msg): - self.msg_box.append(msg) - - def clone_repo(self): - import shutil - from git import Repo - if os.path.exists(self.repo_dir): - shutil.rmtree(self.repo_dir) - try: - self.log("正在克隆仓库...") - Repo.clone_from(self.repo_url, self.repo_dir, multi_options=["--depth=1"]) - self.log("仓库克隆成功!") - except Exception as e: - self.log(f"克隆仓库失败: {e}") - - def find_and_read_ioc_file(self): - for file in os.listdir("."): - if file.endswith(".ioc"): - with open(file, "r", encoding="utf-8") as f: - return f.read() - self.log("未找到 .ioc 文件!") - return None - - def check_freertos_enabled(self): - import re - if not self.ioc_data: - return False - return bool(re.search(r"Mcu\.IP\d+=FREERTOS", self.ioc_data)) - - def update_freertos_status(self): - if self.ioc_data: - status = "已启用" if self.check_freertos_enabled() else "未启用" - else: - status = "未检测到 .ioc 文件" - self.freertos_status_label.setText(f"FreeRTOS 状态: {status}") - - def update_header_files(self): - for i in reversed(range(self.header_layout.count())): - widget = self.header_layout.itemAt(i).widget() - if widget: - widget.deleteLater() - if not self.repo_ready or not os.path.exists(self.repo_dir): - return - from collections import defaultdict - import csv - folders = ["bsp", "component", "device", "module"] - dependencies = defaultdict(list) - for folder in folders: - folder_dir = os.path.join(self.repo_dir, "User", folder) - dep_file = os.path.join(folder_dir, "dependencies.csv") - if os.path.exists(dep_file): - with open(dep_file, "r", encoding="utf-8") as f: - reader = csv.reader(f) - for row in reader: - if len(row) == 2: - dependencies[row[0]].append(row[1]) - for folder in folders: - folder_dir = os.path.join(self.repo_dir, "User", folder) - if os.path.exists(folder_dir): - group = QGroupBox(folder) - g_layout = QHBoxLayout(group) - for file in os.listdir(folder_dir): - file_base, file_ext = os.path.splitext(file) - if file_ext == ".h" and file_base != folder: - var = QCheckBox(file_base) - var.stateChanged.connect(lambda x, fb=file_base: self.handle_dependencies(fb, dependencies)) - self.header_file_vars[file_base] = var - g_layout.addWidget(var) - self.header_layout.addWidget(group) - - def handle_dependencies(self, file_base, dependencies): - if file_base in self.header_file_vars and self.header_file_vars[file_base].isChecked(): - for dep in dependencies.get(file_base, []): - dep_base = os.path.basename(dep) - if dep_base in self.header_file_vars: - self.header_file_vars[dep_base].setChecked(True) - - def update_task_ui(self): - for i in reversed(range(self.task_layout.count())): - widget = self.task_layout.itemAt(i).widget() - if widget: - widget.deleteLater() - if not self.repo_ready or not self.check_freertos_enabled(): - self.task_group.setVisible(False) - return - self.task_group.setVisible(True) - for i, (task_var, freq_var) in enumerate(self.task_vars): - row = QHBoxLayout() - name_edit = QLineEdit(task_var) - freq_spin = QSpinBox() - freq_spin.setRange(1, 1000) - freq_spin.setValue(freq_var) - del_btn = QPushButton("删除") - del_btn.clicked.connect(lambda _, idx=i: self.remove_task(idx)) - row.addWidget(name_edit) - row.addWidget(QLabel("频率:")) - row.addWidget(freq_spin) - row.addWidget(del_btn) - container = QWidget() - container.setLayout(row) - self.task_layout.addWidget(container) - add_btn = QPushButton("添加任务") - add_btn.clicked.connect(self.add_task) - self.task_layout.addWidget(add_btn) - - def add_task(self): - self.task_vars.append([f"Task_{len(self.task_vars)+1}", 100]) - self.update_task_ui() - - def remove_task(self, idx): - if 0 <= idx < len(self.task_vars): - self.task_vars.pop(idx) - self.update_task_ui() - - def copy_file_from_repo(self, src_path, dest_path): - import shutil - if src_path.startswith(self.repo_dir): - full_src_path = src_path - else: - full_src_path = os.path.join(self.repo_dir, src_path.lstrip(os.sep)) - if not os.path.exists(full_src_path): - self.log(f"文件 {full_src_path} 不存在!") - return - dest_dir = os.path.dirname(dest_path) - if dest_dir and not os.path.exists(dest_dir): - os.makedirs(dest_dir, exist_ok=True) - shutil.copy(full_src_path, dest_path) - self.log(f"已复制 {full_src_path} 到 {dest_path}") - - def generate_action(self): - import threading - def task(): - self.create_directories() - if self.add_gitignore: - self.copy_file_from_repo(".gitignore", ".gitignore") - if self.ioc_data and self.check_freertos_enabled(): - self.copy_file_from_repo("src/freertos.c", os.path.join("Core", "Src", "freertos.c")) - folders = ["bsp", "component", "device", "module"] - for folder in folders: - folder_dir = os.path.join(self.repo_dir, "User", folder) - if not os.path.exists(folder_dir): - continue - for file_name in os.listdir(folder_dir): - file_base, file_ext = os.path.splitext(file_name) - if file_ext not in [".h", ".c"]: - continue - if file_base == folder: - src_path = os.path.join(folder_dir, file_name) - dest_path = os.path.join("User", folder, file_name) - self.copy_file_from_repo(src_path, dest_path) - continue - if file_base in self.header_file_vars and self.header_file_vars[file_base].isChecked(): - src_path = os.path.join(folder_dir, file_name) - dest_path = os.path.join("User", folder, file_name) - self.copy_file_from_repo(src_path, dest_path) - if self.ioc_data and self.check_freertos_enabled(): - self.modify_user_task_file() - self.generate_user_task_header() - self.generate_init_file() - self.generate_task_files() - self.log("生成完成!") - threading.Thread(target=task).start() - - def create_directories(self): - dirs = [ - "User/bsp", - "User/component", - "User/device", - "User/module", - ] - if self.ioc_data and self.check_freertos_enabled(): - dirs.append("User/task") - for d in dirs: - if not os.path.exists(d): - os.makedirs(d, exist_ok=True) - self.log(f"已创建目录: {d}") - - def generate_task_files(self): - try: - import re - template_file_path = os.path.join(self.repo_dir, "User", "task", "task.c.template") - task_dir = os.path.join("User", "task") - if not os.path.exists(template_file_path): - self.log(f"模板文件 {template_file_path} 不存在,无法生成 task.c 文件!") - return - os.makedirs(task_dir, exist_ok=True) - with open(template_file_path, "r", encoding="utf-8") as f: - template_content = f.read() - for task in self.task_vars: - if isinstance(task, (list, tuple)): - task_name = str(task[0]) - else: - task_name = str(task) - task_file_path = os.path.join(task_dir, f"{task_name.lower()}.c") - task_content = template_content.replace("{{task_name}}", task_name) - task_content = task_content.replace("{{task_function}}", task_name) - task_content = task_content.replace( - "{{task_frequency}}", f"TASK_FREQ_{task_name.upper()}" - ) - task_content = task_content.replace("{{task_delay}}", f"TASK_INIT_DELAY_{task_name.upper()}") - with open(task_file_path, "w", encoding="utf-8") as f2: - f2.write(task_content) - self.log(f"已成功生成 {task_file_path} 文件!") - except Exception as e: - self.log(f"生成 task.c 文件时出错: {e}") - - def modify_user_task_file(self): - try: - import re - template_file_path = os.path.join(self.repo_dir, "User", "task", "user_task.c.template") - generated_task_file_path = os.path.join("User", "task", "user_task.c") - if not os.path.exists(template_file_path): - self.log(f"模板文件 {template_file_path} 不存在,无法生成 user_task.c 文件!") - return - os.makedirs(os.path.dirname(generated_task_file_path), exist_ok=True) - with open(template_file_path, "r", encoding="utf-8") as f: - template_content = f.read() - task_attr_definitions = "\n".join([ - f"""const osThreadAttr_t attr_{str(task[0]).lower()} = {{ - .name = "{str(task[0])}", - .priority = osPriorityNormal, - .stack_size = 128 * 4, -}};""" - for task in self.task_vars - ]) - task_content = template_content.replace("{{task_attr_definitions}}", task_attr_definitions) - with open(generated_task_file_path, "w", encoding="utf-8") as f2: - f2.write(task_content) - self.log(f"已成功生成 {generated_task_file_path} 文件!") - except Exception as e: - self.log(f"修改 user_task.c 文件时出错: {e}") - - def generate_user_task_header(self): - try: - import re - template_file_path = os.path.join(self.repo_dir, "User", "task", "user_task.h.template") - header_file_path = os.path.join("User", "task", "user_task.h") - if not os.path.exists(template_file_path): - self.log(f"模板文件 {template_file_path} 不存在,无法生成 user_task.h 文件!") - return - os.makedirs(os.path.dirname(header_file_path), exist_ok=True) - existing_msgq_content = "" - if os.path.exists(header_file_path): - with open(header_file_path, "r", encoding="utf-8") as f: - content = f.read() - match = re.search(r"/\* USER MESSAGE BEGIN \*/\s*(.*?)\s*/\* USER MESSAGE END \*/", content, re.DOTALL) - if match: - existing_msgq_content = match.group(1).strip() - self.log("已存在的 msgq 区域内容已保留") - with open(template_file_path, "r", encoding="utf-8") as f: - template_content = f.read() - thread_definitions = "\n".join([f" osThreadId_t {str(task[0]).lower()};" for task in self.task_vars]) - msgq_definitions = existing_msgq_content if existing_msgq_content else " osMessageQueueId_t default_msgq;" - freq_definitions = "\n".join([f" float {str(task[0]).lower()};" for task in self.task_vars]) - last_up_time_definitions = "\n".join([f" uint32_t {str(task[0]).lower()};" for task in self.task_vars]) - task_attr_declarations = "\n".join([f"extern const osThreadAttr_t attr_{str(task[0]).lower()};" for task in self.task_vars]) - task_function_declarations = "\n".join([f"void {str(task[0])}(void *argument);" for task in self.task_vars]) - task_frequency_definitions = "\n".join([ - f"#define TASK_FREQ_{str(task[0]).upper()} ({int(task[1])}u)" - for task in self.task_vars - ]) - task_init_delay_definitions = "\n".join([f"#define TASK_INIT_DELAY_{str(task[0]).upper()} (0u)" for task in self.task_vars]) - task_handle_definitions = "\n".join([f" osThreadId_t {str(task[0]).lower()};" for task in self.task_vars]) - header_content = template_content.replace("{{thread_definitions}}", thread_definitions) - header_content = header_content.replace("{{msgq_definitions}}", msgq_definitions) - header_content = header_content.replace("{{freq_definitions}}", freq_definitions) - header_content = header_content.replace("{{last_up_time_definitions}}", last_up_time_definitions) - header_content = header_content.replace("{{task_attr_declarations}}", task_attr_declarations) - header_content = header_content.replace("{{task_function_declarations}}", task_function_declarations) - header_content = header_content.replace("{{task_frequency_definitions}}", task_frequency_definitions) - header_content = header_content.replace("{{task_init_delay_definitions}}", task_init_delay_definitions) - header_content = header_content.replace("{{task_handle_definitions}}", task_handle_definitions) - if existing_msgq_content: - header_content = re.sub( - r"/\* USER MESSAGE BEGIN \*/\s*.*?\s*/\* USER MESSAGE END \*/", - f"/* USER MESSAGE BEGIN */\n\n {existing_msgq_content}\n\n /* USER MESSAGE END */", - header_content, - flags=re.DOTALL - ) - with open(header_file_path, "w", encoding="utf-8") as f2: - f2.write(header_content) - self.log(f"已成功生成 {header_file_path} 文件!") - except Exception as e: - self.log(f"生成 user_task.h 文件时出错: {e}") - - def generate_init_file(self): - try: - import re - template_file_path = os.path.join(self.repo_dir, "User", "task", "init.c.template") - generated_file_path = os.path.join("User", "task", "init.c") - if not os.path.exists(template_file_path): - self.log(f"模板文件 {template_file_path} 不存在,无法生成 init.c 文件!") - return - os.makedirs(os.path.dirname(generated_file_path), exist_ok=True) - existing_msgq_content = "" - if os.path.exists(generated_file_path): - with open(generated_file_path, "r", encoding="utf-8") as f: - content = f.read() - match = re.search(r"/\* USER MESSAGE BEGIN \*/\s*(.*?)\s*/\* USER MESSAGE END \*/", content, re.DOTALL) - if match: - existing_msgq_content = match.group(1).strip() - self.log("已存在的消息队列区域内容已保留") - with open(template_file_path, "r", encoding="utf-8") as f: - template_content = f.read() - thread_creation_code = "\n".join([ - f" task_runtime.thread.{str(task[0]).lower()} = osThreadNew({str(task[0])}, NULL, &attr_{str(task[0]).lower()});" - for task in self.task_vars - ]) - init_content = template_content.replace("{{thread_creation_code}}", thread_creation_code) - if existing_msgq_content: - init_content = re.sub( - r"/\* USER MESSAGE BEGIN \*/\s*.*?\s*/\* USER MESSAGE END \*/", - f"/* USER MESSAGE BEGIN */\n {existing_msgq_content}\n /* USER MESSAGE END */", - init_content, - flags=re.DOTALL - ) - with open(generated_file_path, "w", encoding="utf-8") as f2: - f2.write(init_content) - self.log(f"已成功生成 {generated_file_path} 文件!") - except Exception as e: - self.log(f"生成 init.c 文件时出错: {e}") - -# --------- 功能五:零件库 --------- - -class CustomWebView(QWebEngineView): - def __init__(self, parent=None, popup_list=None): - super().__init__(parent) - self.popup_list = popup_list - self._progress_dialog = None - self.page().profile().downloadRequested.connect(self.handle_download) - self.setStyleSheet(""" - QWebEngineView { - border-radius: 12px; - background: #f8fbfd; - border: 1px solid #d6eaf8; - } - """) - - def handle_download(self, download_item): - from PyQt5.QtWidgets import QFileDialog, QProgressDialog - - # 防止重复弹窗 - if hasattr(download_item, "_handled") and download_item._handled: - return - download_item._handled = True - - suggested = download_item.suggestedFileName() - path, _ = QFileDialog.getSaveFileName(self, "保存文件", suggested) - if not path: - download_item.cancel() - return - - download_item.setPath(path) - download_item.accept() - - # 创建进度对话框 - self._progress_dialog = QProgressDialog(f"正在下载: {suggested}", "取消", 0, 100, self) - self._progress_dialog.setWindowTitle("下载进度") - self._progress_dialog.setWindowModality(Qt.WindowModal) - self._progress_dialog.setMinimumDuration(0) - self._progress_dialog.setValue(0) - self._progress_dialog.canceled.connect(download_item.cancel) - self._progress_dialog.show() - - def on_progress(received, total): - if total > 0: - percent = int(received * 100 / total) - self._progress_dialog.setValue(percent) - else: - self._progress_dialog.setValue(0) - - download_item.downloadProgress.connect(on_progress) - - def on_finished(): - self._progress_dialog.setValue(100) - self._progress_dialog.close() - if self.parent() and isinstance(self.parent(), CustomWebView): - self.parent().close() - elif self.popup_list and self in self.popup_list: - self.close() - self.popup_list.remove(self) - - download_item.finished.connect(on_finished) - - def createWindow(self, _type): - popup = CustomWebView(popup_list=self.popup_list) - popup.setAttribute(Qt.WA_DeleteOnClose) - popup.setWindowTitle("下载") - popup.resize(900, 600) - popup.show() - if self.popup_list is not None: - self.popup_list.append(popup) - return popup - -class MachineryLibrary(QWidget): - def __init__(self): - super().__init__() - self.popup_windows = [] - self.setFont(QFont("微软雅黑", 15)) - self.setStyleSheet(""" - QWidget { - background: #f8fbfd; - border-radius: 16px; - padding: 20px; - } - """) - self.init_ui() - - def init_ui(self): - main_layout = QVBoxLayout(self) - main_layout.setSpacing(18) - main_layout.setContentsMargins(32, 32, 32, 32) - - # 标题区 - title = QLabel("MRobot 零件库") - title.setFont(QFont("微软雅黑", 22, QFont.Bold)) - title.setAlignment(Qt.AlignCenter) - title.setStyleSheet("color: #2980b9; letter-spacing: 2px; margin-bottom: 2px;") - main_layout.addWidget(title) - - desc = QLabel("零件库账号:Engineer(无密码)") - desc.setFont(QFont("微软雅黑", 13)) - desc.setAlignment(Qt.AlignCenter) - desc.setStyleSheet("color: #34495e; margin-bottom: 8px;") - main_layout.addWidget(desc) - - # 加载提示 - self.loading_label = QLabel("正在加载零件库网页,请稍候...") - self.loading_label.setAlignment(Qt.AlignCenter) - self.loading_label.setFont(QFont("微软雅黑", 14)) - self.loading_label.setStyleSheet("color: #888; margin-bottom: 8px;") - main_layout.addWidget(self.loading_label) - - # 网页视图 - self.webview = CustomWebView(parent=self, popup_list=self.popup_windows) - self.webview.setAttribute(Qt.WA_TranslucentBackground, True) - self.webview.setMinimumHeight(480) - self.webview.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) - self.webview.loadFinished.connect(self.on_webview_loaded) - main_layout.addWidget(self.webview, stretch=10) - - # 刷新按钮 - btn_row = QHBoxLayout() - btn_row.addStretch(1) - self.refresh_btn = QPushButton("刷新零件库") - self.refresh_btn.setFont(QFont("微软雅黑", 13, QFont.Bold)) - self.refresh_btn.setFixedWidth(140) - self.refresh_btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2980b9; - border-radius: 14px; - font-size: 15px; - font-weight: 600; - padding: 8px 0; - border: 1.5px solid #d6eaf8; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 2px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 2px solid #a4cbe3; - } - """) - self.refresh_btn.clicked.connect(self.reload_webview) - btn_row.addWidget(self.refresh_btn) - btn_row.addStretch(1) - main_layout.addLayout(btn_row) - - # 自动加载网页 - QTimer.singleShot(200, lambda: self.webview.setUrl(QUrl("http://alist.qutrobot.top"))) - self.webview.show() - - # 定时刷新(可选,防止页面假死) - self.refresh_timer = QTimer(self) - self.refresh_timer.setInterval(100) - self.refresh_timer.timeout.connect(self.webview.update) - self.refresh_timer.start() - - def reload_webview(self): - self.loading_label.show() - self.webview.setUrl(QUrl("http://alist.qutrobot.top")) - - def on_webview_loaded(self): - self.loading_label.hide() - - def closeEvent(self, event): - self.refresh_timer.stop() - super().closeEvent(event) -# --------- 主工具箱UI --------- -class ToolboxUI(QWidget): - def __init__(self): - super().__init__() - self.setWindowTitle("MRobot 工具箱") - self.resize(1920, 1080) - self.setMinimumSize(900, 600) - self.setStyleSheet(""" - QWidget { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - border-radius: 16px; - } - """) - self.init_ui() - - def init_ui(self): - main_layout = QHBoxLayout(self) - main_layout.setContentsMargins(20, 20, 20, 20) - main_layout.setSpacing(20) - - # 左侧导航 - left_frame = QFrame() - left_frame.setFrameShape(QFrame.StyledPanel) - left_frame.setStyleSheet(""" - QFrame { - background: #f8fbfd; - border-radius: 14px; - border: 1px solid #d6eaf8; - } - """) - left_shadow = QGraphicsDropShadowEffect(self) - left_shadow.setBlurRadius(16) - left_shadow.setOffset(0, 4) - left_shadow.setColor(Qt.gray) - left_frame.setGraphicsEffect(left_shadow) - - left_layout = QVBoxLayout(left_frame) - left_layout.setSpacing(24) - left_layout.setContentsMargins(18, 18, 18, 18) - left_frame.setFixedWidth(260) - main_layout.addWidget(left_frame) - - # Logo - logo_label = QLabel() - logo_pixmap = QPixmap(resource_path("mr_tool_img/MRobot.png")) - if not logo_pixmap.isNull(): - logo_label.setPixmap(logo_pixmap.scaled(180, 80, Qt.KeepAspectRatio, Qt.SmoothTransformation)) - else: - logo_label.setText("MRobot") - logo_label.setAlignment(Qt.AlignCenter) - logo_label.setFont(QFont("Arial", 36, QFont.Bold)) - logo_label.setStyleSheet("color: #3498db;") - logo_label.setFixedHeight(120) - left_layout.addWidget(logo_label) - - # 按钮区 - self.button_names = ["主页", "曲线拟合", "Mini串口助手", "MR架构配置", "零件库", "软件指南"] - self.buttons = [] - for idx, name in enumerate(self.button_names): - btn = QPushButton(name) - btn.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) - btn.setMinimumHeight(48) - btn.setStyleSheet(""" - QPushButton { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #eaf6fb, stop:1 #d6eaf8); - color: #2980b9; - border-radius: 20px; - font-size: 22px; - font-weight: 600; - padding: 14px 0; - border: 1px solid #d6eaf8; - letter-spacing: 2px; - } - QPushButton:hover { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, - stop:0 #f8fffe, stop:1 #cfe7fa); - color: #1a6fae; - border: 1.5px solid #b5d0ea; - } - QPushButton:pressed { - background: #e3f0fa; - color: #2471a3; - border: 1.5px solid #a4cbe3; - } - """) - btn.clicked.connect(lambda checked, i=idx: self.switch_function(i)) - self.buttons.append(btn) - left_layout.addWidget(btn) - - left_layout.addStretch(1) - - # 文本输出框 - self.output_box = QTextEdit() - self.output_box.setReadOnly(True) - self.output_box.setFixedHeight(180) - self.output_box.setStyleSheet(""" - QTextEdit { - background: #f4f6f7; - border-radius: 8px; - border: 1px solid #d6eaf8; - font-size: 16px; - color: #2c3e50; - padding: 10px; - } - """) - left_layout.addWidget(self.output_box) - - # 右侧功能区 - self.stack = QStackedWidget() - self.stack.setStyleSheet(""" - QStackedWidget { - background: #fff; - border-radius: 16px; - border: 1px solid #d6eaf8; - } - """) - right_shadow = QGraphicsDropShadowEffect(self) - right_shadow.setBlurRadius(24) - right_shadow.setOffset(0, 4) - right_shadow.setColor(Qt.gray) - self.stack.setGraphicsEffect(right_shadow) - - # 功能页面注册(后续扩展只需在这里添加页面类即可) - self.page_widgets = { - 0: HomePage(), # 主页 - 1: PolyFitApp(), # 多项式拟合 - 2: SerialAssistant(), # 串口助手 - 3: GenerateMRobotCode(), # MRobot架构生成 - 4: MachineryLibrary(), # 零件库 - 5: DownloadPage(), # 下载页面 - } - for i in range(len(self.button_names)): - self.stack.addWidget(self.page_widgets[i]) - main_layout.addWidget(self.stack) - - self.output_box.append("欢迎使用 MRobot 工具箱!请选择左侧功能。") - - - - def placeholder_page(self, text): - page = QWidget() - layout = QVBoxLayout(page) - label = QLabel(text) - label.setAlignment(Qt.AlignCenter) - label.setFont(QFont("微软雅黑", 22, QFont.Bold)) - label.setStyleSheet("color: #2980b9;") - layout.addStretch(1) - layout.addWidget(label) - layout.addStretch(1) - return page - - def switch_function(self, idx): - self.stack.setCurrentIndex(idx) - self.output_box.append(f"已切换到功能:{self.button_names[idx]}") - -if __name__ == "__main__": - - from PyQt5.QtWidgets import QSplashScreen, QGraphicsDropShadowEffect - from PyQt5.QtCore import Qt, QTimer, QRect - from PyQt5.QtGui import QPixmap, QPainter, QColor, QFont, QLinearGradient, QBrush - - class CustomSplash(QSplashScreen): - def __init__(self, pixmap): - super().__init__(QPixmap(640, 400)) - self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) - self.setAttribute(Qt.WA_TranslucentBackground) - self.logo = pixmap.scaled(360, 240, Qt.KeepAspectRatio, Qt.SmoothTransformation) - self.title = "MRobot 工具箱" - self.subtitle = "欢迎使用 MRobot,正在启动中..." - self.title_color = QColor("#2471a3") - self.subtitle_color = QColor("#2980b9") - self.bg_gradient = QLinearGradient(0, 0, 0, 400) - self.bg_gradient.setColorAt(0, QColor("#f8fbfd")) - self.bg_gradient.setColorAt(1, QColor("#eaf6fb")) - self.border_color = QColor("#2980b9") - self.setFixedSize(640, 400) - # 阴影 - effect = QGraphicsDropShadowEffect(self) - effect.setBlurRadius(36) - effect.setOffset(0, 10) - effect.setColor(QColor(80, 120, 180, 80)) - self.setGraphicsEffect(effect) - - def paintEvent(self, event): - painter = QPainter(self) - painter.setRenderHint(QPainter.Antialiasing) - # 渐变背景 - painter.setBrush(QBrush(self.bg_gradient)) - painter.setPen(Qt.NoPen) - painter.drawRoundedRect(0, 0, self.width(), self.height(), 44, 44) - # 边框 - pen = painter.pen() - pen.setColor(self.border_color) - pen.setWidth(3) - painter.setPen(pen) - painter.drawRoundedRect(2, 2, self.width()-4, self.height()-4, 44, 44) - # LOGO - logo_x = (self.width() - self.logo.width()) // 2 - logo_y = 80 - painter.drawPixmap(logo_x, logo_y, self.logo) - # 主标题 - # painter.setFont(QFont("微软雅黑", 24, QFont.Bold)) - # painter.setPen(self.title_color) - # painter.drawText(QRect(0, 200, self.width(), 48), Qt.AlignCenter, self.title) - # 副标题 - painter.setFont(QFont("微软雅黑", 12)) - painter.setPen(self.subtitle_color) - painter.drawText(QRect(0, 250, self.width(), 36), Qt.AlignCenter, self.subtitle) - # 版权 - painter.setFont(QFont("微软雅黑", 10)) - painter.setPen(QColor("#b2bec3")) - painter.drawText(QRect(0, 360, self.width(), 30), Qt.AlignCenter, "© 2025 MRobot. All rights reserved.") - - app = QApplication(sys.argv) - - # 立即显示Splash - logo_pix = QPixmap(resource_path("mr_tool_img/MRobot.png")) - splash = CustomSplash(logo_pix) - splash.show() - app.processEvents() # 强制立即刷新Splash - - # 异步加载主窗口 - def load_main(): - win = ToolboxUI() - splash.finish(win) - win.show() - - QTimer.singleShot(100, load_main) - - sys.exit(app.exec_()) \ No newline at end of file diff --git a/MRobot.iss b/MRobot.iss new file mode 100644 index 0000000..450a7f2 --- /dev/null +++ b/MRobot.iss @@ -0,0 +1,17 @@ +[Setup] +AppName=MRobot +AppVersion=1.0 +DefaultDirName={userappdata}\MRobot +DefaultGroupName=MRobot +OutputDir=. +OutputBaseFilename=MRobotInstaller + +[Files] +Source: "dist\MRobot.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "img\*"; DestDir: "{app}\img"; Flags: ignoreversion recursesubdirs +Source: "User_code\*"; DestDir: "{app}\User_code"; Flags: ignoreversion recursesubdirs +Source: "mech_lib\*"; DestDir: "{app}\mech_lib"; Flags: ignoreversion recursesubdirs + +[Icons] +Name: "{group}\MRobot"; Filename: "{app}\MRobot.exe"; IconFilename: "{app}\img\M.ico" +Name: "{userdesktop}\MRobot"; Filename: "{app}\MRobot.exe"; IconFilename: "{app}\img\M.ico" \ No newline at end of file diff --git a/MRobot.py b/MRobot.py index c22b7df..ecb626e 100644 --- a/MRobot.py +++ b/MRobot.py @@ -6,121 +6,375 @@ import serial.tools.list_ports from PyQt5.QtCore import Qt, pyqtSignal, QThread from PyQt5.QtGui import QTextCursor from PyQt5.QtWidgets import ( - QApplication, QWidget, QVBoxLayout, QHBoxLayout, QGridLayout, QGroupBox, - QComboBox, QPushButton, QTextEdit, QLineEdit, QLabel, QSizePolicy, + QApplication, QWidget, QVBoxLayout, QHBoxLayout, + QSizePolicy, QFileDialog, QMessageBox, QStackedLayout ) from qfluentwidgets import ( - Theme, setTheme, FluentIcon, SwitchButton, BodyLabel, SubtitleLabel, + Theme, setTheme, FluentIcon, SwitchButton, BodyLabel, SubtitleLabel,TitleLabel, StrongBodyLabel, HorizontalSeparator, InfoBar, MessageDialog, Dialog, AvatarWidget, NavigationItemPosition, FluentWindow, NavigationAvatarWidget, - PushButton, TextEdit, LineEdit, ComboBox, ImageLabel + PushButton, TextEdit, LineEdit, ComboBox, ImageLabel, ) from qfluentwidgets import FluentIcon as FIF import requests import shutil from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QAbstractItemView, QHeaderView +from PyQt5.QtWidgets import QHeaderView from qfluentwidgets import ( - TreeWidget, InfoBar, InfoBarPosition, MessageDialog, TreeItemDelegate + TreeWidget, InfoBar, InfoBarPosition, ) from qfluentwidgets import CheckBox from qfluentwidgets import TreeWidget from PyQt5.QtCore import QThread, pyqtSignal from PyQt5.QtWidgets import QFileDialog from qfluentwidgets import ProgressBar +import zipfile +import io +import jinja2 +from PyQt5.QtWidgets import QTreeWidgetItem as TreeItem +import yaml # 确保已安装 pyyaml +import requests +from PyQt5.QtCore import Qt, QTimer +from qfluentwidgets import ( + SettingCardGroup, SettingCard, ExpandSettingCard, HyperlinkButton, PushButton, + SubtitleLabel, StrongBodyLabel, BodyLabel, HorizontalSeparator, FluentIcon, InfoBar, InfoBarPosition +) +from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout + +from qfluentwidgets import ( + SettingCardGroup, ExpandSettingCard, SubtitleLabel, BodyLabel, HorizontalSeparator, FluentIcon, InfoBar + +) +# 添加quote +from urllib.parse import quote + +from packaging.version import parse as vparse +__version__ = "1.0.0" # ===================== 页面基类 ===================== class BaseInterface(QWidget): def __init__(self, parent=None): super().__init__(parent=parent) +# ===================== 启动界面 ===================== +from qfluentwidgets import ImageLabel, TitleLabel, BodyLabel, ProgressBar, PushSettingCard, HyperlinkCard +from PyQt5.QtWidgets import QDialog, QVBoxLayout, QSpacerItem, QSizePolicy +from PyQt5.QtCore import Qt +# ...existing code... + +from qfluentwidgets import isDarkTheme # 加入主题判断 + +class SplashScreen(QDialog): + def __init__(self, parent=None): + super().__init__(parent) + # 自动适配主题 + dark = isDarkTheme() + bg_color = "#23272e" if dark else "#f7fafd" + text_color = "#e9f6ff" if dark else "#2d7d9a" + sub_color = "#b0b8c1" if dark else "#6b7b8c" + border_color = "#3a3f4b" if dark else "#e0e6ef" + + self.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog) + self.setModal(True) + self.setFixedSize(420, 260) + self.setStyleSheet(f""" + QDialog {{ + background: {bg_color}; + border-radius: 18px; + border: 1px solid {border_color}; + }} + """) + layout = QVBoxLayout(self) + layout.setContentsMargins(36, 36, 36, 36) + layout.setSpacing(18) + + layout.addSpacerItem(QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)) + + # Logo + self.logo = ImageLabel('img/MRobot.png') + self.logo.setFixedSize(220, 56) + self.logo.setAlignment(Qt.AlignCenter) + layout.addWidget(self.logo, alignment=Qt.AlignCenter) + + # 应用名 + self.title = TitleLabel("MRobot Toolbox") + self.title.setAlignment(Qt.AlignCenter) + self.title.setStyleSheet(f"font-size: 26px; font-weight: bold; color: {text_color};") + layout.addWidget(self.title) + + # 状态文本 + self.status = BodyLabel("正在启动...") + self.status.setAlignment(Qt.AlignCenter) + self.status.setStyleSheet(f"font-size: 15px; color: {sub_color};") + layout.addWidget(self.status) + + # 进度条 + self.progress = ProgressBar() + self.progress.setRange(0, 100) + self.progress.setValue(0) + self.progress.setFixedHeight(10) + layout.addWidget(self.progress) + + layout.addSpacerItem(QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)) + + def set_status(self, text, value=None): + self.status.setText(text) + if value is not None: + self.progress.setValue(value) + # ===================== 首页界面 ===================== class HomeInterface(BaseInterface): def __init__(self, parent=None): super().__init__(parent=parent) self.setObjectName("homeInterface") - layout = QVBoxLayout() - layout.setContentsMargins(60, 60, 60, 60) - layout.setSpacing(32) - self.setLayout(layout) - # 顶部logo和欢迎区 - top_layout = QHBoxLayout() + # 外层居中布局 + outer_layout = QVBoxLayout(self) + outer_layout.setContentsMargins(0, 0, 0, 0) + outer_layout.setSpacing(0) + outer_layout.addStretch() + + # 直接用布局和控件,无卡片 + content_layout = QVBoxLayout() + content_layout.setSpacing(24) + content_layout.setContentsMargins(48, 48, 48, 48) + + # Logo logo = ImageLabel('img/MRobot.png') - logo.setFixedSize(260, 80) - top_layout.addWidget(logo, alignment=Qt.AlignmentFlag.AlignTop) - title_layout = QVBoxLayout() - title_layout.addWidget(StrongBodyLabel("欢迎使用 MRobot Toolbox")) - title_layout.addWidget(SubtitleLabel("让你的机器人开发更高效、更智能")) - top_layout.addLayout(title_layout) - top_layout.addStretch() - layout.addLayout(top_layout) + logo.setFixedSize(320, 80) + logo.setAlignment(Qt.AlignCenter) + content_layout.addWidget(logo, alignment=Qt.AlignHCenter) - layout.addWidget(HorizontalSeparator()) + content_layout.addSpacing(8) + content_layout.addStretch() + # 主标题 + title = SubtitleLabel("MRobot Toolbox") + title.setAlignment(Qt.AlignCenter) + title.setStyleSheet("font-size: 32px; font-weight: bold;") + content_layout.addWidget(title) - # 项目简介 - layout.addWidget(BodyLabel( - "MRobot Toolbox 是一款集成化的机器人开发辅助工具," - "支持代码生成、串口终端、主题切换等多种实用功能。\n" - "点击左侧导航栏可快速切换各功能页面。" - )) + # 副标题 + subtitle = BodyLabel("现代化,多功能机器人开发工具箱") + subtitle.setAlignment(Qt.AlignCenter) + subtitle.setStyleSheet("font-size: 18px; color: #4a6fa5;") + content_layout.addWidget(subtitle) - # 开发者与项目目标 - layout.addWidget(HorizontalSeparator()) - layout.addWidget(SubtitleLabel("开发者与项目目标")) - layout.addWidget(BodyLabel("开发团队:QUT 青岛理工大学 MOVE 战队")) - layout.addWidget(BodyLabel("项目目标:为所有 rmer 和 rcer 提供现代化、简单、高效的机器人开发方式," - "让机器人开发变得更轻松、更智能。")) - layout.addWidget(BodyLabel("适用于 RM、RC、各类嵌入式机器人项目。")) + # 欢迎语 + welcome = BodyLabel("欢迎使用 MRobot Toolbox!一站式支持代码生成、硬件管理、串口调试与零件库下载。") + welcome.setAlignment(Qt.AlignCenter) + welcome.setStyleSheet("font-size: 15px;") + content_layout.addWidget(welcome) - # layout.addStretch() + content_layout.addSpacing(16) + content_layout.addStretch() + + # 直接加到主布局 + outer_layout.addLayout(content_layout) + outer_layout.addStretch() + + # 版权信息置底 + copyright_label = BodyLabel("© 2025 MRobot | Powered by QUT RM&RCer") + copyright_label.setAlignment(Qt.AlignCenter) + copyright_label.setStyleSheet("font-size: 13px;") + outer_layout.addWidget(copyright_label) + outer_layout.addSpacing(18) # ===================== 代码生成页面 ===================== +class IocConfig: + def __init__(self, ioc_path): + self.ioc_path = ioc_path + self.config = {} + self._parse() + + def _parse(self): + with open(self.ioc_path, encoding='utf-8') as f: + for line in f: + line = line.strip() + if not line or line.startswith('#'): + continue + if '=' in line: + key, value = line.split('=', 1) + self.config[key.strip()] = value.strip() + + def is_freertos_enabled(self): + # 判断是否开启FreeRTOS + ip_keys = [k for k in self.config if k.startswith('Mcu.IP')] + for k in ip_keys: + if self.config[k] == 'FREERTOS': + return True + for k in self.config: + if k.startswith('FREERTOS.'): + return True + return False + + # 可扩展:添加更多参数获取方法 + def get_parameter(self, key, default=None): + return self.config.get(key, default) + + def get_all_with_prefix(self, prefix): + return {k: v for k, v in self.config.items() if k.startswith(prefix)} + class DataInterface(BaseInterface): def __init__(self, parent=None): super().__init__(parent=parent) self.setObjectName("dataInterface") - self.stacked_layout = QStackedLayout() + + # 属性初始化 + self.project_path = "" + self.project_name = "" + self.ioc_file = "" + self.freertos_enabled = False # 新增属性 + + # 主布局 + self.stacked_layout = QStackedLayout(self) self.setLayout(self.stacked_layout) # --- 页面1:工程路径选择 --- self.select_widget = QWidget() - select_layout = QVBoxLayout(self.select_widget) - select_layout.addSpacing(40) - select_layout.addWidget(SubtitleLabel("MRobot 代码生成")) - select_layout.addWidget(HorizontalSeparator()) - select_layout.addSpacing(10) - select_layout.addWidget(BodyLabel("请选择包含 .ioc 文件的工程文件夹,点击下方按钮进行选择。")) - select_layout.addSpacing(20) - self.choose_btn = PushButton("选择工程路径") + outer_layout = QVBoxLayout(self.select_widget) + outer_layout.setContentsMargins(0, 0, 0, 0) + outer_layout.addStretch() + + # 直接用布局和控件,无卡片 + content_layout = QVBoxLayout() + content_layout.setSpacing(28) + content_layout.setContentsMargins(48, 48, 48, 48) + + # 主标题 + title = TitleLabel("MRobot 代码生成") + title.setAlignment(Qt.AlignCenter) + title.setStyleSheet("font-size: 36px; font-weight: bold; color: #2d7d9a;") + content_layout.addWidget(title) + + # 副标题 + subtitle = BodyLabel("请选择您的由CUBEMX生成的工程路径(.ico所在的目录),然后开启代码之旅!") + subtitle.setAlignment(Qt.AlignCenter) + subtitle.setStyleSheet("font-size: 16px; color: #4a6fa5;") + content_layout.addWidget(subtitle) + + # 简要说明 + desc = BodyLabel("支持自动配置和生成任务,自主选择模块代码倒入,自动识别cubemx配置!") + desc.setAlignment(Qt.AlignCenter) + desc.setStyleSheet("font-size: 14px; color: #6b7b8c;") + content_layout.addWidget(desc) + + content_layout.addSpacing(18) + + # 选择项目路径按钮 + self.choose_btn = PushButton(FluentIcon.FOLDER, "选择项目路径") + self.choose_btn.setFixedWidth(200) + self.choose_btn.setStyleSheet("font-size: 17px;") self.choose_btn.clicked.connect(self.choose_project_folder) - select_layout.addWidget(self.choose_btn) - select_layout.addStretch() + content_layout.addWidget(self.choose_btn, alignment=Qt.AlignmentFlag.AlignCenter) + + # 更新代码库按钮 + self.update_template_btn = PushButton(FluentIcon.SYNC, "更新代码库") + self.update_template_btn.setFixedWidth(200) + self.update_template_btn.setStyleSheet("font-size: 17px;") + self.update_template_btn.clicked.connect(self.update_user_template) + content_layout.addWidget(self.update_template_btn, alignment=Qt.AlignmentFlag.AlignCenter) + + content_layout.addSpacing(10) + content_layout.addStretch() + + + outer_layout.addLayout(content_layout) + outer_layout.addStretch() + self.stacked_layout.addWidget(self.select_widget) - # --- 页面2:代码配置 --- - self.config_widget = QWidget() - self.config_layout = QVBoxLayout(self.config_widget) - # 左上角小返回按钮 - top_bar = QHBoxLayout() - self.back_btn = PushButton('返回', icon=FluentIcon.SKIP_BACK) - # self.back_btn.setFixedSize(32, 32) - self.back_btn.clicked.connect(self.back_to_select) - self.back_btn.setToolTip("返回") - top_bar.addWidget(self.back_btn, alignment=Qt.AlignmentFlag.AlignLeft) - top_bar.addStretch() - self.config_layout.addLayout(top_bar) - self.config_layout.addWidget(SubtitleLabel("工程配置信息")) - self.config_layout.addWidget(HorizontalSeparator()) - self.project_info_labels = [] - self.config_layout.addStretch() - self.stacked_layout.addWidget(self.config_widget) - # 默认显示选择页面 - self.stacked_layout.setCurrentWidget(self.select_widget) + # --- 页面2:主配置页面 --- + self.config_widget = QWidget() + main_layout = QVBoxLayout(self.config_widget) + main_layout.setContentsMargins(32, 32, 32, 32) + main_layout.setSpacing(18) + + # 顶部项目信息 + info_layout = QHBoxLayout() + self.back_btn = PushButton(FluentIcon.SKIP_BACK, "返回") + self.back_btn.setFixedWidth(90) + self.back_btn.clicked.connect(self.back_to_select) + info_layout.addWidget(self.back_btn) # 返回按钮放最左 + self.project_name_label = StrongBodyLabel() + self.project_path_label = BodyLabel() + self.ioc_file_label = BodyLabel() + self.freertos_label = BodyLabel() + info_layout.addWidget(self.project_name_label) + info_layout.addWidget(self.project_path_label) + info_layout.addWidget(self.ioc_file_label) + info_layout.addWidget(self.freertos_label) + info_layout.addStretch() + main_layout.addLayout(info_layout) + main_layout.addWidget(HorizontalSeparator()) + + # ======= 新增:左右分栏 ======= + content_hbox = QHBoxLayout() + content_hbox.setSpacing(24) + + # 左侧:文件树 + left_vbox = QVBoxLayout() + left_vbox.addWidget(SubtitleLabel("用户代码模块选择")) + left_vbox.addWidget(HorizontalSeparator()) + self.file_tree = TreeWidget() + self.file_tree.setHeaderLabels(["模块名"]) + self.file_tree.setSelectionMode(self.file_tree.ExtendedSelection) + self.file_tree.header().setSectionResizeMode(0, QHeaderView.Stretch) + self.file_tree.setCheckedColor("#0078d4", "#2d7d9a") + self.file_tree.setBorderRadius(8) + self.file_tree.setBorderVisible(True) + left_vbox.addWidget(self.file_tree, stretch=1) + content_hbox.addLayout(left_vbox, 2) + + # 右侧:操作按钮和说明 + right_vbox = QVBoxLayout() + right_vbox.setSpacing(18) + right_vbox.addWidget(SubtitleLabel("操作区")) + right_vbox.addWidget(HorizontalSeparator()) + + # 操作按钮分组 + btn_group = QVBoxLayout() + # 自动环境配置按钮 + self.env_btn = PushButton("自动环境配置") + self.env_btn.setFixedWidth(200) + self.env_btn.setToolTip("自动检测并配置常用开发环境(功能开发中)") + self.env_btn.clicked.connect(self.auto_env_config) + btn_group.addWidget(self.env_btn) + # FreeRTOS相关按钮 + self.freertos_task_btn = PushButton("自动生成FreeRTOS任务") + self.freertos_task_btn.setFixedWidth(200) + self.freertos_task_btn.setToolTip("自动在 freertos.c 中插入任务创建代码") + self.freertos_task_btn.clicked.connect(self.on_freertos_task_btn_clicked) + btn_group.addWidget(self.freertos_task_btn) + self.task_code_btn = PushButton("配置并生成任务代码") + self.task_code_btn.setFixedWidth(200) + self.task_code_btn.setToolTip("配置任务参数并一键生成任务代码文件") + self.task_code_btn.clicked.connect(self.on_task_code_btn_clicked) + btn_group.addWidget(self.task_code_btn) + self.generate_btn = PushButton(FluentIcon.CODE, "生成代码") + self.generate_btn.setFixedWidth(200) + self.generate_btn.setToolTip("将选中的用户模块代码复制到工程 User 目录") + self.generate_btn.clicked.connect(self.generate_code) + btn_group.addWidget(self.generate_btn) + btn_group.addSpacing(10) + right_vbox.addLayout(btn_group) + right_vbox.addStretch() + + content_hbox.addLayout(right_vbox, 1) + main_layout.addLayout(content_hbox, stretch=1) + self.stacked_layout.addWidget(self.config_widget) + self.file_tree.itemChanged.connect(self.on_tree_item_changed) + + def auto_env_config(self): + InfoBar.info( + title="敬请期待", + content="自动环境配置功能暂未实现,等待后续更新。", + parent=self, + duration=2000 + ) def choose_project_folder(self): folder = QFileDialog.getExistingDirectory(self, "请选择代码项目文件夹") @@ -128,7 +382,12 @@ class DataInterface(BaseInterface): return ioc_files = [f for f in os.listdir(folder) if f.endswith('.ioc')] if not ioc_files: - QMessageBox.warning(self, "提示", "未找到.ioc文件,请确认项目文件夹。") + InfoBar.warning( + title="提示", + content="未找到.ioc文件,请确认项目文件夹。", + parent=self, + duration=2000 + ) return self.project_path = folder self.project_name = os.path.basename(folder) @@ -136,24 +395,622 @@ class DataInterface(BaseInterface): self.show_config_page() def show_config_page(self): - # 清理旧内容 - for label in self.project_info_labels: - self.config_layout.removeWidget(label) - label.deleteLater() - self.project_info_labels.clear() - # 显示项目信息 - l1 = BodyLabel(f"项目名称: {self.project_name}") - l2 = BodyLabel(f"项目路径: {self.project_path}") - l3 = BodyLabel(f"IOC 文件: {self.ioc_file}") - self.config_layout.insertWidget(2, l1) - self.config_layout.insertWidget(3, l2) - self.config_layout.insertWidget(4, l3) - self.project_info_labels.extend([l1, l2, l3]) + # 更新项目信息 + self.project_name_label.setText(f"项目名称: {self.project_name}") + self.project_path_label.setText(f"项目路径: {self.project_path}") + # self.ioc_file_label.setText(f"IOC 文件: {self.ioc_file}") + try: + ioc = IocConfig(self.ioc_file) + self.freertos_enabled = ioc.is_freertos_enabled() # 记录状态 + freertos_status = "已启用" if self.freertos_enabled else "未启用" + self.freertos_label.setText(f"FreeRTOS: {freertos_status}") + # self.freertos_task_btn.setEnabled(self.freertos_enabled) + except Exception as e: + self.freertos_label.setText(f"IOC解析失败: {e}") + self.freertos_task_btn.hide() + self.freertos_enabled = False + self.show_user_code_files() self.stacked_layout.setCurrentWidget(self.config_widget) + def on_freertos_task_btn_clicked(self): + if not self.freertos_enabled: + InfoBar.warning( + title="未开启 FreeRTOS", + content="请先在 CubeMX 中开启 FreeRTOS!", + parent=self, + duration=2000 + ) + return + self.generate_freertos_task() + + def on_task_code_btn_clicked(self): + if not self.freertos_enabled: + InfoBar.warning( + title="未开启 FreeRTOS", + content="请先在 CubeMX 中开启 FreeRTOS!", + parent=self, + duration=2000 + ) + return + self.open_task_config_dialog() + def back_to_select(self): self.stacked_layout.setCurrentWidget(self.select_widget) + def update_user_template(self): + url = "http://gitea.qutrobot.top/robofish/MRobot/archive/User_code.zip" + local_dir = "User_code" + try: + resp = requests.get(url, timeout=30) + resp.raise_for_status() + z = zipfile.ZipFile(io.BytesIO(resp.content)) + if os.path.exists(local_dir): + shutil.rmtree(local_dir) + for member in z.namelist(): + rel_path = os.path.relpath(member, z.namelist()[0]) + if rel_path == ".": + continue + target_path = os.path.join(local_dir, rel_path) + if member.endswith('/'): + os.makedirs(target_path, exist_ok=True) + else: + os.makedirs(os.path.dirname(target_path), exist_ok=True) + with open(target_path, "wb") as f: + f.write(z.read(member)) + InfoBar.success( + title="更新成功", + content="用户模板已更新到最新版本!", + parent=self, + duration=2000 + ) + except Exception as e: + InfoBar.error( + title="更新失败", + content=f"用户模板更新失败: {e}", + parent=self, + duration=3000 + ) + + def show_user_code_files(self): + self.file_tree.clear() + base_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "User_code") + user_dir = os.path.join(self.project_path, "User") + sub_dirs = ["bsp", "component", "device", "module"] + + # 读取所有 describe.csv 和 dependencies.csv + describe_map = {} + dependencies_map = {} + for sub in sub_dirs: + dir_path = os.path.join(base_dir, sub) + if not os.path.isdir(dir_path): + continue + # describe + desc_path = os.path.join(dir_path, "describe.csv") + if os.path.exists(desc_path): + with open(desc_path, encoding="utf-8") as f: + for line in f: + if "," in line: + k, v = line.strip().split(",", 1) + describe_map[f"{sub}/{k.strip()}"] = v.strip() + # dependencies + dep_path = os.path.join(dir_path, "dependencies.csv") + if os.path.exists(dep_path): + with open(dep_path, encoding="utf-8") as f: + for line in f: + if "," in line: + a, b = line.strip().split(",", 1) + dependencies_map.setdefault(f"{sub}/{a.strip()}", []).append(b.strip()) + + self._describe_map = describe_map + self._dependencies_map = dependencies_map + + self.file_tree.setHeaderLabels(["模块名", "描述"]) + self.file_tree.setSelectionMode(self.file_tree.ExtendedSelection) + self.file_tree.header().setSectionResizeMode(0, QHeaderView.ResizeToContents) + self.file_tree.header().setSectionResizeMode(1, QHeaderView.Stretch) # 描述列自适应 + self.file_tree.setCheckedColor("#0078d4", "#2d7d9a") + self.file_tree.setBorderRadius(8) + self.file_tree.setBorderVisible(True) + + for sub in sub_dirs: + dir_path = os.path.join(base_dir, sub) + if not os.path.isdir(dir_path): + continue + group_item = TreeItem([sub, ""]) + self.file_tree.addTopLevelItem(group_item) + has_file = False + for root, _, files in os.walk(dir_path): + rel_root = os.path.relpath(root, base_dir) + for f in sorted(files): + if f.endswith(".c"): + mod_name = os.path.splitext(f)[0] + rel_c = os.path.join(rel_root, f) + key = f"{rel_root}/{mod_name}".replace("\\", "/") + desc = describe_map.get(key, "") + file_item = TreeItem([mod_name, desc]) + file_item.setFlags(file_item.flags() | Qt.ItemIsUserCheckable) + file_item.setData(0, Qt.UserRole, rel_c) + file_item.setData(0, Qt.UserRole + 1, key) # 存模块key + file_item.setToolTip(1, desc) + file_item.setTextAlignment(1, Qt.AlignLeft | Qt.AlignVCenter) + group_item.addChild(file_item) + dst_c = os.path.join(user_dir, rel_c) + if os.path.exists(dst_c): + file_item.setCheckState(0, Qt.Unchecked) + file_item.setText(0, f"{mod_name}(已存在)") + file_item.setForeground(0, Qt.gray) + else: + file_item.setCheckState(0, Qt.Unchecked) + group_item.addChild(file_item) + has_file = True + if not has_file: + empty_item = TreeItem(["(无 .c 文件)", ""]) + group_item.addChild(empty_item) + self.file_tree.expandAll() + + # 勾选依赖自动勾选 + def on_tree_item_changed(self, item, column): + if column != 0: + return + if item.childCount() > 0: + return # 只处理叶子 + if item.checkState(0) == Qt.Checked: + key = item.data(0, Qt.UserRole + 1) + deps = self._dependencies_map.get(key, []) + if deps: + checked = [] + root = self.file_tree.invisibleRootItem() + for i in range(root.childCount()): + group = root.child(i) + for j in range(group.childCount()): + child = group.child(j) + ckey = child.data(0, Qt.UserRole + 1) + if ckey in deps and child.checkState(0) != Qt.Checked: + child.setCheckState(0, Qt.Checked) + checked.append(ckey) + if checked: + descs = [self._describe_map.get(dep, dep) for dep in checked] + InfoBar.info( + title="依赖自动勾选", + content="已自动勾选依赖模块: " + ",".join(descs), + parent=self, + duration=2000 + ) + + + def get_checked_files(self): + files = [] + def _traverse(item): + for i in range(item.childCount()): + child = item.child(i) + if child.childCount() == 0 and child.checkState(0) == Qt.Checked: + files.append(child.data(0, Qt.UserRole)) + _traverse(child) + root = self.file_tree.invisibleRootItem() + for i in range(root.childCount()): + _traverse(root.child(i)) + return files + + def generate_code(self): + import shutil + base_dir = "User_code" + user_dir = os.path.join(self.project_path, "User") + copied = [] + files = self.get_checked_files() + skipped = [] + for rel_c in files: + rel_h = rel_c[:-2] + ".h" + src_c = os.path.join(base_dir, rel_c) + src_h = os.path.join(base_dir, rel_h) + dst_c = os.path.join(user_dir, rel_c) + dst_h = os.path.join(user_dir, rel_h) + # 如果目标文件已存在则跳过 + if os.path.exists(dst_c): + skipped.append(dst_c) + else: + os.makedirs(os.path.dirname(dst_c), exist_ok=True) + shutil.copy2(src_c, dst_c) + copied.append(dst_c) + if os.path.exists(src_h): + if os.path.exists(dst_h): + skipped.append(dst_h) + else: + os.makedirs(os.path.dirname(dst_h), exist_ok=True) + shutil.copy2(src_h, dst_h) + copied.append(dst_h) + msg = f"已拷贝 {len(copied)} 个文件到 User 目录" + if skipped: + msg += f"\n{len(skipped)} 个文件已存在,未覆盖" + InfoBar.success( + title="生成完成", + content=msg, + parent=self, + duration=2000 + ) + # 生成后刷新文件树,更新标记 + self.show_user_code_files() + + def generate_freertos_task(self): + import re + freertos_path = os.path.join(self.project_path, "Core", "Src", "freertos.c") + if not os.path.exists(freertos_path): + InfoBar.error( + title="未找到 freertos.c", + content="未找到 Core/Src/freertos.c 文件,请确认工程路径。", + parent=self, + duration=2500 + ) + return + with open(freertos_path, "r", encoding="utf-8") as f: + code = f.read() + + changed = False + error_msgs = [] + + # 1. 添加 #include "task/user_task.h" + include_line = '#include "task/user_task.h"' + if include_line not in code: + # 只插入到 USER CODE BEGIN Includes 区域 + include_pattern = r'(\/\* *USER CODE BEGIN Includes *\*\/\s*)' + if re.search(include_pattern, code): + code = re.sub( + include_pattern, + r'\1' + include_line + '\n', + code + ) + changed = True + else: + error_msgs.append("未找到 /* USER CODE BEGIN Includes */ 区域,无法插入 include。") + + # 2. 在 /* USER CODE BEGIN RTOS_THREADS */ 区域添加 osThreadNew(Task_Init, NULL, &attr_init); + rtos_threads_pattern = r'(\/\* *USER CODE BEGIN RTOS_THREADS *\*\/\s*)(.*?)(\/\* *USER CODE END RTOS_THREADS *\*\/)' + match = re.search(rtos_threads_pattern, code, re.DOTALL) + task_line = ' initTaskHandle = osThreadNew(Task_Init, NULL, &attr_init); // 创建初始化任务\n' + if match: + threads_code = match.group(2) + if 'Task_Init' not in threads_code: + # 保留原有内容,追加新行 + new_threads_code = match.group(1) + threads_code + task_line + match.group(3) + code = code[:match.start()] + new_threads_code + code[match.end():] + changed = True + else: + error_msgs.append("未找到 /* USER CODE BEGIN RTOS_THREADS */ 区域,无法插入任务创建代码。") + + # 3. 清空 StartDefaultTask 的 USER CODE 区域,只保留 osThreadTerminate + sdt_pattern = r'(\/\* *USER CODE BEGIN StartDefaultTask *\*\/\s*)(.*?)(\/\* *USER CODE END StartDefaultTask *\*\/)' + match = re.search(sdt_pattern, code, re.DOTALL) + if match: + if 'osThreadTerminate(osThreadGetId());' not in match.group(2): + new_sdt_code = match.group(1) + ' osThreadTerminate(osThreadGetId());\n' + match.group(3) + code = code[:match.start()] + new_sdt_code + code[match.end():] + changed = True + else: + error_msgs.append("未找到 /* USER CODE BEGIN StartDefaultTask */ 区域,无法插入终止代码。") + + if changed: + with open(freertos_path, "w", encoding="utf-8") as f: + f.write(code) + InfoBar.success( + title="生成成功", + content="FreeRTOS任务代码已自动生成!", + parent=self, + duration=2000 + ) + elif error_msgs: + InfoBar.error( + title="生成失败", + content="\n".join(error_msgs), + parent=self, + duration=3000 + ) + else: + InfoBar.info( + title="无需修改", + content="FreeRTOS任务相关代码已存在,无需重复生成。", + parent=self, + duration=2000 + ) + + def open_task_config_dialog(self): + from PyQt5.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QSpinBox, QPushButton, QTableWidget, QTableWidgetItem, QHeaderView + import yaml + import os + + class TaskConfigDialog(QDialog): + def __init__(self, parent=None, config_path=None): + super().__init__(parent) + self.setWindowTitle("任务配置") + self.resize(800, 420) + layout = QVBoxLayout(self) + self.table = QTableWidget(0, 5) + self.table.setHorizontalHeaderLabels(["任务名称", "运行频率", "初始化延迟", "堆栈大小", "任务描述"]) + self.table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) + self.table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) + self.table.horizontalHeader().setSectionResizeMode(2, QHeaderView.Stretch) + self.table.horizontalHeader().setSectionResizeMode(3, QHeaderView.Stretch) + self.table.horizontalHeader().setSectionResizeMode(4, QHeaderView.Stretch) + self.table.setColumnWidth(4, 320) # 任务描述更宽 + layout.addWidget(self.table) + btn_layout = QHBoxLayout() + add_btn = QPushButton("添加任务") + del_btn = QPushButton("删除选中") + ok_btn = QPushButton("生成") + cancel_btn = QPushButton("取消") + btn_layout.addWidget(add_btn) + btn_layout.addWidget(del_btn) + btn_layout.addStretch() + btn_layout.addWidget(ok_btn) + btn_layout.addWidget(cancel_btn) + layout.addLayout(btn_layout) + add_btn.clicked.connect(self.add_row) + del_btn.clicked.connect(self.del_row) + ok_btn.clicked.connect(self.accept) + cancel_btn.clicked.connect(self.reject) + + + # 自动读取配置文件 + if config_path and os.path.exists(config_path): + try: + with open(config_path, "r", encoding="utf-8") as f: + tasks = yaml.safe_load(f) + if tasks: + for t in tasks: + row = self.table.rowCount() + self.table.insertRow(row) + for col, key in enumerate(["name", "frequency", "delay", "stack", "description"]): + item = QTableWidgetItem(str(t.get(key, ""))) + item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, col, item) + except Exception as e: + pass # 配置文件损坏时忽略 + + def add_row(self): + row = self.table.rowCount() + self.table.insertRow(row) + default_values = [ + f"Task{row+1}", "500", "0", "256", "不要偷懒,请写清楚每个任务的作用!(如果你看到任务上面是这句话,说明作者是个懒蛋)" + ] + for col, val in enumerate(default_values): + item = QTableWidgetItem(val) + item.setTextAlignment(Qt.AlignCenter) + self.table.setItem(row, col, item) + + def del_row(self): + rows = set([i.row() for i in self.table.selectedItems()]) + for r in sorted(rows, reverse=True): + self.table.removeRow(r) + + def get_tasks(self): + tasks = [] + for row in range(self.table.rowCount()): + name = self.table.item(row, 0).text().strip() + freq = int(self.table.item(row, 1).text()) + delay = int(self.table.item(row, 2).text()) + stack = int(self.table.item(row, 3).text()) + desc = self.table.item(row, 4).text().strip() + # 校验 stack 必须为 128*2^n + if stack < 128 or (stack & (stack - 1)) != 0 or stack % 128 != 0: + raise ValueError(f"第{row+1}行任务“{name}”的堆栈大小必须为128、256、512、1024等(128*2^n)") + tasks.append({ + "name": name, + "function": f"Task_{name}", + "frequency": freq, + "delay": delay, + "stack": stack, + "description": desc + }) + return tasks + + config_path = os.path.join(self.project_path, "User", "task", "config.yaml") + dlg = TaskConfigDialog(self, config_path=config_path) + if dlg.exec() == QDialog.Accepted: + try: + tasks = dlg.get_tasks() + except Exception as e: + InfoBar.error( + title="参数错误", + content=str(e), + parent=self, + duration=3000 + ) + return + if not tasks: + InfoBar.warning( + title="未配置任务", + content="请至少添加一个任务!", + parent=self, + duration=2000 + ) + return + try: + self.generate_task_code(tasks) + InfoBar.success( + title="生成成功", + content="任务代码已生成到 User/task 目录!", + parent=self, + duration=2000 + ) + except Exception as e: + InfoBar.error( + title="生成失败", + content=f"任务代码生成失败: {e}", + parent=self, + duration=3000 + ) + + def generate_task_code(self, task_list): + import os + from jinja2 import Template + import yaml + import re + import textwrap + + base_dir = os.path.dirname(os.path.abspath(__file__)) + template_dir = os.path.join(base_dir, "User_code", "task") + output_dir = os.path.join(self.project_path, "User", "task") + os.makedirs(output_dir, exist_ok=True) + + # 模板路径 + user_task_h_tpl = os.path.join(template_dir, "user_task.h.template") + user_task_c_tpl = os.path.join(template_dir, "user_task.c.template") + init_c_tpl = os.path.join(template_dir, "init.c.template") + task_c_tpl = os.path.join(template_dir, "task.c.template") + + def render_template(path, context): + with open(path, encoding="utf-8") as f: + tpl = Template(f.read()) + return tpl.render(**context) + + + # 构造模板上下文 + context_h = { + "thread_definitions": "\n".join([f" osThreadId_t {t['name']};" for t in task_list]), + "freq_definitions": "\n".join([f" float {t['name']};" for t in task_list]), + "stack_definitions": "\n".join([f" UBaseType_t {t['name']};" for t in task_list]), + "last_up_time_definitions": "\n".join([f" float {t['name']};" for t in task_list]), + "task_frequency_definitions": "\n".join([f"#define {t['name'].upper()}_FREQ ({t['frequency']})" for t in task_list]), + "task_init_delay_definitions": "\n".join([f"#define {t['name'].upper()}_INIT_DELAY ({t['delay']})" for t in task_list]), + "task_attr_declarations": "\n".join([f"extern const osThreadAttr_t attr_{t['name']};" for t in task_list]), + "task_function_declarations": "\n".join([f"void {t['function']}(void *argument);" for t in task_list]), + } + + # ----------- 用户区域保护函数 ----------- + def preserve_user_region(new_code, old_code, region_name): + """ + 替换 new_code 中 region_name 区域为 old_code 中的内容(如果有) + region_name: 如 'USER INCLUDE' + """ + pattern = re.compile( + rf"/\*\s*{region_name}\s*BEGIN\s*\*/(.*?)/\*\s*{region_name}\s*END\s*\*/", + re.DOTALL + ) + old_match = pattern.search(old_code or "") + if not old_match: + return new_code # 旧文件没有该区域,直接返回新代码 + + old_content = old_match.group(1) + def repl(m): + return m.group(0).replace(m.group(1), old_content) + # 替换新代码中的该区域 + return pattern.sub(repl, new_code, count=1) + + # ----------- 生成 user_task.h ----------- + user_task_h_path = os.path.join(output_dir, "user_task.h") + new_user_task_h = render_template(user_task_h_tpl, context_h) + + # 检查并保留所有用户区域 + if os.path.exists(user_task_h_path): + with open(user_task_h_path, "r", encoding="utf-8") as f: + old_code = f.read() + # 只保留有内容的用户区域 + for region in ["USER INCLUDE", "USER MESSAGE", "USER CONFIG"]: + # 如果旧文件该区域有内容,则保留 + pattern = re.compile( + rf"/\*\s*{region}\s*BEGIN\s*\*/(.*?)/\*\s*{region}\s*END\s*\*/", + re.DOTALL + ) + old_match = pattern.search(old_code) + if old_match and old_match.group(1).strip(): + new_user_task_h = preserve_user_region(new_user_task_h, old_code, region) + # 写入 + with open(user_task_h_path, "w", encoding="utf-8") as f: + f.write(new_user_task_h) + + # ----------- 生成 user_task.c ----------- + context_c = { + "task_attr_definitions": "\n".join([ + f"const osThreadAttr_t attr_{t['name']} = {{\n" + f" .name = \"{t['name']}\",\n" + f" .priority = osPriorityNormal,\n" + f" .stack_size = {t['stack']} * 4,\n" + f"}};" + for t in task_list + ]) + } + user_task_c = render_template(user_task_c_tpl, context_c) + with open(os.path.join(output_dir, "user_task.c"), "w", encoding="utf-8") as f: + f.write(user_task_c) + + # ----------- 生成 init.c ----------- + # 线程创建代码 + thread_creation_code = "\n".join([ + f" task_runtime.thread.{t['name']} = osThreadNew({t['function']}, NULL, &attr_{t['name']});" + for t in task_list + ]) + + context_init = { + "thread_creation_code": thread_creation_code, + } + # 渲染模板 + init_c = render_template(init_c_tpl, context_init) + + # 保留 USER MESSAGE 区域 + def preserve_user_region(new_code, old_code, region_name): + pattern = re.compile( + rf"/\*\s*{region_name}\s*BEGIN\s*\*/(.*?)/\*\s*{region_name}\s*END\s*\*/", + re.DOTALL + ) + old_match = pattern.search(old_code or "") + if not old_match: + return new_code + old_content = old_match.group(1) + def repl(m): + return m.group(0).replace(m.group(1), old_content) + return pattern.sub(repl, new_code, count=1) + + init_c_path = os.path.join(output_dir, "init.c") + if os.path.exists(init_c_path): + with open(init_c_path, "r", encoding="utf-8") as f: + old_code = f.read() + # 保留 USER MESSAGE 区域 + init_c = preserve_user_region(init_c, old_code, "USER MESSAGE") + + with open(init_c_path, "w", encoding="utf-8") as f: + f.write(init_c) + + # ----------- 生成 task.c ----------- + task_c_tpl = os.path.join(template_dir, "task.c.template") + for t in task_list: + # 自动换行任务描述 + desc = t.get("description", "") + desc_wrapped = "\n ".join(textwrap.wrap(desc, 20)) + context_task = { + "task_name": t["name"], + "task_function": t["function"], + "task_frequency": f"{t['name'].upper()}_FREQ", # 使用宏定义 + "task_delay": f"{t['name'].upper()}_INIT_DELAY", # 使用宏定义 + "task_description": desc_wrapped + } + # 渲染模板 + with open(task_c_tpl, encoding="utf-8") as f: + tpl = Template(f.read()) + code = tpl.render(**context_task) + # 保留USER区域 + task_c_path = os.path.join(output_dir, f"{t['name']}.c") + if os.path.exists(task_c_path): + with open(task_c_path, "r", encoding="utf-8") as f: + old_code = f.read() + # 只保留USER区域 + def preserve_user_region(new_code, old_code, region_name): + pattern = re.compile( + rf"/\*\s*{region_name}\s*BEGIN\s*\*/(.*?)/\*\s*{region_name}\s*END\s*\*/", + re.DOTALL + ) + old_match = pattern.search(old_code or "") + if not old_match: + return new_code + old_content = old_match.group(1) + def repl(m): + return m.group(0).replace(m.group(1), old_content) + return pattern.sub(repl, new_code, count=1) + for region in ["USER INCLUDE", "USER STRUCT", "USER CODE"]: + code = preserve_user_region(code, old_code, region) + with open(task_c_path, "w", encoding="utf-8") as f: + f.write(code) + # ----------- 保存任务配置到 config.yaml ----------- + config_path = os.path.join(output_dir, "config.yaml") + with open(config_path, "w", encoding="utf-8") as f: + yaml.dump(task_list, f, allow_unicode=True) # ===================== 串口终端界面 ===================== class SerialReadThread(QThread): @@ -213,12 +1070,12 @@ class SerialTerminalInterface(BaseInterface): #快捷指令居中 preset_vbox.setAlignment(Qt.AlignmentFlag.AlignCenter) self.preset_commands = [ - ("线程监视器", "RESET"), - ("陀螺仪校准", "GET_VERSION"), - ("性能监视", "START"), - ("重启", "STOP"), - ("显示所有设备", "SELF_TEST"), - ("查询id", "STATUS"), + ("线程监视器", "htop"), + ("陀螺仪校准", "cali_gyro"), + ("性能监视", "htop"), + ("重启", "reset"), + ("显示所有设备", "ls /dev"), + ("查询id", "id"), ] for label, cmd in self.preset_commands: btn = PushButton(label) @@ -247,7 +1104,7 @@ class SerialTerminalInterface(BaseInterface): send_btn = PushButton("发送") send_btn.clicked.connect(self.send_data) bottom_hbox.addWidget(send_btn, 1) - self.auto_enter_checkbox = CheckBox("自动回车") + self.auto_enter_checkbox = CheckBox("自动回车 ") self.auto_enter_checkbox.setChecked(True) bottom_hbox.addWidget(self.auto_enter_checkbox) bottom_hbox.addStretch() @@ -315,6 +1172,7 @@ class SerialTerminalInterface(BaseInterface): except Exception as e: self.text_edit.append(f"发送失败: {e}") self.input_line.clear() + # ===================== 零件库页面 ===================== class DownloadThread(QThread): progressChanged = pyqtSignal(int) @@ -335,7 +1193,10 @@ class DownloadThread(QThread): retry = 0 while retry < max_retry: try: - url = f"{self.server_url}/download/{rel_path}" + # 先统一分隔符,再编码 + rel_path_unix = rel_path.replace("\\", "/") + encoded_path = quote(rel_path_unix) + url = f"{self.server_url}/download/{encoded_path}" params = {"key": self.secret_key} resp = requests.get(url, params=params, stream=True, timeout=10) if resp.status_code == 200: @@ -368,7 +1229,7 @@ class PartLibraryInterface(BaseInterface): layout.addWidget(SubtitleLabel("零件库(在线bate版)")) layout.addWidget(HorizontalSeparator()) - layout.addWidget(BodyLabel("可浏览服务器零件库,选择需要的文件下载到本地。(如无法使用或者下载失败,请尝试重新下载或检查网络连接)")) + layout.addWidget(BodyLabel("感谢重庆邮电大学整理的零件库,选择需要的文件下载到本地。(如无法使用或者下载失败,请尝试重新下载或检查网络连接)")) btn_layout = QHBoxLayout() refresh_btn = PushButton(FluentIcon.SYNC, "刷新列表") @@ -399,6 +1260,8 @@ class PartLibraryInterface(BaseInterface): self.refresh_list(first=True) + + def refresh_list(self, first=False): self.tree.clear() try: @@ -584,12 +1447,138 @@ class SettingInterface(BaseInterface): self.themeSwitchRequested.emit() # ===================== 帮助与关于界面 ===================== + +# ...existing code... + + +# 注意:PushSettingCard、HyperlinkCard 已由你的 SettingCard 文件定义 + +# ...existing code... + +from PyQt5.QtWidgets import QScrollArea, QWidget, QVBoxLayout, QMessageBox +from qfluentwidgets import ScrollArea, VBoxLayout +from qfluentwidgets import VBoxLayout class HelpInterface(BaseInterface): def __init__(self, parent=None): super().__init__(parent=parent) self.setObjectName("helpInterface") + layout = QVBoxLayout() - self.setLayout(layout) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + self.setLayout(layout) + + content_widget = QWidget() + main_layout = VBoxLayout(content_widget) + main_layout.setContentsMargins(32, 32, 32, 32) + main_layout.setSpacing(18) + # 标题 + main_layout.addWidget(SubtitleLabel("帮助中心")) + main_layout.addWidget(HorizontalSeparator()) + + # 版本与更新 + version_card = PushSettingCard( + "检查更新", + FluentIcon.INFO, + f"当前版本:MRobot Toolbox v{__version__}", + "点击按钮检查是否有新版本。", + parent=self + ) + version_card.clicked.connect(self.check_update) + main_layout.addWidget(version_card) + + # FAQ分组 + faq_group = SettingCardGroup("常见问题", self) + faq_card1 = PushSettingCard( + "查看解决方法", + FluentIcon.HELP, + "启动报错/界面异常怎么办?", + "遇到启动问题请尝试重启、检查依赖,或加入交流群获取帮助。", + parent=self + ) + faq_card1.clicked.connect(lambda: self.show_info( + "启动报错/界面异常解决方法", + "1. 尝试重启软件。\n2. 检查Python和依赖库版本。\n3. 如仍有问题,请在GitHub提交Issue。" + )) + faq_group.addSettingCard(faq_card1) + + faq_card2 = PushSettingCard( + "查看解决方法", + FluentIcon.LIBRARY, + "零件库无法下载怎么办?", + "如遇网络问题或下载失败,请多次尝试或联系管理员。", + parent=self + ) + faq_card2.clicked.connect(lambda: self.show_info( + "零件库无法下载解决方法", + "1. 检查网络连接。\n2. 多次刷新或重启软件。\n3. 若仍无法下载,请加入QQ群:857466609 反馈。" + )) + faq_group.addSettingCard(faq_card2) + + # faq_card3 = PushSettingCard( + # "获取下载链接", + # FluentIcon.DOWNLOAD, + # "如何下载最新版?", + # "点击按钮获取最新版下载地址。", + # parent=self + # ) + # faq_card3.clicked.connect(lambda: self.show_info( + # "最新版下载地址", + # "GitHub发布页:https://github.com/goldenfishs/MRobot/releases\n如遇下载问题,请联系QQ群:857466609" + # )) + # faq_group.addSettingCard(faq_card3) + main_layout.addWidget(faq_group) + + # 联系方式 + contact_group = SettingCardGroup("联系方式", self) + contact_card = PushSettingCard( + "复制邮箱", + FluentIcon.MESSAGE, + "联系开发团队", + "点击按钮复制邮箱地址:support@mrobot.com", + parent=self + ) + contact_card.clicked.connect(lambda: self.copy_text("support@mrobot.com", "邮箱已复制:1683502971@qq.com")) + contact_group.addSettingCard(contact_card) + main_layout.addWidget(contact_group) + + main_layout.addStretch() + # 不使用滚动区,直接添加内容区 + layout.addWidget(content_widget) + + def copy_text(self, text, message): + clipboard = QApplication.clipboard() + clipboard.setText(text) + InfoBar.info( + title="已复制", + content=message, + parent=self, + position=InfoBarPosition.TOP, + duration=2000 + ) + + def check_update(self): + latest = check_update() + if latest: + self.show_info( + "发现新版本", + f"检测到新版本 {latest},请前往 GitHub 下载:\nhttps://github.com/goldenfishs/MRobot/releases" + ) + else: + InfoBar.info( + title="已是最新版", + content="当前已是最新版本。", + parent=self, + duration=2000 + ) + + def show_info(self, title, content): + dialog = Dialog( + title=title, + content=content, + parent=self + ) + dialog.exec() class AboutInterface(BaseInterface): def __init__(self, parent=None): @@ -605,24 +1594,31 @@ class MainWindow(FluentWindow): def __init__(self): super().__init__() self.setWindowTitle("MR_ToolBox") - self.resize(1000, 700) - self.setMinimumSize(800, 600) - + self.resize(800, 600) + self.setMinimumSize(640, 480) + self.setWindowFlag(Qt.Window) # 记录当前主题 self.current_theme = Theme.DARK - + latest = check_update() + if latest: + InfoBar.info( + title="发现新版本", + content=f"检测到新版本 {latest},请前往 GitHub 下载更新。", + parent=self, + duration=5000 + ) # 创建页面实例 self.setting_page = SettingInterface(self) self.setting_page.themeSwitchRequested.connect(self.toggle_theme) self.page_registry = [ - (HomeInterface(self), FIF.HOME, "首页", NavigationItemPosition.TOP), - (DataInterface(self), FIF.LIBRARY, "MRobot代码生成", NavigationItemPosition.SCROLL), - (SerialTerminalInterface(self), FIF.COMMAND_PROMPT, "Mini_Shell", NavigationItemPosition.SCROLL), - (PartLibraryInterface(self), FIF.DOWNLOAD, "零件库", NavigationItemPosition.SCROLL), # ← 加上这一行 - (self.setting_page, FIF.SETTING, "设置", NavigationItemPosition.BOTTOM), - (HelpInterface(self), FIF.HELP, "帮助", NavigationItemPosition.BOTTOM), - (AboutInterface(self), FIF.INFO, "关于", NavigationItemPosition.BOTTOM), + (HomeInterface(self), FluentIcon.HOME, "首页", NavigationItemPosition.TOP), + (DataInterface(self), FluentIcon.LIBRARY, "MRobot代码生成", NavigationItemPosition.SCROLL), + (SerialTerminalInterface(self), FluentIcon.COMMAND_PROMPT, "Mini_Shell", NavigationItemPosition.SCROLL), + (PartLibraryInterface(self), FluentIcon.DOWNLOAD, "零件库", NavigationItemPosition.SCROLL), # ← 加上这一行 + (self.setting_page, FluentIcon.SETTING, "设置", NavigationItemPosition.BOTTOM), + (HelpInterface(self), FluentIcon.HELP, "帮助", NavigationItemPosition.BOTTOM), + # (AboutInterface(self), FluentIcon.INFO, "关于", NavigationItemPosition.BOTTOM), ] self.initNavigation() @@ -650,18 +1646,82 @@ class MainWindow(FluentWindow): def show_user_info(self): dialog = Dialog( - title="用户信息", - content="用户:MRobot至尊VIP用户", + title="MRobot", + content="账号:VIP内测版", parent=self ) dialog.exec() +def check_update(): + try: + repo = "goldenfishs/MRobot" + url = f"https://api.github.com/repos/{repo}/releases/latest" + resp = requests.get(url, timeout=5) + if resp.status_code == 200: + latest = resp.json()["tag_name"].lstrip("v") + print(f"本地版本: {__version__}, 最新版本: {latest}") # 调试用 + if vparse(latest) > vparse(__version__): + return latest + except Exception as e: + print(f"检查更新失败: {e}") + return None + # ===================== 程序入口 ===================== def main(): + from PyQt5.QtWidgets import QApplication # <-- 移到这里,所有平台都能用 + import platform + if platform.system() == "Windows": + try: + from PyQt5.QtCore import Qt + import ctypes + ctypes.windll.shcore.SetProcessDpiAwareness(1) + except Exception: + pass + QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) + QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) + app = QApplication(sys.argv) + # 跟随系统主题 setTheme(Theme.DARK) + splash = SplashScreen() + setTheme(Theme.DARK) + splash.show() + setTheme(Theme.DARK) + app.processEvents() + + # 步骤1:获取零件库 + splash.set_status("正在获取零件仓库...", 20) + try: + import requests + resp = requests.get("http://154.37.215.220:5000/list", params={"key": "MRobot_Download"}, timeout=5) + resp.raise_for_status() + except Exception: + pass + app.processEvents() + + # 步骤2:检查更新 + splash.set_status("正在检查软件更新...", 60) + latest = check_update() + app.processEvents() + + # 步骤3:加载主窗口 + splash.set_status("正在加载主界面...", 90) window = MainWindow() window.show() + setTheme(Theme.DARK) + splash.set_status("启动完成", 100) + from PyQt5.QtCore import QTimer + QTimer.singleShot(500, splash.close) + + # 有新版本弹窗 + if latest: + InfoBar.info( + title="发现新版本", + content=f"检测到新版本 {latest},请前往帮助页面下载新版。", + parent=window, + duration=5000 + ) + sys.exit(app.exec_()) if __name__ == '__main__': diff --git a/MRobot_old.py b/MRobot_old.py deleted file mode 100644 index c85ba8c..0000000 --- a/MRobot_old.py +++ /dev/null @@ -1,719 +0,0 @@ -import tkinter as tk -from tkinter import ttk -from PIL import Image, ImageTk -import sys -import os -import threading -import shutil -import re -from git import Repo -from collections import defaultdict -import csv -import xml.etree.ElementTree as ET - -# 配置常量 -REPO_DIR = "MRobot_repo" -REPO_URL = "http://gitea.qutrobot.top/robofish/MRobot.git" -if getattr(sys, 'frozen', False): # 检查是否为打包后的环境 - CURRENT_DIR = os.path.dirname(sys.executable) # 使用可执行文件所在目录 -else: - CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) # 使用脚本所在目录 - -MDK_ARM_DIR = os.path.join(CURRENT_DIR, "MDK-ARM") -USER_DIR = os.path.join(CURRENT_DIR, "User") - -class MRobotApp: - def __init__(self): - self.ioc_data = None - self.add_gitignore_var = None # 延迟初始化 - self.header_file_vars = {} - self.task_vars = [] # 用于存储任务的变量 - - # 初始化 - def initialize(self): - print("初始化中,正在克隆仓库...") - self.clone_repo() - self.ioc_data = self.find_and_read_ioc_file() - print("初始化完成,启动主窗口...") - self.show_main_window() - - # 克隆仓库 - def clone_repo(self): - try: - if os.path.exists(REPO_DIR): - shutil.rmtree(REPO_DIR) - print(f"正在克隆仓库到 {REPO_DIR}(仅克隆当前文件内容)...") - Repo.clone_from(REPO_URL, REPO_DIR, multi_options=["--depth=1"]) - print("仓库克隆成功!") - except Exception as e: - print(f"克隆仓库时出错: {e}") - - # 删除克隆的仓库 - def delete_repo(self): - try: - if os.path.exists(REPO_DIR): - shutil.rmtree(REPO_DIR) - print(f"已删除克隆的仓库目录: {REPO_DIR}") - except Exception as e: - print(f"删除仓库目录时出错: {e}") - - - # 复制文件 - def copy_file_from_repo(self, src_path, dest_path): - try: - # 修复路径拼接问题,确保 src_path 不重复包含 REPO_DIR - if src_path.startswith(REPO_DIR): - full_src_path = src_path - else: - full_src_path = os.path.join(REPO_DIR, src_path.lstrip(os.sep)) - - # 检查源文件是否存在 - if not os.path.exists(full_src_path): - print(f"文件 {full_src_path} 不存在!(检查路径或仓库内容)") - return - - # 检查目标路径是否有效 - if not dest_path or not dest_path.strip(): - print("目标路径为空或无效,无法复制文件!") - return - - # 创建目标目录(如果不存在) - dest_dir = os.path.dirname(dest_path) - if dest_dir and not os.path.exists(dest_dir): - os.makedirs(dest_dir, exist_ok=True) - - # 执行文件复制 - shutil.copy(full_src_path, dest_path) - print(f"文件已从 {full_src_path} 复制到 {dest_path}") - except Exception as e: - print(f"复制文件时出错: {e}") - - # 查找并读取 .ioc 文件 - def find_and_read_ioc_file(self): - try: - for file in os.listdir("."): - if file.endswith(".ioc"): - print(f"找到 .ioc 文件: {file}") - with open(file, "r", encoding="utf-8") as f: - return f.read() - print("未找到 .ioc 文件!") - except Exception as e: - print(f"读取 .ioc 文件时出错: {e}") - return None - - # 检查是否启用了 FreeRTOS - def check_freertos_enabled(self, ioc_data): - try: - return bool(re.search(r"Mcu\.IP\d+=FREERTOS", ioc_data)) - except Exception as e: - print(f"检查 FreeRTOS 配置时出错: {e}") - return False - - # 生成操作 - def generate_action(self): - def task(): - # 检查并创建目录 - self.create_directories() - - if self.add_gitignore_var.get(): - self.copy_file_from_repo(".gitignore", ".gitignore") - if self.ioc_data and self.check_freertos_enabled(self.ioc_data): - self.copy_file_from_repo("src/freertos.c", os.path.join("Core", "Src", "freertos.c")) - - # 定义需要处理的文件夹 - folders = ["bsp", "component", "device", "module"] - - # 遍历每个文件夹,复制选中的 .h 和 .c 文件 - for folder in folders: - folder_dir = os.path.join(REPO_DIR, "User", folder) - if not os.path.exists(folder_dir): - continue # 如果文件夹不存在,跳过 - - for file_name in os.listdir(folder_dir): - file_base, file_ext = os.path.splitext(file_name) - if file_ext not in [".h", ".c"]: - continue # 只处理 .h 和 .c 文件 - - # 强制复制与文件夹同名的文件 - if file_base == folder: - src_path = os.path.join(folder_dir, file_name) - dest_path = os.path.join("User", folder, file_name) - self.copy_file_from_repo(src_path, dest_path) - continue # 跳过后续检查,直接复制 - - # 检查是否选中了对应的文件 - if file_base in self.header_file_vars and self.header_file_vars[file_base].get(): - src_path = os.path.join(folder_dir, file_name) - dest_path = os.path.join("User", folder, file_name) - self.copy_file_from_repo(src_path, dest_path) - - threading.Thread(target=task).start() - - - - # 创建必要的目录 - def create_directories(self): - try: - directories = [ - "User/bsp", - "User/component", - "User/device", - "User/module", - ] - # 根据是否启用 FreeRTOS 决定是否创建 User/task - if self.ioc_data and self.check_freertos_enabled(self.ioc_data): - directories.append("User/task") - - for directory in directories: - if not os.path.exists(directory): - os.makedirs(directory, exist_ok=True) - print(f"已创建目录: {directory}") - else: - print(f"目录已存在: {directory}") - except Exception as e: - print(f"创建目录时出错: {e}") - - - # 更新 FreeRTOS 状态标签 - def update_freertos_status(self, label): - if self.ioc_data: - status = "已启用" if self.check_freertos_enabled(self.ioc_data) else "未启用" - else: - status = "未检测到 .ioc 文件" - label.config(text=f"FreeRTOS 状态: {status}") - - - - # 显示主窗口 - # ...existing code... - # ...existing code... - - # 显示主窗口 - def show_main_window(self): - root = tk.Tk() - root.title("MRobot 自动生成脚本") - root.geometry("1000x650") # 调整窗口大小以适应布局 - - # 在窗口关闭时调用 on_closing 方法 - root.protocol("WM_DELETE_WINDOW", lambda: self.on_closing(root)) - - # 初始化 BooleanVar - self.add_gitignore_var = tk.BooleanVar(value=False) - self.auto_configure_var = tk.BooleanVar(value=False) # 新增复选框变量 - - # 创建主框架 - main_frame = ttk.Frame(root) - main_frame.pack(fill="both", expand=True) - - # 添加标题 - title_label = ttk.Label(main_frame, text="MRobot 自动生成脚本", font=("Arial", 16, "bold")) - title_label.pack(pady=10) - - # 添加 FreeRTOS 状态标签 - freertos_status_label = ttk.Label(main_frame, text="FreeRTOS 状态: 检测中...", font=("Arial", 12)) - freertos_status_label.pack(pady=10) - self.update_freertos_status(freertos_status_label) - - # 模块文件选择和任务管理框架(添加滚动功能) - module_task_frame = ttk.Frame(main_frame) - module_task_frame.pack(fill="both", expand=True, padx=10, pady=10) - - # 创建 Canvas 和 Scrollbar - canvas = tk.Canvas(module_task_frame) - scrollbar = ttk.Scrollbar(module_task_frame, orient="vertical", command=canvas.yview) - scrollable_frame = ttk.Frame(canvas) - - # 配置滚动区域 - scrollable_frame.bind( - "", - lambda e: canvas.configure(scrollregion=canvas.bbox("all")) - ) - canvas.create_window((0, 0), window=scrollable_frame, anchor="nw") - canvas.configure(yscrollcommand=scrollbar.set) - - # 绑定鼠标滚轮事件 - def on_mouse_wheel(event): - canvas.yview_scroll(-1 * int(event.delta / 120), "units") - - canvas.bind_all("", on_mouse_wheel) - - # 布局 Canvas 和 Scrollbar - canvas.pack(side="left", fill="both", expand=True) - scrollbar.pack(side="right", fill="y") - - # 左右布局:模块文件选择框和任务管理框 - left_frame = ttk.Frame(scrollable_frame) - left_frame.pack(side="left", fill="both", expand=True, padx=5, pady=5) - - right_frame = ttk.Frame(scrollable_frame) - right_frame.pack(side="right", fill="both", expand=True, padx=5, pady=5) - - # 模块文件选择框 - header_files_frame = ttk.LabelFrame(left_frame, text="模块文件选择", padding=(10, 10)) - header_files_frame.pack(fill="both", expand=True, padx=5) - self.header_files_frame = header_files_frame - self.update_header_files() - - # 任务管理框 - if self.ioc_data and self.check_freertos_enabled(self.ioc_data): - task_frame = ttk.LabelFrame(right_frame, text="任务管理", padding=(10, 10)) - task_frame.pack(fill="both", expand=True, padx=5) - self.task_frame = task_frame - self.update_task_ui() - - # 添加消息框和生成按钮在同一行 - bottom_frame = ttk.Frame(main_frame) - bottom_frame.pack(fill="x", pady=10, side="bottom") - - # 消息框 - self.message_box = tk.Text(bottom_frame, wrap="word", state="disabled", height=5, width=60) - self.message_box.pack(side="left", fill="x", expand=True, padx=5, pady=5) - - # 生成按钮和复选框选项 - button_frame = ttk.Frame(bottom_frame) - button_frame.pack(side="right", padx=10) - - # 添加复选框容器(横向排列复选框) - checkbox_frame = ttk.Frame(button_frame) - checkbox_frame.pack(side="top", pady=5) - - # 添加 .gitignore 复选框(左侧) - ttk.Checkbutton(checkbox_frame, text=".gitignore", variable=self.add_gitignore_var).pack(side="left", padx=5) - - # 添加自动配置环境复选框(右侧) - ttk.Checkbutton(checkbox_frame, text="自动环境", variable=self.auto_configure_var).pack(side="left", padx=5) - - # 添加生成按钮(竖向排列在复选框下方) - generate_button = ttk.Button(button_frame, text="一键生成MRobot代码", command=self.generate_action) - generate_button.pack(side="top", pady=10) - generate_button.config(width=25) # 设置按钮宽度 - - # 重定向输出到消息框 - self.redirect_output() - - # 打印欢迎信息 - print("欢迎使用 MRobot 自动生成脚本!") - print("请根据需要选择模块文件和任务。") - print("点击“一键生成MRobot代码”按钮开始生成。") - - # 启动 Tkinter 主事件循环 - root.mainloop() - - # ...existing code... - # ...existing code... - - def redirect_output(self): - """ - 重定向标准输出到消息框 - """ - class TextRedirector: - def __init__(self, text_widget): - self.text_widget = text_widget - - def write(self, message): - self.text_widget.config(state="normal") - self.text_widget.insert("end", message) - self.text_widget.see("end") - self.text_widget.config(state="disabled") - - def flush(self): - pass - - sys.stdout = TextRedirector(self.message_box) - sys.stderr = TextRedirector(self.message_box) - - # 修改 update_task_ui 方法 - def update_task_ui(self): - # 检查是否有已存在的任务文件 - task_dir = os.path.join("User", "task") - if os.path.exists(task_dir): - for file_name in os.listdir(task_dir): - file_base, file_ext = os.path.splitext(file_name) - if file_ext == ".c" and file_base not in ["init", "user_task"] and file_base not in [task_var.get() for task_var, _ in self.task_vars]: - frequency = 100 # 默认频率 - user_task_header_path = os.path.join("User", "task", "user_task.h") - if os.path.exists(user_task_header_path): - try: - with open(user_task_header_path, "r", encoding="utf-8") as f: - content = f.read() - pattern = rf"#define\s+TASK_FREQ_{file_base.upper()}\s*\((\d+)[uU]?\)" - match = re.search(pattern, content) - if match: - frequency = int(match.group(1)) - print(f"从 user_task.h 文件中读取到任务 {file_base} 的频率: {frequency}") - except Exception as e: - print(f"读取 user_task.h 文件时出错: {e}") - - new_task_var = tk.StringVar(value=file_base) - self.task_vars.append((new_task_var, tk.IntVar(value=frequency))) - - # 清空任务框架中的所有子组件 - for widget in self.task_frame.winfo_children(): - widget.destroy() - - - # 设置任务管理框的固定宽度 - self.task_frame.config(width=400) - - # 显示任务列表 - for i, (task_var, freq_var) in enumerate(self.task_vars): - task_row = ttk.Frame(self.task_frame, width=400) - task_row.pack(fill="x", pady=5) - - ttk.Entry(task_row, textvariable=task_var, width=20).pack(side="left", padx=5) - ttk.Label(task_row, text="频率:").pack(side="left", padx=5) - ttk.Spinbox(task_row, from_=1, to=1000, textvariable=freq_var, width=5).pack(side="left", padx=5) - ttk.Button(task_row, text="删除", command=lambda idx=i: self.remove_task(idx)).pack(side="left", padx=5) - - # 添加新任务按钮 - add_task_button = ttk.Button(self.task_frame, text="添加任务", command=self.add_task) - add_task_button.pack(pady=10) - - - # 修改 add_task 方法 - def add_task(self): - new_task_var = tk.StringVar(value=f"Task_{len(self.task_vars) + 1}") - new_freq_var = tk.IntVar(value=100) # 默认频率为 100 - self.task_vars.append((new_task_var, new_freq_var)) - self.update_task_ui() - - # 修改 remove_task 方法 - def remove_task(self, idx): - del self.task_vars[idx] - self.update_task_ui() - - # 更新文件夹显示 - def update_folder_display(self): - for widget in self.folder_frame.winfo_children(): - widget.destroy() - - folders = ["User/bsp", "User/component", "User/device", "User/module"] - # if self.ioc_data and self.check_freertos_enabled(self.ioc_data): - # folders.append("User/task") - - for folder in folders: - # 去掉 "User/" 前缀 - display_name = folder.replace("User/", "") - tk.Label(self.folder_frame, text=display_name).pack() - - # 更新 .h 文件复选框 - def update_header_files(self): - for widget in self.header_files_frame.winfo_children(): - widget.destroy() - - folders = ["bsp", "component", "device", "module"] - dependencies = defaultdict(list) - - for folder in folders: - folder_dir = os.path.join(REPO_DIR, "User", folder) - if os.path.exists(folder_dir): - dependencies_file = os.path.join(folder_dir, "dependencies.csv") - if os.path.exists(dependencies_file): - with open(dependencies_file, "r", encoding="utf-8") as f: - reader = csv.reader(f) - for row in reader: - if len(row) == 2: - dependencies[row[0]].append(row[1]) - - # 创建复选框 - for folder in folders: - folder_dir = os.path.join(REPO_DIR, "User", folder) - if os.path.exists(folder_dir): - module_frame = ttk.LabelFrame(self.header_files_frame, text=folder.capitalize(), padding=(10, 10)) - module_frame.pack(fill="x", pady=5) - - row, col = 0, 0 - for file in os.listdir(folder_dir): - file_base, file_ext = os.path.splitext(file) - if file_ext == ".h" and file_base != folder: - var = tk.BooleanVar(value=False) - self.header_file_vars[file_base] = var - - checkbox = ttk.Checkbutton( - module_frame, - text=file_base, - variable=var, - command=lambda fb=file_base: self.handle_dependencies(fb, dependencies) - ) - checkbox.grid(row=row, column=col, padx=5, pady=5, sticky="w") - col += 1 - if col >= 6: - col = 0 - row += 1 - - - - def handle_dependencies(self, file_base, dependencies): - """ - 根据依赖关系自动勾选相关模块 - """ - if file_base in self.header_file_vars and self.header_file_vars[file_base].get(): - # 如果当前模块被选中,自动勾选其依赖项 - for dependency in dependencies.get(file_base, []): - dep_base = os.path.basename(dependency) - if dep_base in self.header_file_vars: - self.header_file_vars[dep_base].set(True) - - # 在 MRobotApp 类中添加以下方法 - def generate_task_files(self): - try: - template_file_path = os.path.join(REPO_DIR, "User", "task", "task.c.template") - task_dir = os.path.join("User", "task") - - if not os.path.exists(template_file_path): - print(f"模板文件 {template_file_path} 不存在,无法生成 task.c 文件!") - return - - os.makedirs(task_dir, exist_ok=True) - - with open(template_file_path, "r", encoding="utf-8") as f: - template_content = f.read() - - # 为每个任务生成对应的 task.c 文件 - for task_var, _ in self.task_vars: # 解包元组 - task_name = f"Task_{task_var.get()}" # 添加前缀 Task_ - task_file_path = os.path.join(task_dir, f"{task_var.get().lower()}.c") # 文件名保持原始小写 - - # 替换模板中的占位符 - task_content = template_content.replace("{{task_name}}", task_name) - task_content = task_content.replace("{{task_function}}", task_name) - task_content = task_content.replace( - "{{task_frequency}}", f"TASK_FREQ_{task_var.get().upper()}" - ) # 替换为 user_task.h 中的宏定义 - task_content = task_content.replace("{{task_delay}}", f"TASK_INIT_DELAY_{task_var.get().upper()}") - - with open(task_file_path, "w", encoding="utf-8") as f: - f.write(task_content) - - print(f"已成功生成 {task_file_path} 文件!") - except Exception as e: - print(f"生成 task.c 文件时出错: {e}") - # 修改 user_task.c 文件 - def modify_user_task_file(self): - try: - template_file_path = os.path.join(REPO_DIR, "User", "task", "user_task.c.template") - generated_task_file_path = os.path.join("User", "task", "user_task.c") - - if not os.path.exists(template_file_path): - print(f"模板文件 {template_file_path} 不存在,无法生成 user_task.c 文件!") - return - - os.makedirs(os.path.dirname(generated_task_file_path), exist_ok=True) - - with open(template_file_path, "r", encoding="utf-8") as f: - template_content = f.read() - - # 生成任务属性定义 - task_attr_definitions = "\n".join([ - f"""const osThreadAttr_t attr_{task_var.get().lower()} = {{ - .name = "{task_var.get()}", - .priority = osPriorityNormal, - .stack_size = 128 * 4, - }};""" - for task_var, _ in self.task_vars # 解包元组 - ]) - - # 替换模板中的占位符 - task_content = template_content.replace("{{task_attr_definitions}}", task_attr_definitions) - - with open(generated_task_file_path, "w", encoding="utf-8") as f: - f.write(task_content) - - print(f"已成功生成 {generated_task_file_path} 文件!") - except Exception as e: - print(f"修改 user_task.c 文件时出错: {e}") - # ...existing code... - - def generate_user_task_header(self): - try: - template_file_path = os.path.join(REPO_DIR, "User", "task", "user_task.h.template") - header_file_path = os.path.join("User", "task", "user_task.h") - - if not os.path.exists(template_file_path): - print(f"模板文件 {template_file_path} 不存在,无法生成 user_task.h 文件!") - return - - os.makedirs(os.path.dirname(header_file_path), exist_ok=True) - - # 如果 user_task.h 已存在,提取 /* USER MESSAGE BEGIN */ 和 /* USER MESSAGE END */ 区域内容 - existing_msgq_content = "" - if os.path.exists(header_file_path): - with open(header_file_path, "r", encoding="utf-8") as f: - content = f.read() - # 提取 /* USER MESSAGE BEGIN */ 和 /* USER MESSAGE END */ 区域内容 - match = re.search(r"/\* USER MESSAGE BEGIN \*/\s*(.*?)\s*/\* USER MESSAGE END \*/", content, re.DOTALL) - if match: - existing_msgq_content = match.group(1).strip() - print("已存在的 msgq 区域内容:") - print(existing_msgq_content) - - with open(template_file_path, "r", encoding="utf-8") as f: - template_content = f.read() - - # 定义占位符内容 - thread_definitions = "\n".join([f" osThreadId_t {task_var.get().lower()};" for task_var, _ in self.task_vars]) - msgq_definitions = existing_msgq_content if existing_msgq_content else " osMessageQueueId_t default_msgq;" - freq_definitions = "\n".join([f" float {task_var.get().lower()};" for task_var, _ in self.task_vars]) - last_up_time_definitions = "\n".join([f" uint32_t {task_var.get().lower()};" for task_var, _ in self.task_vars]) - task_attr_declarations = "\n".join([f"extern const osThreadAttr_t attr_{task_var.get().lower()};" for task_var, _ in self.task_vars]) - task_function_declarations = "\n".join([f"void Task_{task_var.get()}(void *argument);" for task_var, _ in self.task_vars]) - task_frequency_definitions = "\n".join([ - f"#define TASK_FREQ_{task_var.get().upper()} ({freq_var.get()}u)" - for task_var, freq_var in self.task_vars - ]) - task_init_delay_definitions = "\n".join([f"#define TASK_INIT_DELAY_{task_var.get().upper()} (0u)" for task_var, _ in self.task_vars]) - task_handle_definitions = "\n".join([f" osThreadId_t {task_var.get().lower()};" for task_var, _ in self.task_vars]) - - # 替换模板中的占位符 - header_content = template_content.replace("{{thread_definitions}}", thread_definitions) - header_content = header_content.replace("{{msgq_definitions}}", msgq_definitions) - header_content = header_content.replace("{{freq_definitions}}", freq_definitions) - header_content = header_content.replace("{{last_up_time_definitions}}", last_up_time_definitions) - header_content = header_content.replace("{{task_attr_declarations}}", task_attr_declarations) - header_content = header_content.replace("{{task_function_declarations}}", task_function_declarations) - header_content = header_content.replace("{{task_frequency_definitions}}", task_frequency_definitions) - header_content = header_content.replace("{{task_init_delay_definitions}}", task_init_delay_definitions) - header_content = header_content.replace("{{task_handle_definitions}}", task_handle_definitions) - - # 如果存在 /* USER MESSAGE BEGIN */ 区域内容,则保留 - if existing_msgq_content: - header_content = re.sub( - r"/\* USER MESSAGE BEGIN \*/\s*.*?\s*/\* USER MESSAGE END \*/", - f"/* USER MESSAGE BEGIN */\n\n {existing_msgq_content}\n\n /* USER MESSAGE END */", - header_content, - flags=re.DOTALL - ) - - with open(header_file_path, "w", encoding="utf-8") as f: - f.write(header_content) - - print(f"已成功生成 {header_file_path} 文件!") - except Exception as e: - print(f"生成 user_task.h 文件时出错: {e}") - - def generate_init_file(self): - try: - template_file_path = os.path.join(REPO_DIR, "User", "task", "init.c.template") - generated_file_path = os.path.join("User", "task", "init.c") - - if not os.path.exists(template_file_path): - print(f"模板文件 {template_file_path} 不存在,无法生成 init.c 文件!") - return - - os.makedirs(os.path.dirname(generated_file_path), exist_ok=True) - - # 如果 init.c 已存在,提取 /* USER MESSAGE BEGIN */ 和 /* USER MESSAGE END */ 区域内容 - existing_msgq_content = "" - if os.path.exists(generated_file_path): - with open(generated_file_path, "r", encoding="utf-8") as f: - content = f.read() - # 提取 /* USER MESSAGE BEGIN */ 和 /* USER MESSAGE END */ 区域内容 - match = re.search(r"/\* USER MESSAGE BEGIN \*/\s*(.*?)\s*/\* USER MESSAGE END \*/", content, re.DOTALL) - if match: - existing_msgq_content = match.group(1).strip() - print("已存在的消息队列区域内容:") - print(existing_msgq_content) - - with open(template_file_path, "r", encoding="utf-8") as f: - template_content = f.read() - - # 生成任务创建代码 - thread_creation_code = "\n".join([ - f" task_runtime.thread.{task_var.get().lower()} = osThreadNew(Task_{task_var.get()}, NULL, &attr_{task_var.get().lower()});" - for task_var, _ in self.task_vars # 解包元组 - ]) - - # 替换模板中的占位符 - init_content = template_content.replace("{{thread_creation_code}}", thread_creation_code) - - # 如果存在 /* USER MESSAGE BEGIN */ 区域内容,则保留 - if existing_msgq_content: - init_content = re.sub( - r"/\* USER MESSAGE BEGIN \*/\s*.*?\s*/\* USER MESSAGE END \*/", - f"/* USER MESSAGE BEGIN */\n {existing_msgq_content}\n /* USER MESSAGE END */", - init_content, - flags=re.DOTALL - ) - - with open(generated_file_path, "w", encoding="utf-8") as f: - f.write(init_content) - - print(f"已成功生成 {generated_file_path} 文件!") - except Exception as e: - print(f"生成 init.c 文件时出错: {e}") - - # 修改 generate_action 方法 - - def generate_action(self): - def task(): - # 检查并创建目录(与 FreeRTOS 状态无关的模块始终创建) - self.create_directories() - - # 复制 .gitignore 文件 - if self.add_gitignore_var.get(): - self.copy_file_from_repo(".gitignore", ".gitignore") - - # 如果启用了 FreeRTOS,复制相关文件 - if self.ioc_data and self.check_freertos_enabled(self.ioc_data): - self.copy_file_from_repo("src/freertos.c", os.path.join("Core", "Src", "freertos.c")) - - # 定义需要处理的文件夹(与 FreeRTOS 状态无关) - folders = ["bsp", "component", "device", "module"] - - # 遍历每个文件夹,复制选中的 .h 和 .c 文件 - for folder in folders: - folder_dir = os.path.join(REPO_DIR, "User", folder) - if not os.path.exists(folder_dir): - continue # 如果文件夹不存在,跳过 - - for file_name in os.listdir(folder_dir): - file_base, file_ext = os.path.splitext(file_name) - if file_ext not in [".h", ".c"]: - continue # 只处理 .h 和 .c 文件 - - # 强制复制与文件夹同名的文件 - if file_base == folder: - src_path = os.path.join(folder_dir, file_name) - dest_path = os.path.join("User", folder, file_name) - self.copy_file_from_repo(src_path, dest_path) - print(f"强制复制与文件夹同名的文件: {file_name}") - continue # 跳过后续检查,直接复制 - - # 检查是否选中了对应的文件 - if file_base in self.header_file_vars and self.header_file_vars[file_base].get(): - src_path = os.path.join(folder_dir, file_name) - dest_path = os.path.join("User", folder, file_name) - self.copy_file_from_repo(src_path, dest_path) - - # 如果启用了 FreeRTOS,执行任务相关的生成逻辑 - if self.ioc_data and self.check_freertos_enabled(self.ioc_data): - # 修改 user_task.c 文件 - self.modify_user_task_file() - - # 生成 user_task.h 文件 - self.generate_user_task_header() - - # 生成 init.c 文件 - self.generate_init_file() - - # 生成 task.c 文件 - self.generate_task_files() - - # # 自动配置环境 - # if self.auto_configure_var.get(): - - # self.auto_configure_environment() - - - threading.Thread(target=task).start() - - # 程序关闭时清理 - def on_closing(self, root): - self.delete_repo() - root.destroy() - - -# 程序入口 -if __name__ == "__main__": - app = MRobotApp() - app.initialize() \ No newline at end of file diff --git a/README.md b/README.md index f1f246a..bf02c41 100644 --- a/README.md +++ b/README.md @@ -90,4 +90,36 @@ pyinstaller --onefile --windowed pyinstaller MR_Toolbox.py --onefile --noconsole --icon=img\M.ico --add-data "mr_tool_img\MRobot.png;mr_tool_img" -pyinstaller MR_Tool.py --onefile --noconsole --icon=img\M.ico --add-data "mr_tool_img\MRobot.png;mr_tool_img" --add-data "src;src" --add-data "User;User" \ No newline at end of file +pyinstaller MR_Tool.py --onefile --noconsole --icon=img\M.ico --add-data "mr_tool_img\MRobot.png;mr_tool_img" --add-data "src;src" --add-data "User;User" + +pyinstaller --noconfirm --onefile --windowed ^ + --add-data "User_code;User_code" ^ + --add-data "img;img" ^ + --icon "img\M.ico" ^ + MRobot.py + + +pyinstaller --noconfirm --onefile --windowed --add-data "img;img" --add-data "User_code;User_code" --add-data "mech_lib;mech_lib" --icon=img/MRobot.ico MRobot.py + +python3 -m PyInstaller --noconfirm --onefile --windowed \ + --add-data "img:img" \ + --add-data "User_code:User_code" \ + --add-data "mech_lib:mech_lib" \ + --icon=img/MRobot.ico \ + MRobot.py + + +python3 -m PyInstaller --windowed --name MRobot \ + --add-data "img:MRobot.app/Contents/Resources/img" \ + --add-data "User_code:MRobot.app/Contents/Resources/User_code" \ + --add-data "mech_lib:MRobot.app/Contents/Resources/mech_lib" \ + MRobot.py + + + +pyinstaller --noconfirm --onefile --windowed --add-data "img;img" --add-data "User_code;User_code" --icon=img/M.ico MRobot.py + + +pyinstaller MRobot.py + +pyinstaller --noconfirm --onefile --windowed --icon=img/M.ico --add-data "img;img" --add-data "User_code;User_code" --add-data "mech_lib;mech_lib" MRobot.py \ No newline at end of file diff --git a/User_code/.DS_Store b/User_code/.DS_Store index cf5987b9c9d08da25e3fdbab18b482108d144043..1a99dbad946c35ed019ee191f5672a6bb04984d1 100644 GIT binary patch delta 109 zcmZoMXfc=|#>AjHu~68Ik%57Mg`tEYk)fC&JEb@|Cn-Na2P6mtOc06z#06pj2DtoY sK@KsN%?cb7m^ZU?@N)po0*ZWRp3E@~ literal 6148 zcmeH~&u-H|5XNU4liE~BIe_Q|$r9HH(h^WBE+&)%SB&5QDA=_HR$XrtJI%q0@Qibmx#n@mh2Gqh{%PrI=4~$!+4y1%{EMr z2NgVrJdAT0qs7x%vji-G|D6Eu-44Z6(&TmC+P^O_^5~B;wFnax&&!F~R*s_S2X4KUGLO&eQT#4T=i}bpm$Im$tVpLSAxlz( ze0-l3iJXt*tVl|g8|neqbG>nIyRLWl_WS%qI(TLlNfcA$%21BG76}OTZFn z6X@t>kI(;C7vKNeNw#GPSOPbSfN&1NgAtZw&epZX@mcG`Kf~ELuF #include "FreeRTOS.h" #include "task.h" -// 定义任务运行时结构体 +/* USER INCLUDE BEGIN */ + +/* USER INCLUDE END */ +/* Exported constants ------------------------------------------------------- */ +/* 任务运行频率 */ +{{task_frequency_definitions}} + +/* 任务初始化延时ms */ +#define TASK_INIT_DELAY (100u) +{{task_init_delay_definitions}} + +/* Exported defines --------------------------------------------------------- */ +/* Exported macro ----------------------------------------------------------- */ +/* Exported types ----------------------------------------------------------- */ + +/* 任务运行时结构体 */ typedef struct { /* 各任务,也可以叫做线程 */ struct { @@ -16,41 +31,47 @@ typedef struct { } thread; /* USER MESSAGE BEGIN */ - struct { osMessageQueueId_t user_msg; /* 用户自定义任务消息队列 */ } msgq; - /* USER MESSAGE END */ + /* 机器人状态 */ + struct { + float battery; /* 电池电量百分比 */ + float vbat; /* 电池电压 */ + float cpu_temp; /* CPU温度 */ + } status; + + /* USER CONFIG BEGIN */ + + /* USER CONFIG END */ + + /* 各任务的stack使用 */ + struct { +{{stack_definitions}} + } stack_water_mark; + + /* 各任务运行频率 */ struct { {{freq_definitions}} - } freq; /* 任务运行频率 */ + } freq; + /* 任务最近运行时间 */ struct { {{last_up_time_definitions}} - } last_up_time; /* 任务最近运行时间 */ + } last_up_time; + } Task_Runtime_t; -// 任务频率 -{{task_frequency_definitions}} -// 任务初始化延时 -#define TASK_INIT_DELAY (100u) -{{task_init_delay_definitions}} - -// 任务句柄 -typedef struct { -{{task_handle_definitions}} -} Task_Handles_t; - -// 任务运行时结构体 +/* 任务运行时结构体 */ extern Task_Runtime_t task_runtime; -// 初始化任务句柄 +/* 初始化任务句柄 */ extern const osThreadAttr_t attr_init; {{task_attr_declarations}} -// 任务函数声明 +/* 任务函数声明 */ void Task_Init(void *argument); {{task_function_declarations}} diff --git a/fluentui.py b/fluentui.py deleted file mode 100644 index c434363..0000000 --- a/fluentui.py +++ /dev/null @@ -1,168 +0,0 @@ -import sys -import webbrowser -import serial -import serial.tools.list_ports - -from PyQt5.QtCore import Qt, QSize, pyqtSignal -from PyQt5.QtGui import QPixmap, QFont -from PyQt5.QtWidgets import ( - QWidget, QVBoxLayout, QApplication, QLabel, QGroupBox, QGridLayout, QFrame, - QHBoxLayout, QComboBox, QTextEdit, QLineEdit -) - -from qfluentwidgets import ( - NavigationInterface, NavigationItemPosition, MessageBox, - setTheme, Theme, FluentWindow, NavigationAvatarWidget, - InfoBar, InfoBarPosition, PushButton, FluentIcon -) -from qfluentwidgets import FluentIcon as FIF - -# ===================== 页面基类 ===================== -class BaseInterface(QWidget): - """所有页面的基类,页面内容完全自定义""" - def __init__(self, parent=None): - super().__init__(parent=parent) - -# ===================== 首页界面 ===================== -class HomeInterface(BaseInterface): - def __init__(self, parent=None): - super().__init__(parent=parent) - self.setObjectName("homeInterface") - layout = QVBoxLayout() - self.setLayout(layout) -# ===================== 代码生成页面 ===================== -class DataInterface(BaseInterface): - def __init__(self, parent=None): - super().__init__(parent=parent) - self.setObjectName("dataInterface") - # 空页面示例 - layout = QVBoxLayout() - self.setLayout(layout) - -# ===================== 串口终端界面 ===================== -class SerialTerminalInterface(BaseInterface): - def __init__(self, parent=None): - super().__init__(parent=parent) - self.setObjectName("serialTerminalInterface") - layout = QVBoxLayout() - -# ===================== 设置界面 ===================== -class SettingInterface(BaseInterface): - def __init__(self, parent=None): - super().__init__(parent=parent) - self.setObjectName("settingInterface") - layout = QVBoxLayout() - self.themeBtn = PushButton( - "切换夜间", self, FluentIcon.BRUSH - ) - self.themeBtn.setFixedWidth(120) - self.themeBtn.clicked.connect(self.onThemeBtnClicked) - layout.addWidget(self.themeBtn) - layout.addStretch(1) - self.setLayout(layout) - - # 监听主题变化 - mw = self.window() - if hasattr(mw, "themeChanged"): - mw.themeChanged.connect(self.updateThemeBtn) - - def onThemeBtnClicked(self): - mw = self.window() - if hasattr(mw, "toggleTheme"): - mw.toggleTheme() - - def updateThemeBtn(self, theme): - if theme == Theme.LIGHT: - self.themeBtn.setText("切换夜间") - else: - self.themeBtn.setText("切换白天") -# ===================== 帮助与关于界面 ===================== -class HelpInterface(BaseInterface): - def __init__(self, parent=None): - super().__init__(parent=parent) - self.setObjectName("helpInterface") - layout = QVBoxLayout() - self.setLayout(layout) - -class AboutInterface(BaseInterface): - def __init__(self, parent=None): - super().__init__(parent=parent) - self.setObjectName("aboutInterface") - layout = QVBoxLayout() - self.setLayout(layout) - -# ===================== 主窗口与导航 ===================== -class MainWindow(FluentWindow): - themeChanged = pyqtSignal(Theme) - - def __init__(self): - super().__init__() - self.setWindowTitle("MR_ToolBox") - self.resize(1000, 700) - self.setMinimumSize(800, 600) - setTheme(Theme.LIGHT) - self.theme = Theme.LIGHT - - self.page_registry = [ - (HomeInterface(self), FIF.HOME, "首页", NavigationItemPosition.TOP), - (DataInterface(self), FIF.LIBRARY, "MRobot代码生成", NavigationItemPosition.SCROLL), - (SerialTerminalInterface(self), FIF.COMMAND_PROMPT, "串口终端", NavigationItemPosition.SCROLL), - (SettingInterface(self), FIF.SETTING, "设置", NavigationItemPosition.BOTTOM), - (HelpInterface(self), FIF.HELP, "帮助", NavigationItemPosition.BOTTOM), - (AboutInterface(self), FIF.INFO, "关于", NavigationItemPosition.BOTTOM), - ] - self.initNavigation() - - # 把切换主题按钮放到标题栏右侧 - self.themeBtn = PushButton("切换夜间", self, FluentIcon.BRUSH) - self.themeBtn.setFixedWidth(120) - self.themeBtn.clicked.connect(self.toggleTheme) - self.addTitleBarWidget(self.themeBtn, align=Qt.AlignRight) - - def initNavigation(self): - for page, icon, name, position in self.page_registry: - self.addSubInterface(page, icon, name, position) - self.navigationInterface.addSeparator() - avatar = NavigationAvatarWidget('用户', ':/qfluentwidgets/images/avatar.png') - self.navigationInterface.addWidget( - routeKey='avatar', - widget=avatar, - onClick=self.showUserInfo, - position=NavigationItemPosition.BOTTOM - ) - - def toggleTheme(self): - if self.theme == Theme.LIGHT: - setTheme(Theme.DARK) - self.theme = Theme.DARK - self.themeBtn.setText("切换白天") - else: - setTheme(Theme.LIGHT) - self.theme = Theme.LIGHT - self.themeBtn.setText("切换夜间") - self.themeChanged.emit(self.theme) - self.refreshStyle() - - def refreshStyle(self): - def refresh(widget): - widget.setStyleSheet(widget.styleSheet()) - for child in widget.findChildren(QWidget): - refresh(child) - refresh(self) - - def showUserInfo(self): - MessageBox("用户信息", "当前登录用户:管理员", self).exec() -# ===================== 程序入口 ===================== -def main(): - QApplication.setHighDpiScaleFactorRoundingPolicy( - Qt.HighDpiScaleFactorRoundingPolicy.PassThrough) - QApplication.setAttribute(Qt.ApplicationAttribute.AA_EnableHighDpiScaling) - QApplication.setAttribute(Qt.ApplicationAttribute.AA_UseHighDpiPixmaps) - - app = QApplication(sys.argv) - window = MainWindow() - window.show() - sys.exit(app.exec_()) - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/img/.DS_Store b/img/.DS_Store index d67ede835e2529c9521382b5f2feb142c8b38fcc..77445c989fa199b5f1b7d4736b907a506b3c6cf5 100644 GIT binary patch delta 69 zcmZoMXfc@J&&|fbz`)4BAi%(ozA@lz1Y delta 97 zcmZoMXfc@J&&|QWz`)4BAi%(ozcFefBRh!C%HTWMj!AtoKa<|%Or{Wab_QRDAO^$9 u|Cq#>7-c7~V+t0{WXNYo_RPsoPRhwo0%`&32g}HBW@KK*vYDOZFFydu#ubSG diff --git a/img/M.ico b/img/M.ico index 400b26d9fbbedb8b9abcd8b50c6d28239ec70faa..b7df7828a0ab2dd881ed4138af3cb414e1f5c373 100644 GIT binary patch literal 20389 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

RAv1#DH5Cq~RaGLhsYy%Q7 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%0Ac#NA52rn`K|V-QLN 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 diff --git a/img/M2.ico b/img/M2.ico new file mode 100644 index 0000000000000000000000000000000000000000..400b26d9fbbedb8b9abcd8b50c6d28239ec70faa GIT binary patch literal 34573 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

RAv1#DH5Cq~RaGLhsYy%Q7 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%0Ac#NA52rn`K|V-QLN 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 literal 0 HcmV?d00001 diff --git a/img/m1.png b/img/m1.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8bccbc9628e78fa26ff2f28d79d67d7f14df86 GIT binary patch literal 575880 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 z

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

  • lX_OG$bSZB1 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�ok~(4hZN9jX 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 literal 0 HcmV?d00001 diff --git a/mech_lib/README.md b/mech_lib/README.md new file mode 100644 index 0000000..e476d43 --- /dev/null +++ b/mech_lib/README.md @@ -0,0 +1 @@ +# 机械常用零件库 \ No newline at end of file diff --git a/pngico.py b/pngico.py index 8a74659..cc04b03 100644 --- a/pngico.py +++ b/pngico.py @@ -1,42 +1,18 @@ from PIL import Image import os -def crop_transparent_background(input_path, output_path): - """ - 裁切 PNG 图片的透明背景并保存。 - - :param input_path: 输入图片路径 - :param output_path: 输出图片路径 - """ - try: - # 打开图片 - img = Image.open(input_path) - - # 确保图片是 RGBA 模式 - if img.mode != "RGBA": - img = img.convert("RGBA") - - # 获取图片的 alpha 通道 - bbox = img.getbbox() - - if bbox: - # 裁切图片 - cropped_img = img.crop(bbox) - # 保存裁切后的图片 - cropped_img.save(output_path, format="PNG") - print(f"图片已保存到: {output_path}") - else: - print("图片没有透明背景或为空。") - except Exception as e: - print(f"处理图片时出错: {e}") +def png_to_ico(png_path, ico_path=None, sizes=[(256,256), (128,128), (64,64), (32,32), (16,16)]): + if not os.path.isfile(png_path): + print(f"文件不存在: {png_path}") + return + if ico_path is None: + ico_path = os.path.splitext(png_path)[0] + ".ico" + img = Image.open(png_path) + img.save(ico_path, format='ICO', sizes=sizes) + print(f"已生成: {ico_path}") if __name__ == "__main__": - # 示例:输入和输出路径 - input_file = "C:\Mac\Home\Desktop\MRobot\img\M.png" # 替换为你的输入图片路径 - output_file = "C:\Mac\Home\Desktop\MRobot\img\M.png" # 替换为你的输出图片路径 - - # 检查文件是否存在 - if os.path.exists(input_file): - crop_transparent_background(input_file, output_file) - else: - print(f"输入文件不存在: {input_file}") \ No newline at end of file + # 直接写死路径 + png = r"C:\Mac\Home\Documents\R\MRobot\img\m1.png" + ico = r"c:\Mac\Home\Documents\R\MRobot\img\M1.ico" + png_to_ico(png, ico) \ No newline at end of file diff --git a/polynomial.py b/polynomial.py deleted file mode 100644 index f7057eb..0000000 --- a/polynomial.py +++ /dev/null @@ -1,286 +0,0 @@ -import sys -import numpy as np -import pandas as pd -from PyQt5.QtWidgets import ( - QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QSpinBox, - QLabel, QTableWidget, QTableWidgetItem, QFileDialog, QTextEdit, - QComboBox, QMessageBox, QHeaderView -) -from PyQt5.QtGui import QFont -from PyQt5.QtCore import Qt -import matplotlib -from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas -from matplotlib.figure import Figure - -class PolyFitApp(QWidget): - def __init__(self): - super().__init__() - self.setWindowTitle("MRobot 多项式拟合工具") - self.resize(1440, 1280) - self.setFont(QFont("微软雅黑", 11)) - self.center() - - self.data_x = [] - self.data_y = [] - self.last_coeffs = None - self.last_xmin = None - self.last_xmax = None - - # 主布局 - main_layout = QHBoxLayout(self) - main_layout.setContentsMargins(20, 20, 20, 20) - main_layout.setSpacing(20) - left_layout = QVBoxLayout() - left_layout.setSpacing(12) - right_layout = QVBoxLayout() - right_layout.setSpacing(12) - main_layout.addLayout(left_layout, 0) - main_layout.addLayout(right_layout, 1) - - # 数据输入区 - self.table = QTableWidget(0, 2) - self.table.setFont(QFont("Consolas", 11)) - self.table.setHorizontalHeaderLabels(["x", "y"]) - self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) - self.table.setSelectionBehavior(QTableWidget.SelectRows) - left_layout.addWidget(self.table) - - btn_row = QHBoxLayout() - self.add_row_btn = QPushButton("添加数据") - self.add_row_btn.setStyleSheet("color: #333;") - self.add_row_btn.clicked.connect(self.add_point_row) - btn_row.addWidget(self.add_row_btn) - - self.del_row_btn = QPushButton("删除选中行") - self.del_row_btn.setStyleSheet("color: #333;") - self.del_row_btn.clicked.connect(self.delete_selected_rows) - btn_row.addWidget(self.del_row_btn) - left_layout.addLayout(btn_row) - - # 导入导出按钮区 - file_btn_row = QHBoxLayout() - self.import_btn = QPushButton("导入Excel文件") - self.import_btn.setStyleSheet("font-weight: bold; color: #333;") - self.import_btn.clicked.connect(self.load_excel) - file_btn_row.addWidget(self.import_btn) - - self.export_btn = QPushButton("导出Excel文件") - self.export_btn.setStyleSheet("font-weight: bold; color: #333;") - self.export_btn.clicked.connect(self.export_excel_and_plot) - file_btn_row.addWidget(self.export_btn) - left_layout.addLayout(file_btn_row) - - # 拟合参数区 - param_layout = QHBoxLayout() - param_layout.addWidget(QLabel("多项式阶数:")) - self.order_spin = QSpinBox() - self.order_spin.setRange(1, 10) - self.order_spin.setValue(2) - param_layout.addWidget(self.order_spin) - left_layout.addLayout(param_layout) - - self.fit_btn = QPushButton("拟合并显示") - self.fit_btn.setStyleSheet("font-weight: bold; color: #333;") - self.fit_btn.clicked.connect(self.fit_and_plot) - left_layout.addWidget(self.fit_btn) - - # 输出区 - self.output = QTextEdit() - self.output.setReadOnly(False) - self.output.setFont(QFont("Consolas", 10)) - self.output.setMaximumHeight(150) - left_layout.addWidget(self.output) - - code_layout = QHBoxLayout() - code_layout.addWidget(QLabel("输出代码格式:")) - self.code_type = QComboBox() - self.code_type.addItems(["C", "C++", "Python"]) - code_layout.addWidget(self.code_type) - self.gen_code_btn = QPushButton("生成函数代码") - self.gen_code_btn.setStyleSheet("color: #333;") - self.gen_code_btn.clicked.connect(self.generate_code) - code_layout.addWidget(self.gen_code_btn) - left_layout.addLayout(code_layout) - - # 拟合曲线区 - self.figure = Figure(figsize=(5, 4)) - self.canvas = FigureCanvas(self.figure) - right_layout.addWidget(self.canvas) - - def center(self): - qr = self.frameGeometry() - cp = QApplication.desktop().availableGeometry().center() - qr.moveCenter(cp) - self.move(qr.topLeft()) - - def add_point_row(self, x_val="", y_val=""): - row = self.table.rowCount() - self.table.insertRow(row) - self.table.setItem(row, 0, QTableWidgetItem(str(x_val))) - self.table.setItem(row, 1, QTableWidgetItem(str(y_val))) - - def delete_selected_rows(self): - selected = self.table.selectionModel().selectedRows() - for idx in sorted(selected, reverse=True): - self.table.removeRow(idx.row()) - - def load_excel(self): - file, _ = QFileDialog.getOpenFileName(self, "选择Excel文件", "", "Excel Files (*.xlsx *.xls)") - if file: - try: - data = pd.read_excel(file, usecols=[0, 1]) - new_x = data.iloc[:, 0].values.tolist() - new_y = data.iloc[:, 1].values.tolist() - for x, y in zip(new_x, new_y): - self.add_point_row(x, y) - QMessageBox.information(self, "成功", "数据导入成功!") - except Exception as e: - QMessageBox.critical(self, "错误", f"读取Excel失败: {e}") - - def export_excel_and_plot(self): - file, _ = QFileDialog.getSaveFileName(self, "导出Excel文件", "", "Excel Files (*.xlsx *.xls)") - if file: - x_list, y_list = [], [] - for row in range(self.table.rowCount()): - try: - x = float(self.table.item(row, 0).text()) - y = float(self.table.item(row, 1).text()) - x_list.append(x) - y_list.append(y) - except Exception: - continue - if not x_list or not y_list: - QMessageBox.warning(self, "导出失败", "没有可导出的数据!") - return - df = pd.DataFrame({'x': x_list, 'y': y_list}) - try: - df.to_excel(file, index=False) - # 导出同名png图像 - png_file = file - if png_file.lower().endswith('.xlsx') or png_file.lower().endswith('.xls'): - png_file = png_file.rsplit('.', 1)[0] + '.png' - else: - png_file = png_file + '.png' - self.figure.savefig(png_file, dpi=150, bbox_inches='tight') - QMessageBox.information(self, "导出成功", f"数据已成功导出到Excel文件!\n图像已导出为:{png_file}") - except Exception as e: - QMessageBox.critical(self, "导出错误", f"导出Excel或图像失败: {e}") - - def get_manual_points(self): - x_list, y_list = [], [] - for row in range(self.table.rowCount()): - try: - x = float(self.table.item(row, 0).text()) - y = float(self.table.item(row, 1).text()) - x_list.append(x) - y_list.append(y) - except Exception: - continue - return x_list, y_list - - def fit_and_plot(self): - matplotlib.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei'] - matplotlib.rcParams['axes.unicode_minus'] = False - matplotlib.rcParams['font.size'] = 14 - self.data_x, self.data_y = self.get_manual_points() - try: - order = int(self.order_spin.value()) - except ValueError: - QMessageBox.warning(self, "输入错误", "阶数必须为整数!") - return - n_points = len(self.data_x) - if n_points < order + 1: - QMessageBox.warning(self, "数据不足", "数据点数量不足以拟合该阶多项式!") - return - x = np.array(self.data_x, dtype=np.float64) - y = np.array(self.data_y, dtype=np.float64) - x_min, x_max = x.min(), x.max() - if x_max - x_min == 0: - QMessageBox.warning(self, "数据错误", "所有x值都相同,无法拟合!") - return - try: - coeffs = np.polyfit(x, y, order) - except Exception as e: - QMessageBox.critical(self, "拟合错误", f"多项式拟合失败:{e}") - return - poly = np.poly1d(coeffs) - expr = "y = " + " + ".join([f"{c:.6g}*x^{order-i}" for i, c in enumerate(coeffs)]) - self.output.setPlainText(f"{expr}\n") - self.figure.clear() - ax = self.figure.add_subplot(111) - ax.scatter(x, y, color='red', label='数据点') - x_fit = np.linspace(x_min, x_max, 200) - y_fit = poly(x_fit) - ax.plot(x_fit, y_fit, label='拟合曲线') - ax.legend() - self.canvas.draw() - self.last_coeffs = coeffs - self.last_xmin = x_min - self.last_xmax = x_max - - def generate_code(self): - if self.last_coeffs is None: - QMessageBox.warning(self, "未拟合", "请先拟合数据!") - return - coeffs = self.last_coeffs - code_type = self.code_type.currentText() - if code_type == "C": - code = self.create_c_function(coeffs) - elif code_type == "C++": - code = self.create_cpp_function(coeffs) - else: - code = self.create_py_function(coeffs) - self.output.setPlainText(code) - - def create_c_function(self, coeffs): - lines = ["#include ", "double polynomial(double x) {", " return "] - n = len(coeffs) - terms = [] - for i, c in enumerate(coeffs): - exp = n - i - 1 - if exp == 0: - terms.append(f"{c:.8g}") - elif exp == 1: - terms.append(f"{c:.8g}*x") - else: - terms.append(f"{c:.8g}*pow(x,{exp})") - lines[-1] += " + ".join(terms) + ";" - lines.append("}") - return "\n".join(lines) - - def create_cpp_function(self, coeffs): - lines = ["#include ", "double polynomial(double x) {", " return "] - n = len(coeffs) - terms = [] - for i, c in enumerate(coeffs): - exp = n - i - 1 - if exp == 0: - terms.append(f"{c:.8g}") - elif exp == 1: - terms.append(f"{c:.8g}*x") - else: - terms.append(f"{c:.8g}*pow(x,{exp})") - lines[-1] += " + ".join(terms) + ";" - lines.append("}") - return "\n".join(lines) - - def create_py_function(self, coeffs): - n = len(coeffs) - lines = ["def polynomial(x):", " return "] - terms = [] - for i, c in enumerate(coeffs): - exp = n - i - 1 - if exp == 0: - terms.append(f"{c:.8g}") - elif exp == 1: - terms.append(f"{c:.8g}*x") - else: - terms.append(f"{c:.8g}*x**{exp}") - lines[-1] += " + ".join(terms) - return "\n".join(lines) - -if __name__ == "__main__": - app = QApplication(sys.argv) - win = PolyFitApp() - win.show() - sys.exit(app.exec_()) \ No newline at end of file diff --git a/src/freertos.c b/src/freertos.c deleted file mode 100644 index c7fefe5..0000000 --- a/src/freertos.c +++ /dev/null @@ -1,131 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * File Name : freertos.c - * Description : Code for freertos applications - ****************************************************************************** - * @attention - * - * Copyright (c) 2025 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ -#include "FreeRTOS.h" -#include "task.h" -#include "main.h" -#include "cmsis_os.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "task/user_task.h" -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN PTD */ - -/* USER CODE END PTD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN Variables */ -osThreadId_t initTaskHandle; // 定义 Task_Init 的任务句柄 -/* USER CODE END Variables */ -/* Definitions for defaultTask */ -osThreadId_t defaultTaskHandle; -const osThreadAttr_t defaultTask_attributes = { - .name = "defaultTask", - .stack_size = 128 * 4, - .priority = (osPriority_t) osPriorityNormal, -}; - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN FunctionPrototypes */ - -/* USER CODE END FunctionPrototypes */ - -void StartDefaultTask(void *argument); - -void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ - -/** - * @brief FreeRTOS initialization - * @param None - * @retval None - */ -void MX_FREERTOS_Init(void) { - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* USER CODE BEGIN RTOS_MUTEX */ - /* add mutexes, ... */ - /* USER CODE END RTOS_MUTEX */ - - /* USER CODE BEGIN RTOS_SEMAPHORES */ - /* add semaphores, ... */ - /* USER CODE END RTOS_SEMAPHORES */ - - /* USER CODE BEGIN RTOS_TIMERS */ - /* start timers, add new ones, ... */ - /* USER CODE END RTOS_TIMERS */ - - /* USER CODE BEGIN RTOS_QUEUES */ - /* add queues, ... */ - /* USER CODE END RTOS_QUEUES */ - - /* Create the thread(s) */ - /* creation of defaultTask */ - defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes); - - /* USER CODE BEGIN RTOS_THREADS */ - initTaskHandle = osThreadNew(Task_Init, NULL, &attr_init); // 创建初始化任务 - /* add threads, ... */ - /* USER CODE END RTOS_THREADS */ - - /* USER CODE BEGIN RTOS_EVENTS */ - /* add events, ... */ - /* USER CODE END RTOS_EVENTS */ - -} - -/* USER CODE BEGIN Header_StartDefaultTask */ -/** - * @brief Function implementing the defaultTask thread. - * @param argument: Not used - * @retval None - */ -/* USER CODE END Header_StartDefaultTask */ -void StartDefaultTask(void *argument) -{ - /* USER CODE BEGIN StartDefaultTask */ - /* Infinite loop */ - // for(;;) - // { - // osDelay(1); - // } - osThreadTerminate(osThreadGetId()); // 结束自身 - /* USER CODE END StartDefaultTask */ -} - -/* Private application code --------------------------------------------------*/ -/* USER CODE BEGIN Application */ - -/* USER CODE END Application */ -