可以给小板升级方案,可以升级改为20通道

This commit is contained in:
ranchuan
2023-08-09 18:39:05 +08:00
parent 79cd17844f
commit 58b751d519
3 changed files with 83 additions and 26 deletions

View File

@@ -29,4 +29,10 @@
2023.5.12 2023.5.12
添加一些提示和警告信息 添加一些提示和警告信息
2023.5.17 2023.5.17
仓库地址 git@124.70.178.159:/home/git/rep/updata.git 仓库地址 git@124.70.178.159:/home/git/rep/updata.git
2023.7.27
.json 结尾的视为方案
2023.7.28
添加升级方案按钮
.axf 结尾的为主板m4程序
改为20通道

12
udp.py
View File

@@ -144,18 +144,22 @@ class myudp(QObject):
cmd_list=[] cmd_list=[]
# cmd_list.append(("local setlog filefilter tcp_client",1,1)) # 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 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 bootinfo 1,2,3,4,5,6,7,8,9,10",1,5))
# cmd_list.append(("mcu start 10",1,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(("mcu updata 1,2,3,4,5,6,7,8,9,10",1,900))
cmd_list.append(("whos",1,2)) # cmd_list.append(("whos",1,2))
# cmd_list.append(("mcu updata 10 /home/root/config/JQChecker_0008.bin",1,900)) # cmd_list.append(("mcu updata 10 /home/root/config/JQChecker_0008.bin",1,900))
# cmd_list.append(("local setcfg hostip 192.168.60.202",1,2))
# cmd_list.append(("local setcfg usetcp true",1,2))
# cmd_list.append(("local setcfg uselua true",1,2))
# cmd_list.append(("local setcfg save",1,2))
cmd_list.append(("mcu start 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20",2,50))
# 扫描从机ip地址 # 扫描从机ip地址
# 返回元组列表iplocal_id # 返回元组列表iplocal_id
def main(): def main():
udp=myudp(1,255) udp=myudp(1,255)
udp.find("192.168.80") udp.find("192.168.60")
print(udp.dst_ip_list) print(udp.dst_ip_list)
udp.bordcast(cmd_list) udp.bordcast(cmd_list)

View File

