udp.py 添加close函数用于关闭后台线程,

解决updata_ssh 后台线程无法正常关闭的问题
调整服务器文件列表显示,服务器文件夹显示中文别名
This commit is contained in:
andy
2023-11-05 21:05:49 +08:00
parent 238fd1e6bb
commit eb922ee1aa
7 changed files with 82 additions and 23 deletions

View File

@@ -106,3 +106,7 @@
解决updata 关闭时串口没有正常关闭的问题 解决updata 关闭时串口没有正常关闭的问题
修改服务器文件列表显示 修改服务器文件列表显示
添加.jwt文件解析 添加.jwt文件解析
2023.11.5
udp.py 添加close函数用于关闭后台线程,解决updata_ssh 后台线程无法正常关闭的问题
调整服务器文件列表显示,服务器文件夹显示中文别名

View File

@@ -55,7 +55,7 @@ class coder(QObject):
self.ser_is_open = False self.ser_is_open = False
self.recv_handler=None self.recv_handler=None
self.autoinc_id=False self.autoinc_id=False
self.openignore_flag=False self.openignore_flag=True
self.autotest_is_open=0 self.autotest_is_open=0
self.uid_length=16 self.uid_length=16
self.code_list_backcolor=False self.code_list_backcolor=False
@@ -205,7 +205,7 @@ class coder(QObject):
def com_but_init(self): def com_but_init(self):
self.com_but = QPushButton(self.widget) self.com_but = QPushButton(self.widget)
self.com_but.setObjectName(u"com_but") self.com_but.setObjectName(u"com_but")
self.com_but.setGeometry(QRect(1370, 90, 93, 28)) self.com_but.setGeometry(QRect(1370, 90, 100, 28))
self.com_but.setText("打开端口") self.com_but.setText("打开端口")
self.com_but.clicked.connect(self.com_but_clicked) self.com_but.clicked.connect(self.com_but_clicked)
@@ -213,7 +213,7 @@ class coder(QObject):
def moterup_init(self): def moterup_init(self):
self.moterup=QPushButton(self.widget) self.moterup=QPushButton(self.widget)
self.moterup.setObjectName(u"moteerup") self.moterup.setObjectName(u"moteerup")
self.moterup.setGeometry(QRect(1250, 90, 93, 28)) self.moterup.setGeometry(QRect(1250, 90, 100, 28))
self.moterup.setText("电机上升") self.moterup.setText("电机上升")
self.moterup.clicked.connect(self.cmd_moter_up) self.moterup.clicked.connect(self.cmd_moter_up)
@@ -221,7 +221,7 @@ class coder(QObject):
def autoinc_init(self): def autoinc_init(self):
self.autoinc=QPushButton(self.widget) self.autoinc=QPushButton(self.widget)
self.autoinc.setObjectName(u"autoinc") self.autoinc.setObjectName(u"autoinc")
self.autoinc.setGeometry(QRect(1250, 130, 93, 28)) self.autoinc.setGeometry(QRect(1250, 130, 100, 28))
self.autoinc.clicked.connect(self.autoinc_clicked) self.autoinc.clicked.connect(self.autoinc_clicked)
self.autoinc_clicked() self.autoinc_clicked()
@@ -229,7 +229,7 @@ class coder(QObject):
def check_but_init(self): def check_but_init(self):
self.check_but=QPushButton(self.widget) self.check_but=QPushButton(self.widget)
self.check_but.setObjectName(u"check_but") self.check_but.setObjectName(u"check_but")
self.check_but.setGeometry(QRect(1250, 170, 93, 28)) self.check_but.setGeometry(QRect(1250, 170, 100, 28))
self.check_but.clicked.connect(self.check_but_clicked) self.check_but.clicked.connect(self.check_but_clicked)
self.check_but.setText("开始检测") self.check_but.setText("开始检测")
@@ -237,7 +237,7 @@ class coder(QObject):
def posend_but_init(self): def posend_but_init(self):
self.posend_but=QPushButton(self.widget) self.posend_but=QPushButton(self.widget)
self.posend_but.setObjectName(u"posend_but") self.posend_but.setObjectName(u"posend_but")
self.posend_but.setGeometry(QRect(1250, 210, 93, 28)) self.posend_but.setGeometry(QRect(1250, 210, 100, 28))
self.posend_but.clicked.connect(self.posend_but_clicked) self.posend_but.clicked.connect(self.posend_but_clicked)
self.posend_but.setText("到位感应") self.posend_but.setText("到位感应")
@@ -245,7 +245,7 @@ class coder(QObject):
def autotest_but_init(self): def autotest_but_init(self):
self.autotest_but=QPushButton(self.widget) self.autotest_but=QPushButton(self.widget)
self.autotest_but.setObjectName(u"autotest_but") self.autotest_but.setObjectName(u"autotest_but")
self.autotest_but.setGeometry(QRect(1250, 250, 93, 28)) self.autotest_but.setGeometry(QRect(1250, 250, 100, 28))
self.autotest_but.clicked.connect(self.autotest_but_clicked) self.autotest_but.clicked.connect(self.autotest_but_clicked)
self.autotest_but.setText("开自动测试") self.autotest_but.setText("开自动测试")
@@ -253,7 +253,7 @@ class coder(QObject):
def stop_but_init(self): def stop_but_init(self):
self.stop_but=QPushButton(self.widget) self.stop_but=QPushButton(self.widget)
self.stop_but.setObjectName(u"stop_but") self.stop_but.setObjectName(u"stop_but")
self.stop_but.setGeometry(QRect(1250, 290, 93, 28)) self.stop_but.setGeometry(QRect(1250, 290, 100, 28))
self.stop_but.clicked.connect(self.stop_but_clicked) self.stop_but.clicked.connect(self.stop_but_clicked)
self.stop_state=True self.stop_state=True
self.stop_but_clicked() self.stop_but_clicked()
@@ -262,7 +262,7 @@ class coder(QObject):
def code_but_init(self): def code_but_init(self):
self.code_but=QPushButton(self.widget) self.code_but=QPushButton(self.widget)
self.code_but.setObjectName(u"code_but") self.code_but.setObjectName(u"code_but")
self.code_but.setGeometry(QRect(1250, 330, 93, 28)) self.code_but.setGeometry(QRect(1250, 330, 100, 28))
self.code_but.clicked.connect(self.code_but_clicked) self.code_but.clicked.connect(self.code_but_clicked)
self.code_but.setText("赋码") self.code_but.setText("赋码")
@@ -270,7 +270,7 @@ class coder(QObject):
def moterdown_init(self): def moterdown_init(self):
self.moterdown=QPushButton(self.widget) self.moterdown=QPushButton(self.widget)
self.moterdown.setObjectName(u"moteerup") self.moterdown.setObjectName(u"moteerup")
self.moterdown.setGeometry(QRect(1250, 370, 93, 28)) self.moterdown.setGeometry(QRect(1250, 370, 100, 28))
self.moterdown.setText("电机下降") self.moterdown.setText("电机下降")
self.moterdown.clicked.connect(self.cmd_moter_down) self.moterdown.clicked.connect(self.cmd_moter_down)
@@ -278,7 +278,7 @@ class coder(QObject):
def openignore_init(self): def openignore_init(self):
self.openignore=QPushButton(self.widget) self.openignore=QPushButton(self.widget)
self.openignore.setObjectName(u"moteerup") self.openignore.setObjectName(u"moteerup")
self.openignore.setGeometry(QRect(1250, 410, 93, 28)) self.openignore.setGeometry(QRect(1250, 410, 100, 28))
self.openignore.clicked.connect(self.openignore_clicked) self.openignore.clicked.connect(self.openignore_clicked)
self.openignore_clicked() self.openignore_clicked()
@@ -552,8 +552,8 @@ class coder(QObject):
# 初始化处理函数列表 # 初始化处理函数列表
def recv_handler_table_init(self): def recv_handler_table_init(self):
self.recv_handler_table={"批检仪检测后赋码":(self.recv_code_after_check_checker,16,self.change_enter_checker,self.change_exit_checker), self.recv_handler_table={"批检仪检测后赋码(XT)":(self.recv_code_after_check_checker,16,self.change_enter_checker,self.change_exit_checker),
"批检仪检测时赋码":(self.recv_code_with_check_checker,15,self.change_enter_checker,self.change_exit_checker), "批检仪检测时赋码(JQ)":(self.recv_code_with_check_checker,15,self.change_enter_checker,self.change_exit_checker),
"赋码控制器":(self.recv_deal_coder2ch,15,self.change_enter_coder2ch,self.change_exit_coder2ch)} "赋码控制器":(self.recv_deal_coder2ch,15,self.change_enter_coder2ch,self.change_exit_coder2ch)}
# 切换设备类型时进行的额外处理 # 切换设备类型时进行的额外处理

