🚑 update 修复日志记录闪退bug 增加移动至此 修复复位

This commit is contained in:
FrankCV2048
2025-01-02 22:44:01 +08:00
parent bfba1c3420
commit 0500db207a
5 changed files with 122 additions and 18 deletions

90
main.py
View File

@ -1,8 +1,10 @@
import configparser
import copy
import json
import logging
import os
import queue
import random
import sys
import threading
from multiprocessing import Process
@ -14,7 +16,8 @@ import numpy as np
from PyQt5.uic.properties import QtWidgets
from PySide6 import QtCore
from PySide6.QtCore import QThread, Signal, Slot, QObject, QEvent, QTimer
from PySide6.QtGui import QIntValidator, QStandardItemModel, QStandardItem, Qt, QMovie, QIcon, QCursor, QColor
from PySide6.QtGui import QIntValidator, QStandardItemModel, QStandardItem, Qt, QMovie, QIcon, QCursor, QColor, \
QTextCursor
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QHeaderView, QTableWidget, \
QTableWidgetItem, QWidget, QHBoxLayout, QAbstractItemView, QMessageBox, QSizePolicy, QComboBox, QMenu
from datetime import datetime
@ -326,9 +329,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def init_table_position(self):
#self.tableWidget_line_positions.setRowCount(5)
self.tableWidget_line_positions.setColumnCount(13)
self.tableWidget_line_positions.setColumnCount(14)
self.tableWidget_line_positions.setHorizontalHeaderLabels(["节段","X","Y","Z","U","V","W","运动类型","点位类型","序号","排序","线号","操作2"])
self.tableWidget_line_positions.setHorizontalHeaderLabels(["节段","X","Y","Z","U","V","W","运动类型","点位类型","序号","排序","线号","操作1","操作2"])
self.tableWidget_line_positions.setSelectionBehavior(QTableWidget.SelectRows)
self.tableWidget_line_positions.setColumnHidden(0, True)
self.tableWidget_line_positions.setColumnHidden(9,True)
@ -340,7 +343,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
header = self.tableWidget_line_positions.horizontalHeader()
header.setSectionResizeMode(0, PySide6.QtWidgets.QHeaderView.ResizeMode.Interactive)
self.tableWidget_line_positions.setHorizontalScrollBarPolicy(PySide6.QtCore.Qt.ScrollBarPolicy.ScrollBarAsNeeded)
for i in range(13):
for i in range(14):
header.setSectionResizeMode(i, PySide6.QtWidgets.QHeaderView.ResizeMode.Interactive)
self.tableWidget_line_positions.setContextMenuPolicy(PySide6.QtCore.Qt.ContextMenuPolicy.CustomContextMenu)
self.tableWidget_line_positions.customContextMenuRequested.connect(self.show_positions_context_menu)
@ -416,6 +419,44 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.set_positionModel_to_tabel(row_i+1,position_model)
self.table_line_changed = True
def tabel_move_position(self,row_i):
if self.tableWidget_line_positions.currentRow()==-1:
QMessageBox.information(self, "提示", Constant.str_sys_set_position_error)
return
row_i = self.tableWidget_line_positions.currentRow()
combox_line_type = self.tableWidget_line_positions.cellWidget(row_i, 7)
lineType = combox_line_type.currentData()
p1 = Real_Position().init_position(
float(self.tableWidget_line_positions.item(row_i, 1).text()),
float(self.tableWidget_line_positions.item(row_i, 2).text()),
float(self.tableWidget_line_positions.item(row_i, 3).text()),
float(self.tableWidget_line_positions.item(row_i, 4).text()),
float(self.tableWidget_line_positions.item(row_i, 5).text()),
float(self.tableWidget_line_positions.item(row_i, 6).text()),
)
if lineType == 0: #直线
if row_i != 0:
combox_line_type_inner = self.tableWidget_line_positions.cellWidget(row_i-1, 7)
lineType_inner = combox_line_type_inner.currentData()
if lineType_inner == 2:
p2 = Real_Position().init_position(
float(self.tableWidget_line_positions.item(row_i-1, 1).text()),
float(self.tableWidget_line_positions.item(row_i-1, 2).text()),
float(self.tableWidget_line_positions.item(row_i-1, 3).text()),
float(self.tableWidget_line_positions.item(row_i-1, 4).text()),
float(self.tableWidget_line_positions.item(row_i-1, 5).text()),
float(self.tableWidget_line_positions.item(row_i-1, 6).text()),
)
self.send_position_command(x1=p1.X, x2=p1.Y, x3=p1.Z, x4=p1.X, x5=p1.Y, x6=p1.Z, move_type=MoveType.Cure, speed=self.robotClient.debug_speed, p2=p2)
return
self.send_position_command(x1=p1.X, x2=p1.Y, x3=p1.Z, x4=p1.X, x5=p1.Y, x6=p1.Z, move_type=MoveType.WORLD,speed=self.robotClient.debug_speed)
return
if lineType == 4: # 自由路径
self.send_position_command(x1=p1.X, x2=p1.Y, x3=p1.Z, x4=p1.X, x5=p1.Y, x6=p1.Z,move_type=MoveType.AXIS,speed=self.robotClient.debug_speed)
return
def tabel_get_position(self,row_i):
if self.tableWidget_line_positions.currentRow()==-1:
QMessageBox.information(self, "提示", Constant.str_sys_set_position_error)
@ -469,9 +510,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
get_pos_btn.clicked.connect(
lambda _, index=row_i: self.tabel_get_position(index))
self.tableWidget_line_positions.setCellWidget(row_i, 12, get_pos_btn)
# del_pos_btn = QPushButton("删除点位")
# del_pos_btn.clicked.connect(lambda _, index=row_i: self.tabel_delete_position(index))
# self.tableWidget_line_positions.setCellWidget(row_i, 12, del_pos_btn)
move_pos_btn = QPushButton("移至点位")
move_pos_btn.clicked.connect(lambda _, index=row_i: self.tabel_move_position(index))
self.tableWidget_line_positions.setCellWidget(row_i, 13, move_pos_btn)
def send_table_position_status_changed(self):
self.table_position_changed = True
@ -490,9 +533,28 @@ class MainWindow(QMainWindow, Ui_MainWindow):
pass
def init_log(self):
log.log_info_signal.connect(self.log_info_message)
log.log_error_signal.connect(self.log_error_message)
log.log_warning_signal.connect(self.log_warning_message)
log.init_log(self.textEdit_log_info, self.textEdit_log_error, Constant.log_file_path)
log.log_message(logging.INFO, Constant.str_sys_start)
def log_info_message(self,message):
now = datetime.now()
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
self.textEdit_log_info.append(f'{formatted_time}-提示: {message}')
def log_warning_message(self,message):
now = datetime.now()
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
self.textEdit_log_info.append(f'{formatted_time}-注意: {message}')
self.textEdit_log_error.append(f'{formatted_time}-注意: {message}')
def log_error_message(self,message):
now = datetime.now()
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
self.textEdit_log_info.append(f'{formatted_time}-报警: {message}')
self.textEdit_log_error.append(f'{formatted_time}-报警: {message}')
if self.tabWidget.currentIndex() != 1:
self.tabWidget.setCurrentIndex(1)
def init_UI(self):
self.pushButton_num1.clicked.connect(self.send_num_button_click)
@ -1210,7 +1272,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# self.send_position_command(safe_position.X, safe_position.Y, safe_position.Z, safe_position.U, safe_position.V, safe_position.W,move_type=MoveType.WORLD)
if self.remain_lineName != '':
line_head = f'{Constant.feedLine_set_section}{self.remain_lineName}'
return_positions = self.feedLine_dict[line_head].positions
return_positions = copy.deepcopy(self.feedLine_dict[line_head].positions)
position_origin = PositionModel()
position_origin.init_position(self.robotClient.origin_position)
position_origin.status = 1
@ -1591,7 +1653,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.robotClient.add_sendQuene(request_command)
# self.command_quene.put(request_command)
def send_position_command(self, x1, x2, x3, x4, x5, x6, move_type: MoveType = MoveType.WORLD):
def send_position_command(self, x1, x2, x3, x4, x5, x6, move_type: MoveType = MoveType.WORLD,speed=5,p2=None):
position_instruction = Instruction()
position_instruction.m0 = float(x1)
@ -1601,7 +1663,15 @@ class MainWindow(QMainWindow, Ui_MainWindow):
position_instruction.m4 = float(x5)
position_instruction.m5 = float(x6)
position_instruction.action = move_type.value
position_instruction.speed=self.robotClient.debug_speed
position_instruction.speed = self.robotClient.debug_speed
if position_instruction.action == 17:
position_instruction.m0_p = p2.X
position_instruction.m1_p = p2.Y
position_instruction.m2_p = p2.Z
position_instruction.m3_p = p2.U
position_instruction.m4_p = p2.V
position_instruction.m5_p = p2.W
instruction_command = CMDInstructRequest()
instruction_command.instructions.append(position_instruction)
request_command = instruction_command.toString()