From da2433e693afccc76548f3c0541fcb3ccbea0dda Mon Sep 17 00:00:00 2001 From: andy Date: Wed, 17 May 2023 08:27:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BA=9B=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReadMe.txt | 6 ++- ftp.py | 3 +- icon.ico | Bin 0 -> 67646 bytes udp.py | 2 +- updata.py | 105 +++++++++++++++++++++++++++++++++++++++-------------- 5 files changed, 85 insertions(+), 31 deletions(-) create mode 100644 icon.ico 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 0000000000000000000000000000000000000000..57d4ba914bb8c87488fbb089e3dc606757955df2 GIT binary patch literal 67646 zcmeI5v5y-?6vp>-clHShrK3QxjcABOO9M?Jp)_<9Dd{OF$X|e~G?WNYp%f`d1xlF; zOEg5HA_04W!X=^s>8`i}vAnl?d%OE?FEjS;yz%FK7kSrjJv;Av-*3ie`!e1nIiP>@ zc|zMal3OPS$!kfH+@c#D;)D5dzMBWd9p`pD{q62}lHMOpR$q^1>5rr7>Wprg-5@+T z%b5{7X2>j^z-tXg)AWIHhTy!xd`utI5Vzhvnl0ZW?x)6n-`HQ)bIOd{;1lzE#{JT# z4dxZ(IrrokAol0RACl!ZWA(hwpSV9V_Jd(xj+aL~2FBB0?;88TvCqc;3fUu=&jtB-9A3}Xy1 z>pJ`LKD{4!Xk%dC$3Xh9p#6hzcb!By1Be#x83)EStZ2Go3AxA2h0I;z#K3K%mH)2954sW z0dv3{FbB*5bHE%h2h4#%InZ(af2Z~5eHd-}={p;CYW=@^{dphUxexmLWq|K5*nj;B z>;JD^f8Gas)9?H{<+c9P-*`3G|6f^u-j%=Ucd{?n{qp{b|8z`q{eNTqc~|y)zUkkH zf5U(BF2?%*eEoS(>`njXYuKW%|L67RUHQlS{(^nbA9MXb=kClu;`bNqgZ`N7|2cP8 z{-%GU-~08~fLZMI|GfUZEB~0^U$77Q>9t?X_5Y_``J4Xj=YM4H^5>!+_&1)@s3z4I zUB9+pG9S8s==voO?HJuZbp6`AWj=KO(Dh3m+A+F+==!yJ%Y5kmq3f4Cv}1Jt(DiHc zmif^AL)R~PXvgUOq3hS?E%TxKhpu1p(2mjlL)Wj(TjoRe4_&|Hp&g_9hpu0nx6Fs` zAG&_YLpw(I4_&`DZKXm<)hjxtaAG&^R-ZCG$f9U!p5A7J;KXm=tyk$Og|IqbI z9@;Uwf9U$PdCPq0{-NuaJhWqU|Iqbo^OpJ0{X^F;d1%Mz{-NvF<}LG~`-iSy^3aaa z{X^HU&0FR}_YYmaDPWmprs%bpO!xYx9=* z(EUT#FL`Lk=>DPW*XAwrq5FrfU-Hn7(f#W||CzSuwR|yi+xNfH;2F*6I$g@&S$ml; zX6}ocdze3}-}igzU0?d?8f~&qwK!((zWj?dcY4x4o}~BHcnhy$<}Pa<`uykXRF+<7 z?_=gJYaKd&u0PE6DqY`$UtG_!>xOS<^Ygx`! z`d)H~wJ&vSyN{*2%)71bw)3b@z6NW^>u_@4jcb3Fb;R1Y`LM~cSh~x+n`rfIOMQp9 zo@MLxHp@Cr@_3mw%SE zXzw|9SD&;s%Y0q+$3CCxc`9pCjGuO`Ur}r8YqPHUW1l~otUizCA?5B`e>Ckqeg4W`(p%-dCe^z+|Zy-J@yJuB!XHU=!4!bd?jlO6?3k>Y7V8*x8J_%*oA(MC#%1F>)y5<=jgN6 zZFTf@UZ1t>LSMw^%f7sk{czuX*C=yn$9>nc3;iA4T;3rcpU~~^9{l7!o^YQbYU@E? z>-&1&enZr>Gkw1O%jjtK`@8h{;ise7>N}dh-}~ISEuX{ZCe%mBdVD#BY8SFL>)Y)> zD6YQ!x)oZBkPi5A3e_%TZPvHjflyq1`*ka{79kz*%e)@FUX z9U!hT*RY?t6Rxelo+MOswN2oL#zdd$yNUE_H^|BGI@ zzeWChQN`>0`J{^J`SeDamD?B3Jk{g>CCO*?$GOe$;(6|BQ9ExJxvSU5>)hq)@xs+A JE}ri>{vRAT+dcpQ literal 0 HcmV?d00001 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"))