View File

@@ -19,4 +19,11 @@ class TaskBox(QWidget):
class task_base(object):
def __init__(self):
self.TaskID=""

View File

@@ -5,8 +5,36 @@ import sys
# 定义转换字符
_TRAN_TABLE=[
("checker_dtb","设备树文件"),
("checker_gen1_app","一代批检仪/赋码仪主板程序"),
("checker_gen1_boot","一代批检仪/赋码仪主板boot程序"),
("checker_host_app","自研批检仪/赋码仪主板程序"),
("checker_m4","自研批检仪/赋码仪协处理器程序"),
("checker_slave_app","自研批检仪/赋码仪小板程序"),
("checker_slave_app_can","自研批检仪/赋码仪小板程序CAN总线"),
("checker_slave_app_uart","自研批检仪/赋码仪小板程序串口总线"),
("checker_slave_boot_can","自研批检仪/赋码仪小板boot程序CAN总线"),
("checker_slave_boot_uart","自研批检仪/赋码仪小板boot程序串口总线"),
("coder_stm32f1_app","手动线赋码控制器主板程序"),
("coder_stm32f1_boot","手动线赋码控制器主板boot程序"),
("daemon","自研批检仪/赋码仪守护进程"),
("jqcoder_slave_app","一代赋码仪小板程序"),
("judge","判定脚本"),
("scheme","检测方案"),
("test_data","测试数据"),
]
def _tran_(text:str):
for i in _TRAN_TABLE:
if(i[0]==text):
return i[1]
return text
def _detran_(text:str):
for i in _TRAN_TABLE:
if(i[1]==text):
return i[0]
return text
@@ -57,9 +85,9 @@ class select_list(QObject):
def item_append(self,items:list): def item_append(self,items:list):
for i in items: for i in items:
# print("add item",i[0]) # print("add item",i[0])
self.file_list.addItem(i[0]) self.file_list.addItem(_tran_(i[0]))
def item_clicked(self,item:QListWidgetItem ): def item_clicked(self,item:QListWidgetItem ):
self.select_item=item.text() self.select_item=_detran_(item.text())
self.w.done(QDialog.DialogCode.Accepted) self.w.done(QDialog.DialogCode.Accepted)
self.w.close() self.w.close()
def show(self): def show(self):
@@ -75,21 +103,21 @@ class file_list(QDialog):
def __init__(self,father:QDialog,title:str,str_list:list): def __init__(self,father:QDialog,title:str,str_list:list):
QDialog.__init__(self,father) QDialog.__init__(self,father)
self.resize(1000,400) self.resize(1200,700)
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
self.setWindowTitle(title) self.setWindowTitle(title)
self.code_list=QTableWidget(self) self.code_list=QTableWidget(self)
self.code_list.setObjectName(u"code_list") self.code_list.setObjectName(u"code_list")
self.code_list.setGeometry(QRect(5, 5, 990, 390)) self.code_list.setGeometry(QRect(5, 5, 1190, 690))
self.code_list.setColumnCount(4) self.code_list.setColumnCount(4)
self.code_list.setHorizontalHeaderLabels(list(["ID","上传时间","文件名","描述"])) self.code_list.setHorizontalHeaderLabels(list(["ID","上传时间","文件名","描述"]))
self.code_list.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) self.code_list.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch)
self.code_list.horizontalHeader().setSectionResizeMode(0,QHeaderView.ResizeMode.Fixed) self.code_list.horizontalHeader().setSectionResizeMode(0,QHeaderView.ResizeMode.Fixed)
self.code_list.setColumnWidth(0,50) self.code_list.setColumnWidth(0,50)
self.code_list.horizontalHeader().setSectionResizeMode(1,QHeaderView.ResizeMode.Fixed) self.code_list.horizontalHeader().setSectionResizeMode(1,QHeaderView.ResizeMode.Fixed)
self.code_list.setColumnWidth(1,200) self.code_list.setColumnWidth(1,160)
self.code_list.horizontalHeader().setSectionResizeMode(2,QHeaderView.ResizeMode.Fixed) self.code_list.horizontalHeader().setSectionResizeMode(2,QHeaderView.ResizeMode.Fixed)
self.code_list.setColumnWidth(2,200) self.code_list.setColumnWidth(2,400)
self.code_list.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows) self.code_list.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows)
self.code_list.cellDoubleClicked.connect(self.cell_clicked) self.code_list.cellDoubleClicked.connect(self.cell_clicked)
self.backcolor=True self.backcolor=True

