Skip to content

Commit 90337f5

Browse files
committed
重命名文件 直接修改单片机内的文件
1 parent ed11aa4 commit 90337f5

File tree

5 files changed

+94
-13
lines changed

5 files changed

+94
-13
lines changed

Serial_Core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def __init__(self, port):
2525
self.serial = serial.Serial(port)
2626
self.serial.timeout=0
2727
self.serial.baudrate=115200
28-
self.jump_last = False
28+
self.jump_last = True
2929

3030
def run(self):
3131
temp = b""

UI/portWindow.ui

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>559</width>
10-
<height>405</height>
9+
<width>481</width>
10+
<height>369</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
@@ -60,11 +60,30 @@
6060
</item>
6161
<item>
6262
<widget class="QPushButton" name="stopRun">
63+
<property name="minimumSize">
64+
<size>
65+
<width>80</width>
66+
<height>0</height>
67+
</size>
68+
</property>
6369
<property name="text">
6470
<string>停止运行</string>
6571
</property>
6672
</widget>
6773
</item>
74+
<item>
75+
<widget class="QPushButton" name="rebootMCU">
76+
<property name="minimumSize">
77+
<size>
78+
<width>80</width>
79+
<height>0</height>
80+
</size>
81+
</property>
82+
<property name="text">
83+
<string>重启单片机</string>
84+
</property>
85+
</widget>
86+
</item>
6887
<item>
6988
<spacer name="horizontalSpacer">
7089
<property name="orientation">
@@ -97,6 +116,9 @@
97116
<property name="shortcut">
98117
<string>Ctrl+A</string>
99118
</property>
119+
<property name="checked">
120+
<bool>true</bool>
121+
</property>
100122
</widget>
101123
</item>
102124
<item>

codeEditor.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ def setupUi(self, Dialog):
112112
self.gridLayout.setSpacing(0)
113113
self.gridLayout.setObjectName(u"gridLayout")
114114
self.gridLayout.setContentsMargins(0, 0, 0, 0)
115+
115116
self.QCodeEditor = QCodeEditor(Dialog)
116117
self.QCodeEditor.setObjectName(u"QCodeEditor")
117118
self.gridLayout.addWidget(self.QCodeEditor, 0, 0, 1, 1)

main.py

Lines changed: 58 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
from portWindow import Ui_Dialog
33
import codeEditor
44
import Serial_Core
5-
from PySide6 import QtCore
5+
66
from PySide6.QtGui import QIcon, QShortcut, QAction,QCursor
7-
from PySide6.QtWidgets import QApplication, QMainWindow, QDialog, QListWidgetItem, QMenu, QLabel
7+
from PySide6.QtCore import Qt
8+
from PySide6.QtWidgets import QApplication, QMainWindow, QDialog, QListWidgetItem, QMenu, QLabel, QLineEdit, QGridLayout
89
import sys
910
import os
1011

@@ -56,6 +57,7 @@ def bind_methods():
5657
port_dialog.Clear.clicked.connect(port_dialog.recv_Text.clear)
5758
port_dialog.AutoLast.toggled.connect(func_jump_to_last_line)
5859
port_dialog.stopRun.clicked.connect(lambda: serial_thread.serial.write(b"\r\x03\x03"))
60+
port_dialog.rebootMCU.clicked.connect(lambda: serial_thread.serial.write(b"from machine import reset\r\nreset()\r\n"))
5961
w_p.rejected.connect(func_for_close_port_dialog)
6062
w_p.closeEvent = func_for_close_port_dialog
6163

@@ -129,6 +131,15 @@ def create_right_menu_PC():
129131
action_1 = QAction(text="上传到单片机")
130132
action_1.triggered.connect(lambda:file_transport("PC", main_window.PC_files.currentItem().text()))
131133
menu.addAction(action_1)
134+
135+
action_3 = QAction(text="刷新")
136+
action_3.triggered.connect(fresh_PC_files)
137+
menu.addAction(action_3)
138+
139+
action_4 = QAction(text="重命名")
140+
action_4.triggered.connect(lambda: rename_file(main_window.PC_files.currentItem().text()))
141+
menu.addAction(action_4)
142+
132143
action_2 = QAction(text="删除")
133144
action_2.triggered.connect(lambda:remove_file("PC", main_window.PC_files.currentItem().text()))
134145
menu.addAction(action_2)
@@ -204,13 +215,15 @@ def fresh_PC_files():
204215
main_window.PC_files.addItem(a)
205216
main_window.PC_files.setCurrentRow(0)
206217