@@ -106,6 +106,8 @@ class updata_dlg(QObject):
self.widget.resize(703, 409) self.widget.resize(703, 409)
self.widget.setWindowTitle("批检仪程序升级") self.widget.setWindowTitle("批检仪程序升级")
self.widget.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint) self.widget.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
self.but_y=60
self.but_y_step=40
self.file_list_init() self.file_list_init()
self.slave_list_init() self.slave_list_init()
self.save_but_init() self.save_but_init()
@@ -114,6 +116,7 @@ class updata_dlg(QObject):
self.sstate_but_init() self.sstate_but_init()
self.hand_but_init() self.hand_but_init()
self.addfile_but_init() self.addfile_but_init()
self.scheme_but_init()
self.ip_prefix_init() self.ip_prefix_init()
self.ip_hand_init() self.ip_hand_init()
self.widget.destroyed.connect(self.quit) self.widget.destroyed.connect(self.quit)
@@ -169,7 +172,8 @@ class updata_dlg(QObject):
def hand_but_init(self): def hand_but_init(self):
self.hand_but = QPushButton(self.widget) self.hand_but = QPushButton(self.widget)
self.hand_but.setObjectName(u"hand_but") self.hand_but.setObjectName(u"hand_but")
self.hand_but.setGeometry(QRect(590, 60, 93, 28)) self.hand_but.setGeometry(QRect(590, self.but_y, 93, 28))
self.but_y+=self.but_y_step
self.hand_but.setText("手动添加IP") self.hand_but.setText("手动添加IP")
self.hand_but.clicked.connect(self.hand_but_clicked) self.hand_but.clicked.connect(self.hand_but_clicked)
self.hand_but.setToolTip("请先在[手动添加IP地址]输入框中输入要添加的地址,然后点击此按钮添加到设备列表中。") self.hand_but.setToolTip("请先在[手动添加IP地址]输入框中输入要添加的地址,然后点击此按钮添加到设备列表中。")
@@ -179,7 +183,8 @@ class updata_dlg(QObject):
def save_but_init(self): def save_but_init(self):
self.save_but = QPushButton(self.widget) self.save_but = QPushButton(self.widget)
self.save_but.setObjectName(u"save_but") self.save_but.setObjectName(u"save_but")
self.save_but.setGeometry(QRect(590, 100, 93, 28)) self.save_but.setGeometry(QRect(590, self.but_y, 93, 28))
self.but_y+=self.but_y_step
self.save_but.setText("发送文件") self.save_but.setText("发送文件")
self.save_but.clicked.connect(self.save_but_clicked) self.save_but.clicked.connect(self.save_but_clicked)
self.save_but.setToolTip("请先选中要升级的主板和文件,然后点击此按钮发送到设备中。") self.save_but.setToolTip("请先选中要升级的主板和文件,然后点击此按钮发送到设备中。")
@@ -190,7 +195,8 @@ class updata_dlg(QObject):
def cmd_but_init(self): def cmd_but_init(self):
self.cmd_but = QPushButton(self.widget) self.cmd_but = QPushButton(self.widget)
self.cmd_but.setObjectName(u"save_but") self.cmd_but.setObjectName(u"save_but")
self.cmd_but.setGeometry(QRect(590, 140, 93, 28)) self.cmd_but.setGeometry(QRect(590, self.but_y, 93, 28))
self.but_y+=self.but_y_step
self.cmd_but.setText("升级MCU") self.cmd_but.setText("升级MCU")
self.cmd_but.clicked.connect(self.cmd_but_clicked) self.cmd_but.clicked.connect(self.cmd_but_clicked)
self.cmd_but.setToolTip("请先将要升级的MCU程序发送到主板中然后点击此按钮开始升级MCU程序。") self.cmd_but.setToolTip("请先将要升级的MCU程序发送到主板中然后点击此按钮开始升级MCU程序。")
@@ -200,7 +206,8 @@ class updata_dlg(QObject):
def refresh_but_init(self): def refresh_but_init(self):
self.refresh_but = QPushButton(self.widget) self.refresh_but = QPushButton(self.widget)
self.refresh_but.setObjectName(u"save_but") self.refresh_but.setObjectName(u"save_but")
self.refresh_but.setGeometry(QRect(590, 180, 93, 28)) self.refresh_but.setGeometry(QRect(590, self.but_y, 93, 28))
self.but_y+=self.but_y_step
self.refresh_but.setText("刷新IP地址") self.refresh_but.setText("刷新IP地址")
self.refresh_but.clicked.connect(self.refresh_but_clicked) self.refresh_but.clicked.connect(self.refresh_but_clicked)
self.refresh_but.setToolTip("点击此按钮刷新主板列表。") self.refresh_but.setToolTip("点击此按钮刷新主板列表。")
@@ -210,7 +217,8 @@ class updata_dlg(QObject):
def sstate_but_init(self): def sstate_but_init(self):
self.sstate_but = QPushButton(self.widget) self.sstate_but = QPushButton(self.widget)
self.sstate_but.setObjectName(u"sstate_but") self.sstate_but.setObjectName(u"sstate_but")
self.sstate_but.setGeometry(QRect(590, 220, 93, 28)) self.sstate_but.setGeometry(QRect(590, self.but_y, 93, 28))
self.but_y+=self.but_y_step
self.sstate_but.setText("MCU在线状态") self.sstate_but.setText("MCU在线状态")
self.sstate_but.clicked.connect(self.sstate_but_clicked) self.sstate_but.clicked.connect(self.sstate_but_clicked)
self.sstate_but.setToolTip("点击此按钮查看小板在线情况,显示在线小板的地址。") self.sstate_but.setToolTip("点击此按钮查看小板在线情况,显示在线小板的地址。")
@@ -220,12 +228,24 @@ class updata_dlg(QObject):
def addfile_but_init(self): def addfile_but_init(self):
self.addfile_but = QPushButton(self.widget) self.addfile_but = QPushButton(self.widget)
self.addfile_but.setObjectName(u"addfile_but") self.addfile_but.setObjectName(u"addfile_but")
self.addfile_but.setGeometry(QRect(590, 260, 93, 28)) self.addfile_but.setGeometry(QRect(590, self.but_y, 93, 28))
self.but_y+=self.but_y_step
self.addfile_but.setText("添加文件") self.addfile_but.setText("添加文件")
self.addfile_but.clicked.connect(self.addfile_but_clicked) self.addfile_but.clicked.connect(self.addfile_but_clicked)
self.addfile_but.setToolTip("如果文件列表中不存在要升级的文件,点击此按钮从外部添加。") self.addfile_but.setToolTip("如果文件列表中不存在要升级的文件,点击此按钮从外部添加。")
# self.addfile_but.setToolTipDuration(1) # self.addfile_but.setToolTipDuration(1)
# 初始化升级方案按钮
def scheme_but_init(self):
self.scheme_but = QPushButton(self.widget)
self.scheme_but.setObjectName(u"scheme_but")
self.scheme_but.setGeometry(QRect(590, self.but_y, 93, 28))
self.but_y+=self.but_y_step
self.scheme_but.setText("升级方案")
self.scheme_but.clicked.connect(self.scheme_but_clicked)
self.scheme_but.setToolTip("请先将要升级的方案文件发送到主板中然后点击此按钮开始升级方案到MCU。")
# self.addfile_but.setToolTipDuration(1)
# ip前缀 # ip前缀
def ip_prefix_init(self): def ip_prefix_init(self):
self.ip_prefix = QLineEdit(self.widget) self.ip_prefix = QLineEdit(self.widget)
@@ -331,10 +351,12 @@ class updata_dlg(QObject):
dst_list.append("/usr/local/QDesktop-fb") dst_list.append("/usr/local/QDesktop-fb")
elif(i[-4:]==".dtb"): elif(i[-4:]==".dtb"):
dst_list.append("/run/media/mmcblk2p2/"+i) dst_list.append("/run/media/mmcblk2p2/"+i)
elif(i.find("checker_ye_cfg")>=0): elif(i[-5:]==".json"):
dst_list.append("/home/root/config/"+"checker_ye_cfg.json") dst_list.append("/home/root/config/"+"checker_ye_cfg.json")
elif(i[-4:]==".lua"): elif(i[-4:]==".lua"):
dst_list.append("/home/root/config/"+"judge.lua") dst_list.append("/home/root/config/"+"judge.lua")
elif(i[-4:]==".axf"):
dst_list.append("/lib/firmware/"+"checker_m4.axf")
else: else:
dst_list.append("/home/root/config/"+i) dst_list.append("/home/root/config/"+i)
return dst_list return dst_list
@@ -397,6 +419,19 @@ class updata_dlg(QObject):
self.updata_mcu(slave_list,file) self.updata_mcu(slave_list,file)
self.creat_progress(w,0,slave_list) self.creat_progress(w,0,slave_list)
w.show() w.show()
# 升级方案按钮按下
def scheme_but_clicked(self):
print("scheme_but clicked.")
slave_list=self.get_selected_slave()
if(len(slave_list)==0):
return
print("slaves:",slave_list)
w=QDialog(self.widget)
w.resize(700-100, len(slave_list)*40+20)
w.setWindowTitle("升级mcu")
self.scheme_mcu(slave_list)
self.creat_progress(w,0,slave_list)
w.show()
def refresh_but_clicked(self): def refresh_but_clicked(self):
print("refresh_but clicked.") print("refresh_but clicked.")
@@ -414,7 +449,7 @@ class updata_dlg(QObject):
def addfile_but_clicked(self): def addfile_but_clicked(self):
print("addfile_but clicked") print("addfile_but clicked")
fileName,fileType = QFileDialog.getOpenFileNames(None, "选取文件", os.getcwd(), fileName,fileType = QFileDialog.getOpenFileNames(None, "选取文件", os.getcwd(),
"主板程序(*.elf);;小板程序(*.bin);;检测方案(*.json);;判定脚本(*.lua);;任意文件(*)") "主板程序(*.elf);;主板m4程序(*.axf);;小板程序(*.bin);;检测方案(*.json);;判定脚本(*.lua);;任意文件(*)")
print(fileName,fileType) print(fileName,fileType)
path=self.getpath()+"file\\" path=self.getpath()+"file\\"
for i in fileName: for i in fileName:
@@ -430,7 +465,7 @@ class updata_dlg(QObject):
# 扫描文件 # 扫描文件
def scan_file(self): def scan_file(self):
self.file_list.clear() self.file_list.clear()
self.file_list.addItems(self.find_type([".sh",".elf",".bin",".lua",".json",".dtb"])) self.file_list.addItems(self.find_type([".sh",".elf",".bin",".lua",".json",".dtb",".axf"]))
# 扫描从机 # 扫描从机
def scan_slave(self): def scan_slave(self):
@@ -438,17 +473,17 @@ class updata_dlg(QObject):
ip_prefix=self.ip_prefix.text() ip_prefix=self.ip_prefix.text()
u.find(ip_prefix) u.find(ip_prefix)
ip_list=u.dst_ip_list ip_list=u.dst_ip_list
if(len(ip_list)==0): # if(len(ip_list)==0):
ret=self.show_question("提示","未扫描到从机,是否自动添加?") # ret=self.show_question("提示","未扫描到从机,是否自动添加?")
if(ret==True): # if(ret==True):
ip_list.append((ip_prefix+".81","local_id_1")) # ip_list.append((ip_prefix+".81","local_id_1"))
ip_list.append((ip_prefix+".82","local_id_2")) # ip_list.append((ip_prefix+".82","local_id_2"))
ip_list.append((ip_prefix+".83","local_id_3")) # ip_list.append((ip_prefix+".83","local_id_3"))
ip_list.append((ip_prefix+".84","local_id_4")) # ip_list.append((ip_prefix+".84","local_id_4"))
ip_list.append((ip_prefix+".85","local_id_5")) # ip_list.append((ip_prefix+".85","local_id_5"))
ip_list.append((ip_prefix+".86","local_id_6")) # ip_list.append((ip_prefix+".86","local_id_6"))
ip_list.append((ip_prefix+".87","local_id_7")) # ip_list.append((ip_prefix+".87","local_id_7"))
ip_list.append((ip_prefix+".88","local_id_8")) # ip_list.append((ip_prefix+".88","local_id_8"))
list_str=[] list_str=[]
for i in u.dst_ip_list: for i in u.dst_ip_list:
list_str.append(i[0]+','+i[1]) list_str.append(i[0]+','+i[1])
@@ -488,13 +523,25 @@ class updata_dlg(QObject):
u.dst_ip_list=ip_list u.dst_ip_list=ip_list
u.rate_signal.connect(self.rate_slot) u.rate_signal.connect(self.rate_slot)
u.end_signal.connect(self.end_slot) u.end_signal.connect(self.end_slot)
updata_cmd="mcu updata 1,2,3,4,5,6,7,8,9,10 " updata_cmd="mcu updata 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 "
updata_cmd+="/home/root/config/"+file updata_cmd+="/home/root/config/"+file
cmd_list=[] cmd_list=[]
cmd_list.append((updata_cmd,1,900)) cmd_list.append((updata_cmd,1,900))
t = threading.Thread(target=u.bordcast, args=(cmd_list,)) t = threading.Thread(target=u.bordcast, args=(cmd_list,))
t.start() t.start()
# 开始升级方案
def scheme_mcu(self,ip_list):
u=udp.myudp(1,255)
u.dst_ip_list=ip_list
u.rate_signal.connect(self.rate_slot)
u.end_signal.connect(self.end_slot)
updata_cmd="mcu scheme 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 "
cmd_list=[]
cmd_list.append((updata_cmd,1,9))
t = threading.Thread(target=u.bordcast, args=(cmd_list,))
t.start()
# 小板通信测试 # 小板通信测试
def comm_test(self,ip_list): def comm_test(self,ip_list):
u=udp.myudp(1,255) u=udp.myudp(1,255)