View File

@@ -73,6 +73,8 @@ class myudp(QObject):
def send(self,ip,cmd,recv_num,timeout): def send(self,ip,cmd,recv_num,timeout):
resoult=True resoult=True
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.udp=udp
self.send_on=True
local_addr = ("", 0) local_addr = ("", 0)
udp.bind(local_addr) udp.bind(local_addr)
udp.settimeout(timeout) udp.settimeout(timeout)
@@ -80,6 +82,8 @@ class myudp(QObject):
try: try:
index=0 index=0
while index<recv_num: while index<recv_num:
if(self.send_on==False):
return False
recv_data = udp.recvfrom(1024) recv_data = udp.recvfrom(1024)
recv_msg = recv_data[0] recv_msg = recv_data[0]
send_addr = recv_data[1] send_addr = recv_data[1]
@@ -136,6 +140,11 @@ class myudp(QObject):
for t in threads: for t in threads:
t.join() t.join()
def close(self):
if(self.udp is not None):
self.udp.close()
if(self.send_on is not None):
self.send_on=False

View File

@@ -60,4 +60,6 @@ if __name__ == "__main__":
dlg=updata_dlg() dlg=updata_dlg()
dlg.show() dlg.show()
app.exec() app.exec()
print("exe end.")
sys.exit(0) sys.exit(0)
print("exe end2.")

