diff --git a/ReadMe.txt b/ReadMe.txt index cea8296..419aacb 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -22,5 +22,9 @@ 上传文件添加进度信号 打包为exe文件 D:\Python\Python38-32\Scripts\pyinstaller.exe -F updata.py + 打包为无黑框的exe文件 + D:\Python\Python38-32\Scripts\pyinstaller.exe -F -w -i icon.ico updata.py 使用新的图标 - 可以手动添加文件 \ No newline at end of file + 可以手动添加文件 +2023.5.12 + 添加一些提示和警告信息 \ No newline at end of file diff --git a/ftp.py b/ftp.py index 8dd7826..5ca7ad6 100644 --- a/ftp.py +++ b/ftp.py @@ -226,10 +226,11 @@ dst_list.append("/home/root/config/judge.lua") # 定义要从开发板获取的文件 get_list=[] # get_list.append("/home/root/comm_log/comm_log.csv") -get_list.append("/home/root/log/debug_log.txt") +# get_list.append("/home/root/log/debug_log.txt") # get_list.append("/home/root/config/checker_app_pre.sh") # get_list.append("/home/root/config/cfg.json") # get_list.append("/home/root/config/judge.lua") +get_list.append("/home/root/comm_log/") # 定义命令 diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000..57d4ba9 Binary files /dev/null and b/icon.ico differ diff --git a/udp.py b/udp.py index 20df153..48e9ebe 100644 --- a/udp.py +++ b/udp.py @@ -145,7 +145,7 @@ cmd_list=[] # cmd_list.append(("local setlog filefilter tcp_client",1,1)) # cmd_list.append(("mcu scheme 1,2,3,4,5,6,7,8,9,10",1,30)) cmd_list.append(("mcu bootinfo 1,2,3,4,5,6,7,8,9,10",1,5)) -# cmd_list.append(("mcu start 10",2,37)) +# cmd_list.append(("mcu start 10",1,37)) # cmd_list.append(("mcu updata 1,2,3,4,5,6,7,8,9,10",1,900)) cmd_list.append(("whos",1,2)) # cmd_list.append(("mcu updata 10 /home/root/config/JQChecker_0008.bin",1,900)) diff --git a/updata.py b/updata.py index 850bc67..ba5946e 100644 --- a/updata.py +++ b/updata.py @@ -24,8 +24,20 @@ STR_END="\033[0m" +WARN_TXT="警告:\n程序升级会删除主板中以前的程序,为保证升级成功,请耐心等待升级完成,不要退出本界面,不要给主板断电、重启。" +QUESTION_TXT="程序升级会删除主板中以前的程序,非专业人员不要操作。\n\ +为保证升级成功,请耐心等待升级完成,不要退出升级界面,期间不要给主板断电、重启。\n\ +点击[YES]以进行升级。" - +def warn_creat(father:QDialog,text:str,rect:QRect): + lable=QLabel(father) + lable.setWordWrap(True) + lable.setText(text) + lable.setGeometry(rect) + lable.setMargin(10) + lable.setAlignment(Qt.AlignmentFlag.AlignCenter) + lable.setStyleSheet("QLabel{font:20px;color:red;background-color:rgb(62, 213, 255);}") + return lable class progress_box(QObject): @@ -93,7 +105,7 @@ class updata_dlg(QObject): self.widget = QWidget() self.widget.resize(703, 409) self.widget.setWindowTitle("批检仪程序升级") - self.widget.setWindowFlags(Qt.WindowStaysOnTopHint) + self.widget.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint) self.file_list_init() self.slave_list_init() self.save_but_init() @@ -122,30 +134,36 @@ class updata_dlg(QObject): def file_list_init(self): self.file_list = QListWidget(self.widget) self.file_list.setObjectName(u"file_list") - self.file_list.setGeometry(QRect(25, 250, 531, 141)) - self.file_list.setFrameShape(QFrame.Box) + self.file_list.setGeometry(QRect(25, 230, 531, 141)) + self.file_list.setFrameShape(QFrame.Shape.Box) self.file_list.setMidLineWidth(1) - self.file_list.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) - self.file_list.setSelectionMode(QAbstractItemView.MultiSelection) + self.file_list.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAsNeeded) + self.file_list.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection) self.file_list_label = QLabel(self.widget) self.file_list_label.setObjectName(u"label") - self.file_list_label.setGeometry(QRect(30, 230, 200, 15)) - self.file_list_label.setText("默认文件列表:") + self.file_list_label.setGeometry(QRect(30, 210, 531, 15)) + self.file_list_label.setText("默认文件列表(选中以发送):") + self.file_list_label.setToolTip("请选择要升级的文件,只有选中的文件会发送到主板中。") + self.file_list.setToolTip("请选择要升级的文件,只有选中的文件会发送到主板中。") + # self.file_list_label.setToolTipDuration(1) # 初始化从机列表 def slave_list_init(self): self.slave_list = QListWidget(self.widget) self.slave_list.setObjectName(u"slave_list") - self.slave_list.setGeometry(QRect(25, 80, 531, 141)) - self.slave_list.setFrameShape(QFrame.Box) + self.slave_list.setGeometry(QRect(25, 60, 531, 141)) + self.slave_list.setFrameShape(QFrame.Shape.Box) self.slave_list.setMidLineWidth(1) - self.slave_list.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) - self.slave_list.setSelectionMode(QAbstractItemView.MultiSelection) + self.slave_list.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAsNeeded) + self.slave_list.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection) self.slave_list.doubleClicked.connect(self.slave_list.editItem) self.slave_list_label = QLabel(self.widget) self.slave_list_label.setObjectName(u"label") - self.slave_list_label.setGeometry(QRect(30, 60, 200, 15)) - self.slave_list_label.setText("在线主板列表:") + self.slave_list_label.setGeometry(QRect(30, 40, 200, 15)) + self.slave_list_label.setText("在线主板列表(选中以发送):") + self.slave_list_label.setToolTip("请选择要升级的主板设备,只有选中的主板会升级。") + self.slave_list.setToolTip("请选择要升级的主板设备,只有选中的主板会升级。") + # self.slave_list_label.setToolTipDuration(1) # 初始化手动添加IP按钮 def hand_but_init(self): @@ -154,6 +172,8 @@ class updata_dlg(QObject): self.hand_but.setGeometry(QRect(590, 60, 93, 28)) self.hand_but.setText("手动添加IP") self.hand_but.clicked.connect(self.hand_but_clicked) + self.hand_but.setToolTip("请先在[手动添加IP地址]输入框中输入要添加的地址,然后点击此按钮添加到设备列表中。") + # self.hand_but.setToolTipDuration(1) # 初始化发送文件按钮 def save_but_init(self): @@ -162,6 +182,9 @@ class updata_dlg(QObject): self.save_but.setGeometry(QRect(590, 100, 93, 28)) self.save_but.setText("发送文件") self.save_but.clicked.connect(self.save_but_clicked) + self.save_but.setToolTip("请先选中要升级的主板和文件,然后点击此按钮发送到设备中。") + # self.save_but.setToolTipDuration(1) + # 初始化发送命令按钮 def cmd_but_init(self): @@ -170,6 +193,8 @@ class updata_dlg(QObject): self.cmd_but.setGeometry(QRect(590, 140, 93, 28)) self.cmd_but.setText("升级MCU") self.cmd_but.clicked.connect(self.cmd_but_clicked) + self.cmd_but.setToolTip("请先将要升级的MCU程序发送到主板中,然后点击此按钮开始升级MCU程序。") + # self.cmd_but.setToolTipDuration(1) # 初始化刷新按钮 def refresh_but_init(self): @@ -178,6 +203,8 @@ class updata_dlg(QObject): self.refresh_but.setGeometry(QRect(590, 180, 93, 28)) self.refresh_but.setText("刷新IP地址") self.refresh_but.clicked.connect(self.refresh_but_clicked) + self.refresh_but.setToolTip("点击此按钮刷新主板列表。") + # self.refresh_but.setToolTipDuration(1) # 初始化在线状态按钮 def sstate_but_init(self): @@ -186,6 +213,8 @@ class updata_dlg(QObject): self.sstate_but.setGeometry(QRect(590, 220, 93, 28)) self.sstate_but.setText("MCU在线状态") self.sstate_but.clicked.connect(self.sstate_but_clicked) + self.sstate_but.setToolTip("点击此按钮查看小板在线情况,显示在线小板的地址。") + # self.sstate_but.setToolTipDuration(1) # 初始化添加文件按钮 def addfile_but_init(self): @@ -194,29 +223,39 @@ class updata_dlg(QObject): self.addfile_but.setGeometry(QRect(590, 260, 93, 28)) self.addfile_but.setText("添加文件") self.addfile_but.clicked.connect(self.addfile_but_clicked) + self.addfile_but.setToolTip("如果文件列表中不存在要升级的文件,点击此按钮从外部添加。") + # self.addfile_but.setToolTipDuration(1) # ip前缀 def ip_prefix_init(self): self.ip_prefix = QLineEdit(self.widget) self.ip_prefix.setObjectName(u"ip_prefix") - self.ip_prefix.setGeometry(QRect(30, 30, 113, 21)) + self.ip_prefix.setGeometry(QRect(130, 10, 113, 21)) self.ip_prefix.setText("192.168.80") self.ip_prefix_label = QLabel(self.widget) self.ip_prefix_label.setObjectName(u"label") - self.ip_prefix_label.setGeometry(QRect(30, 10, 72, 15)) - self.ip_prefix_label.setText("IP前缀") + self.ip_prefix_label.setGeometry(QRect(30, 10, 72, 21)) + self.ip_prefix_label.setText("IP前缀:") + self.ip_prefix_label.setAlignment(Qt.AlignmentFlag.AlignCenter) + self.ip_prefix_label.setToolTip("如果扫描不到设备,请确保局域网网段与此相符,将此IP前缀改为和局域网相同。") + self.ip_prefix.setToolTip("如果扫描不到设备,请确保局域网网段与此相符,将此IP前缀改为和局域网相同。") + # self.ip_prefix_label.setToolTipDuration(1) # 手动添加ip def ip_hand_init(self): self.ip_hand = QLineEdit(self.widget) self.ip_hand.setObjectName(u"ip_hand") - self.ip_hand.setGeometry(QRect(300, 30, 120, 21)) + self.ip_hand.setGeometry(QRect(430, 10, 120, 21)) ip=self.ip_prefix.text() self.ip_hand.setText(ip+".81") self.ip_hand_label = QLabel(self.widget) self.ip_hand_label.setObjectName(u"ip_hand_label") - self.ip_hand_label.setGeometry(QRect(300, 10, 120, 15)) - self.ip_hand_label.setText("手动添加IP地址") + self.ip_hand_label.setGeometry(QRect(300, 10, 120, 21)) + self.ip_hand_label.setText("手动添加IP地址:") + self.ip_hand_label.setAlignment(Qt.AlignmentFlag.AlignCenter) + self.ip_hand_label.setToolTip("如果扫描不到设备,可以尝试手动添加设备的IP地址,然后升级。") + self.ip_hand.setToolTip("如果扫描不到设备,可以尝试手动添加设备的IP地址,然后升级。") + # self.ip_hand_label.setToolTipDuration(1) # 显示消息框 def show_msg(self,msg:str): @@ -224,6 +263,13 @@ class updata_dlg(QObject): m.setText(msg) m.setWindowTitle("提示") m.show() + def show_question(self,title:str,msg:str): + ret=QMessageBox.question(self.widget,title,msg,QMessageBox.StandardButton.Yes|QMessageBox.StandardButton.No, + QMessageBox.StandardButton.No) + if(ret==QMessageBox.StandardButton.Yes): + return True + else: + return False # 找到已选择的文件 def get_selected_file_by_type(self,type:str): @@ -313,20 +359,23 @@ class updata_dlg(QObject): slave_list=self.get_selected_slave() if(len(slave_list)==0): return + if(self.show_question("警告",QUESTION_TXT)==False): + return print("slaves:",slave_list) w=QDialog(self.widget) - w.resize(703-100, len(slave_list)*40+20) + warn_creat(w,WARN_TXT,QRect(0,0,700-100,90)) + w.resize(700-100, len(slave_list)*40+20+100) w.setWindowTitle("上传文件") self.updata(slave_list,dst_list,file_list) - self.creat_progress(w,slave_list) + self.creat_progress(w,100,slave_list) w.show() # 创建进度条 - def creat_progress(self,father:QDialog,ip_list:list): + def creat_progress(self,father:QDialog,y_off:int,ip_list:list): self.probar_list=[] for i in range(len(ip_list)): p=progress_box() - p.init(father,ip_list[i][0],+i*40) + p.init(father,ip_list[i][0],+i*40+y_off) self.rate_signal.connect(p.set_rate) self.end_signal.connect(p.set_txt) self.probar_list.append(p) @@ -343,10 +392,10 @@ class updata_dlg(QObject): return print("file:",file) w=QDialog(self.widget) - w.resize(703-100, len(slave_list)*40+20) + w.resize(700-100, len(slave_list)*40+20) w.setWindowTitle("升级mcu") self.updata_mcu(slave_list,file) - self.creat_progress(w,slave_list) + self.creat_progress(w,0,slave_list) w.show() def refresh_but_clicked(self): @@ -390,8 +439,8 @@ class updata_dlg(QObject): u.find(ip_prefix) ip_list=u.dst_ip_list if(len(ip_list)==0): - ret=QMessageBox.question(self.widget,"提示","未扫描到从机,是否自动添加?",QMessageBox.Yes|QMessageBox.No) - if(ret==QMessageBox.Yes): + ret=self.show_question("提示","未扫描到从机,是否自动添加?") + if(ret==True): ip_list.append((ip_prefix+".81","local_id_1")) ip_list.append((ip_prefix+".82","local_id_2")) ip_list.append((ip_prefix+".83","local_id_3"))