207-
def file_transport(device:str, file_name:str):
208-
"""传输文件"""
218+
def file_transport(device:str, file_name:str, out_name:str=None):
219+
"""传输文件 源文件设备 文件名 另存名"""
220+
if out_name is None:
221+
out_name = file_name
209222
if serial_manager.pyb is not None:
210223
if device == "PC":
211224
try:
212225
serial_manager.pyb.enter_raw_repl()
213-
serial_manager.pyb.fs_put(file_name, file_name)
226+
serial_manager.pyb.fs_put(file_name, out_name)
214227
serial_manager.fresh_files()
215228
main_window.statusBar.showMessage(f"已传输{file_name}")
216229
except Exception as e:
@@ -222,7 +235,7 @@ def file_transport(device:str, file_name:str):
222235
else:
223236
main_window.statusBar.showMessage(f"下载文件{file_name}到本地")
224237
serial_manager.pyb.enter_raw_repl()
225-
serial_manager.pyb.fs_get(file_name, file_name)
238+
serial_manager.pyb.fs_get(file_name, out_name)
226239
serial_manager.fresh_files()
227240
fresh_PC_files()
228241
except Exception as e:
@@ -258,13 +271,49 @@ def open_file(device:str, file_name:str):
258271
main_window.statusBar.showMessage(codeEditor.open_file(file_name))
259272
elif device == "MCU":
260273
try:
261-
serial_manager.pyb.enter_raw_repl()
262-
serial_manager.pyb.fs_get(file_name, "_"+file_name)
263-
fresh_PC_files()
274+
file_transport("MCU", file_name, "_"+file_name)
264275
main_window.statusBar.showMessage(codeEditor.open_file("_"+file_name))
276+
file_transport("PC", "_"+file_name, file_name)
277+
remove_file("PC", "_"+file_name)
265278
except Exception as e:
266279
func_for_serial_erro(str(e))
267280

281+
def rename_file(file_name):
282+
"""弹出一个小窗口重命名文件"""
283+
fName, fType = split_file_name(file_name)
284+
redialog = QDialog()
285+
shortcut = QShortcut(redialog)
286+
shortcut.setKey(u'Return')
287+
shortcut.activated.connect(lambda: redialog.close())
288+
shortcut2 = QShortcut(redialog)
289+
shortcut2.setKey(u'Enter')
290+
shortcut2.activated.connect(lambda: redialog.close())
291+
gridLayout = QGridLayout(redialog)
292+
gridLayout.setSpacing(0)
293+
gridLayout.setObjectName(u"gridLayout")
294+
gridLayout.setContentsMargins(0, 0, 0, 0)
295+
redialog.setWindowFlag(Qt.FramelessWindowHint)
296+
redialog.move(QCursor.pos())
297+
Lin = QLineEdit(redialog)
298+
Lin.setText(fName)
299+
gridLayout.addWidget(Lin, 0, 0, 1, 1)
300+
redialog.exec()
301+
after_name = Lin.text()
302+
if not os.path.exists(after_name+fType):
303+
os.rename(file_name, after_name+fType)
304+
main_window.statusBar.showMessage(f"{file_name}->{after_name+fType}")
305+
else:
306+
main_window.statusBar.showMessage(f"{after_name+fType} already exists.")
307+
fresh_PC_files()
308+
309+
def split_file_name(file:str):
310+
"""得到文件名与后缀分离的结果"""
311+
out = ""
312+
str_list = file.split(".")
313+
for i in str_list[:-1]:
314+
out += i
315+
return out, "."+str_list[-1]
316+
268317
def main():
269318
bind_methods()
270319
init_methods()

portWindow.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class Ui_Dialog(object):
2424
def setupUi(self, Dialog):
2525
if not Dialog.objectName():
2626
Dialog.setObjectName(u"Dialog")
27-
Dialog.resize(559, 405)
27+
Dialog.resize(481, 369)
2828
icon = QIcon()
2929
icon.addFile(u":/ROOT/1.ico", QSize(), QIcon.Normal, QIcon.Off)
3030
Dialog.setWindowIcon(icon)
@@ -63,9 +63,16 @@ def setupUi(self, Dialog):
6363

6464
self.stopRun = QPushButton(Dialog)
6565
self.stopRun.setObjectName(u"stopRun")
66+
self.stopRun.setMinimumSize(QSize(80, 0))
6667

6768
self.horizontalLayout_2.addWidget(self.stopRun)
6869

70+
self.rebootMCU = QPushButton(Dialog)
71+
self.rebootMCU.setObjectName(u"rebootMCU")
72+
self.rebootMCU.setMinimumSize(QSize(80, 0))
73+
74+
self.horizontalLayout_2.addWidget(self.rebootMCU)
75+
6976
self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
7077

7178
self.horizontalLayout_2.addItem(self.horizontalSpacer)
@@ -77,6 +84,7 @@ def setupUi(self, Dialog):
7784
self.AutoLast.setObjectName(u"AutoLast")
7885
self.AutoLast.setMinimumSize(QSize(120, 0))
7986
self.AutoLast.setLayoutDirection(Qt.RightToLeft)
87+
self.AutoLast.setChecked(True)
8088

8189
self.horizontalLayout_3.addWidget(self.AutoLast)
8290

@@ -103,6 +111,7 @@ def retranslateUi(self, Dialog):
103111
self.Sending.setShortcut(QCoreApplication.translate("Dialog", u"Enter", None))
104112
#endif // QT_CONFIG(shortcut)
105113
self.stopRun.setText(QCoreApplication.translate("Dialog", u"\u505c\u6b62\u8fd0\u884c", None))
114+
self.rebootMCU.setText(QCoreApplication.translate("Dialog", u"\u91cd\u542f\u5355\u7247\u673a", None))
106115
self.AutoLast.setText(QCoreApplication.translate("Dialog", u"\u81ea\u52a8\u8f6c\u5230\u884c\u5c3e", None))
107116
#if QT_CONFIG(shortcut)
108117
self.AutoLast.setShortcut(QCoreApplication.translate("Dialog", u"Ctrl+A", None))

0 commit comments

Comments
 (0)