View File

@@ -118,6 +118,7 @@ class updata_dlg(QWidget):
self.widget.setWindowTitle("批检仪程序升级") self.widget.setWindowTitle("批检仪程序升级")
self.widget.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint) self.widget.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
self.addrs="" self.addrs=""
self.udp=None
self.dhcp_server=None self.dhcp_server=None
# 如果要升级服务则在升级之后ssh会连接不上 # 如果要升级服务则在升级之后ssh会连接不上
self.systemd_stop=False self.systemd_stop=False
@@ -155,8 +156,10 @@ class updata_dlg(QWidget):
def quit(self): def quit(self):
# 程序退出 if(self.udp is not None):
qApp.exit(1) print("close udp thread")
self.udp.close()
# 初始化文件列表 # 初始化文件列表
def file_list_init(self): def file_list_init(self):
self.file_list = QListWidget(self.widget) self.file_list = QListWidget(self.widget)
@@ -596,6 +599,8 @@ class updata_dlg(QWidget):
return return
print("file:",file) print("file:",file)
w=QDialog(self.widget) w=QDialog(self.widget)
w.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
w.destroyed.connect(self.quit)
w.resize(700-100, len(slave_list)*40+20) w.resize(700-100, len(slave_list)*40+20)
w.setWindowTitle("升级mcu") w.setWindowTitle("升级mcu")
self.updata_mcu(slave_list,file) self.updata_mcu(slave_list,file)
@@ -609,6 +614,8 @@ class updata_dlg(QWidget):
return return
print("slaves:",slave_list) print("slaves:",slave_list)
w=QDialog(self.widget) w=QDialog(self.widget)
w.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
w.destroyed.connect(self.quit)
w.resize(700-100, len(slave_list)*40+20) w.resize(700-100, len(slave_list)*40+20)
w.setWindowTitle("升级方案") w.setWindowTitle("升级方案")
self.scheme_mcu(slave_list) self.scheme_mcu(slave_list)
@@ -770,6 +777,7 @@ class updata_dlg(QWidget):
# 开始升级mcu # 开始升级mcu
def updata_mcu(self,ip_list,file): def updata_mcu(self,ip_list,file):
u=udp.myudp(1,255) u=udp.myudp(1,255)
self.udp=u
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)
@@ -784,6 +792,7 @@ class updata_dlg(QWidget):
# 开始升级方案 # 开始升级方案
def scheme_mcu(self,ip_list): def scheme_mcu(self,ip_list):
u=udp.myudp(1,255) u=udp.myudp(1,255)
self.udp=u
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)