udp.py 添加close函数用于关闭后台线程,
解决updata_ssh 后台线程无法正常关闭的问题 调整服务器文件列表显示,服务器文件夹显示中文别名
This commit is contained in:
		| @@ -19,4 +19,11 @@ class TaskBox(QWidget): | ||||
|  | ||||
|  | ||||
|  | ||||
| class task_base(object): | ||||
|     def __init__(self): | ||||
|         self.TaskID="" | ||||
|          | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -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): | ||||
|         for i in items: | ||||
|             # print("add item",i[0]) | ||||
|             self.file_list.addItem(i[0]) | ||||
|             self.file_list.addItem(_tran_(i[0])) | ||||
|     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.close() | ||||
|     def show(self): | ||||
| @@ -75,21 +103,21 @@ class file_list(QDialog): | ||||
|  | ||||
|     def __init__(self,father:QDialog,title:str,str_list:list): | ||||
|         QDialog.__init__(self,father) | ||||
|         self.resize(1000,400) | ||||
|         self.resize(1200,700) | ||||
|         self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) | ||||
|         self.setWindowTitle(title) | ||||
|         self.code_list=QTableWidget(self) | ||||
|         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.setHorizontalHeaderLabels(list(["ID","上传时间","文件名","描述"])) | ||||
|         self.code_list.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) | ||||
|         self.code_list.horizontalHeader().setSectionResizeMode(0,QHeaderView.ResizeMode.Fixed) | ||||
|         self.code_list.setColumnWidth(0,50) | ||||
|         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.setColumnWidth(2,200) | ||||
|         self.code_list.setColumnWidth(2,400) | ||||
|         self.code_list.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows) | ||||
|         self.code_list.cellDoubleClicked.connect(self.cell_clicked) | ||||
|         self.backcolor=True | ||||
|   | ||||
| @@ -73,6 +73,8 @@ class myudp(QObject): | ||||
|     def send(self,ip,cmd,recv_num,timeout): | ||||
|         resoult=True | ||||
|         udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | ||||
|         self.udp=udp | ||||
|         self.send_on=True | ||||
|         local_addr = ("", 0) | ||||
|         udp.bind(local_addr) | ||||
|         udp.settimeout(timeout) | ||||
| @@ -80,6 +82,8 @@ class myudp(QObject): | ||||
|         try: | ||||
|             index=0 | ||||
|             while index<recv_num: | ||||
|                 if(self.send_on==False): | ||||
|                     return False | ||||
|                 recv_data = udp.recvfrom(1024) | ||||
|                 recv_msg = recv_data[0] | ||||
|                 send_addr = recv_data[1] | ||||
| @@ -136,6 +140,11 @@ class myudp(QObject): | ||||
|          | ||||
|         for t in threads: | ||||
|             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 | ||||
|        | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -60,4 +60,6 @@ if __name__ == "__main__": | ||||
|     dlg=updata_dlg() | ||||
|     dlg.show() | ||||
|     app.exec() | ||||
|     print("exe end.") | ||||
|     sys.exit(0) | ||||
|     print("exe end2.") | ||||
|   | ||||
| @@ -118,6 +118,7 @@ class updata_dlg(QWidget): | ||||
|         self.widget.setWindowTitle("批检仪程序升级") | ||||
|         self.widget.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint) | ||||
|         self.addrs="" | ||||
|         self.udp=None | ||||
|         self.dhcp_server=None | ||||
|         # 如果要升级服务,则在升级之后ssh会连接不上 | ||||
|         self.systemd_stop=False | ||||
| @@ -155,8 +156,10 @@ class updata_dlg(QWidget): | ||||
|  | ||||
|  | ||||
|     def quit(self): | ||||
|         # 程序退出 | ||||
|         qApp.exit(1) | ||||
|         if(self.udp is not None): | ||||
|             print("close udp thread") | ||||
|             self.udp.close() | ||||
|  | ||||
|         # 初始化文件列表 | ||||
|     def file_list_init(self): | ||||
|         self.file_list = QListWidget(self.widget) | ||||
| @@ -596,6 +599,8 @@ class updata_dlg(QWidget): | ||||
|             return | ||||
|         print("file:",file) | ||||
|         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.setWindowTitle("升级mcu") | ||||
|         self.updata_mcu(slave_list,file) | ||||
| @@ -609,6 +614,8 @@ class updata_dlg(QWidget): | ||||
|             return | ||||
|         print("slaves:",slave_list) | ||||
|         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.setWindowTitle("升级方案") | ||||
|         self.scheme_mcu(slave_list) | ||||
| @@ -770,6 +777,7 @@ class updata_dlg(QWidget): | ||||
|         # 开始升级mcu | ||||
|     def updata_mcu(self,ip_list,file): | ||||
|         u=udp.myudp(1,255) | ||||
|         self.udp=u | ||||
|         u.dst_ip_list=ip_list | ||||
|         u.rate_signal.connect(self.rate_slot) | ||||
|         u.end_signal.connect(self.end_slot) | ||||
| @@ -784,6 +792,7 @@ class updata_dlg(QWidget): | ||||
|         # 开始升级方案 | ||||
|     def scheme_mcu(self,ip_list): | ||||
|         u=udp.myudp(1,255) | ||||
|         self.udp=u | ||||
|         u.dst_ip_list=ip_list | ||||
|         u.rate_signal.connect(self.rate_slot) | ||||
|         u.end_signal.connect(self.end_slot) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 andy
					andy