添加dhcp和串口控制台功能

This commit is contained in:
ranchuan
2023-09-20 18:20:42 +08:00
parent 125c199756
commit d8436b89eb
7 changed files with 1206 additions and 6 deletions

View File

@@ -14,8 +14,11 @@ import encodings.idna
import base64
import memory_pic
import ctypes
import mysql
import select_list
import dhcp.dhcp as dhcp
import mysql
import console_uart
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("myappid")
STR_RED="\033[1;31m"
@@ -103,15 +106,19 @@ class updata_dlg(QObject):
QObject.__init__(self)
self.app = QApplication(sys.argv)
self.widget = QWidget()
self.widget.resize(703, 409)
self.widget.resize(820, 410)
self.widget.setWindowTitle("批检仪程序升级")
self.widget.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
self.addrs=""
self.dhcp_server=None
self.but_y=60
self.but_y_step=40
self.file_list_init()
self.slave_list_init()
self.save_but_init()
self.dhcp_but_init()
self.console_but_init()
self.console_but_init()
self.cmd_but_init()
self.refresh_but_init()
self.sstate_but_init()
@@ -193,6 +200,23 @@ class updata_dlg(QObject):
self.save_but.setToolTip("请先选中要升级的主板和文件,然后点击此按钮发送到设备中。")
# self.save_but.setToolTipDuration(1)
# 初始化DHCP服务器按钮
def dhcp_but_init(self):
self.dhcp_but = QPushButton(self.widget)
self.dhcp_but.setObjectName(u"dhcp_but")
self.dhcp_but.setGeometry(QRect(700, 60, 93, 28))
self.dhcp_but.setText("打开DHCP")
self.dhcp_but.clicked.connect(self.dhcp_but_clicked)
self.dhcp_but.setToolTip("如果没有搜索到从机则打开DHCP服务器。")
# 初始化控制台按钮
def console_but_init(self):
self.console_but = QPushButton(self.widget)
self.console_but.setObjectName(u"console_but")
self.console_but.setGeometry(QRect(700, 100, 93, 28))
self.console_but.setText("串口控制台")
self.console_but.clicked.connect(self.console_but_clicked)
self.console_but.setToolTip("通过设备的串口控制台升级程序这种方式需要使用到U盘。")
# 初始化发送命令按钮
def cmd_but_init(self):
@@ -379,7 +403,10 @@ class updata_dlg(QObject):
elif(i[-4:]==".dtb"):
dst_list.append("/run/media/mmcblk2p2/"+i)
elif(i[-5:]==".json"):
dst_list.append("/home/root/config/"+"checker_ye_cfg.json")
if(i!="cfg.json"):
dst_list.append("/home/root/config/"+"checker_ye_cfg.json")
else:
dst_list.append("/home/root/config/"+"cfg.json")
elif(i[-4:]==".lua"):
dst_list.append("/home/root/config/"+"judge.lua")
elif(i[-4:]==".axf"):
@@ -401,6 +428,35 @@ class updata_dlg(QObject):
elif(s=="20通道"):
self.addrs="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 "
print("addrs:",self.addrs)
def console_but_clicked(self):
print("console_but_clicked.")
dlg=console_uart.console_dlg(self.widget,"串口控制台")
dlg.show()
print("Console end.")
def dhcp_but_clicked(self):
print("dhcp_but clicked.")
if(self.dhcp_server==None):
self.dhcp_but.setEnabled(False)
self.dhcp_server=dhcp.creat_dhcp_server()
self.dhcp_server.new_ip_addr_signal.connect(self.add_slave_slot)
self.dhcp_server.server_start_signal.connect(self.dhcp_start_slot)
self.dhcp_server.server_end_signal.connect(self.dhcp_end_slot)
self.dhcp_server.run_in_thread()
else:
self.dhcp_but.setEnabled(False)
self.dhcp_server.new_ip_addr_signal.disconnect(dlg.add_slave_slot)
self.dhcp_server.close()
def dhcp_start_slot(self):
self.dhcp_but.setText("关闭DHCP")
self.dhcp_but.setEnabled(True)
def dhcp_end_slot(self):
self.dhcp_but.setText("打开DHCP")
self.dhcp_but.setEnabled(True)
self.dhcp_server.server_start_signal.disconnect(self.dhcp_start_slot)
self.dhcp_server.server_end_signal.disconnect(self.dhcp_end_slot)
self.dhcp_server=None
# 发送文件按钮按下
def save_but_clicked(self):
print("save_but_clicked.")
@@ -528,7 +584,11 @@ class updata_dlg(QObject):
# 开始运行
def run(self):
self.widget.show()
sys.exit(self.app.exec())
a=self.app.exec()
print("run end.")
if(self.dhcp_server!=None):
self.dhcp_server.close()
# sys.exit(a)
# 扫描文件
def scan_file(self):
@@ -557,6 +617,14 @@ class updata_dlg(QObject):
list_str.append(i[0]+','+i[1])
self.slave_list.addItems(list_str)
# 添加单个从机地址
def add_slave_slot(self,mac:str,ip:str,name:str):
for i in range(self.slave_list.count()):
item=self.slave_list.item(i).text()
if(item.split(",")[0]==ip):
return
self.slave_list.addItem(ip+",dhcp_find")
# 扫描指定类型的文件
def find_type(self,types:list):
path = self.getpath()+"file\\"
@@ -733,4 +801,3 @@ if __name__ == "__main__":
lock=locker()
dlg=updata_dlg()
dlg.run()