update 修改qss带来的异常退出
This commit is contained in:
@ -24,16 +24,19 @@ class RobotClient(TCPClient):
|
||||
self.time_delay_shake = time_delay_shake
|
||||
def add_sendQuene(self,command): #后面 命令分等级,紧急命令直接执行
|
||||
self.command_quene.put(command)
|
||||
|
||||
return
|
||||
|
||||
def send_Command(self):
|
||||
try:
|
||||
if self.command_quene.qsize()!=0:
|
||||
|
||||
command = self.command_quene.get()
|
||||
self.client_socket.send(command.encode())
|
||||
|
||||
if True:
|
||||
response = self.client_socket.recv(1024).decode('utf-8')
|
||||
|
||||
# response_message = json.loads(response)
|
||||
return True
|
||||
else:
|
||||
|
||||
@ -13,6 +13,7 @@ from Model.RobotModel import CMDInstructRequest, MoveType
|
||||
from Util.util_time import CRisOrFall
|
||||
from Vision.camera_coordinate_dete import Detection
|
||||
from Util.util_log import log
|
||||
from Model.RobotModel import Instruction
|
||||
|
||||
class FeedStatus(IntEnum):
|
||||
FNone = 0
|
||||
@ -90,13 +91,14 @@ class Feeding :
|
||||
|
||||
if self.feedConfig == None:
|
||||
self.feedStatus = FeedStatus.FNone
|
||||
|
||||
elif self.feedConfig.num == 0:
|
||||
self.feedStatus = FeedStatus.FNone
|
||||
if self.feedStatus == FeedStatus.FNone or self.pause:
|
||||
return
|
||||
elif self.feedStatus == FeedStatus.FStart:
|
||||
log.log_message(logging.INFO, Constant.str_feed_start)
|
||||
self.feedStatus = FeedStatus.FCheck
|
||||
self.feedStatus = FeedStatus.FCheck if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
pass
|
||||
elif self.feedStatus == FeedStatus.FCheck:
|
||||
log.log_message(logging.INFO, Constant.str_feed_check)
|
||||
@ -106,7 +108,7 @@ class Feeding :
|
||||
# pass
|
||||
# else:
|
||||
if self.feedConfig.num != 0:
|
||||
self.feedStatus = FeedStatus.FSafeP
|
||||
self.feedStatus = FeedStatus.FSafeP if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
|
||||
|
||||
|
||||
@ -114,7 +116,7 @@ class Feeding :
|
||||
log.log_message(logging.INFO,Constant.str_feed_safe)
|
||||
if self.feedConfig.feedLine.safe_position.compare(real_position):
|
||||
self.error_photo_count=0
|
||||
self.feedStatus = FeedStatus.FPhoto
|
||||
self.feedStatus = FeedStatus.FPhoto if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
#self.sendTargPosition(self.feedConfig.feedLine.photo_position)
|
||||
#判断是哪一个问题
|
||||
|
||||
@ -173,7 +175,7 @@ class Feeding :
|
||||
else:
|
||||
self.feedConfig.feedLine.take_position = detect_pos_list[max_z_index]
|
||||
log.log_message(logging.INFO, Constant.str_feed_takePhoto_line)
|
||||
self.feedStatus = FeedStatus.FTake
|
||||
self.feedStatus = FeedStatus.FTake if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
self.sendTargPosition(self.feedConfig.feedLine.take_position)
|
||||
except:
|
||||
log.log_message(logging.ERROR, Constant.str_feed_takePhoto_fail)
|
||||
@ -181,7 +183,7 @@ class Feeding :
|
||||
else:
|
||||
self.feedConfig.feedLine.take_position = self.feedConfig.feedLine.safe_position
|
||||
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
|
||||
self.feedStatus = FeedStatus.FTake
|
||||
self.feedStatus = FeedStatus.FTake if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
log.log_message(logging.INFO, Constant.str_feed_takePhoto_move)
|
||||
|
||||
elif self.feedStatus == FeedStatus.FTake:
|
||||
@ -193,15 +195,17 @@ class Feeding :
|
||||
self.sendIOControl(self.robotClient.con_ios[2],1)
|
||||
# TODO 检测是否通 不然报警
|
||||
time.sleep(self.robotClient.time_delay_take)
|
||||
self.feedStatus = FeedStatus.FSafeF
|
||||
self.feedStatus = FeedStatus.FSafeF if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
log.log_message(logging.INFO, Constant.str_feed_take_success)
|
||||
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
|
||||
|
||||
pass
|
||||
|
||||
elif self.feedStatus == FeedStatus.FSafeF:
|
||||
log.log_message(logging.INFO, Constant.str_feed_mid)
|
||||
log.log_message(logging.INFO, Constant.str_feed_safe)
|
||||
if self.feedConfig.feedLine.safe_position.compare(real_position):
|
||||
self.feedStatus = FeedStatus.FBroken
|
||||
self.feedStatus = FeedStatus.FBroken if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
|
||||
self.sendTargPosition(self.feedConfig.feedLine.broken1_position)
|
||||
pass #吸嘴开始
|
||||
|
||||
@ -213,7 +217,9 @@ class Feeding :
|
||||
# pass #破袋
|
||||
|
||||
elif self.feedStatus==FeedStatus.FBroken:
|
||||
|
||||
log.log_message(logging.INFO, Constant.str_feed_broken)
|
||||
|
||||
if self.feedConfig.feedLine.broken1_position.compare(real_position):
|
||||
self.sendTargPosition(self.feedConfig.feedLine.broken2_position)
|
||||
if self.feedConfig.feedLine.broken2_position.compare(real_position):
|
||||
@ -221,7 +227,7 @@ class Feeding :
|
||||
if self.feedConfig.feedLine.shake_position.compare(real_position): # 延迟判断,如果最后点位延迟1s,则认为阶段完成
|
||||
# TODO 震动方案
|
||||
time.sleep(self.robotClient.time_delay_shake)
|
||||
self.feedStatus = FeedStatus.FDropBag
|
||||
self.feedStatus = FeedStatus.FDropBag if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
|
||||
|
||||
elif self.feedStatus == FeedStatus.FDropBag:
|
||||
@ -243,7 +249,7 @@ class Feeding :
|
||||
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
|
||||
self.init_detection_image()
|
||||
else:
|
||||
self.feedStatus = FeedStatus.FSafeP
|
||||
self.feedStatus = FeedStatus.FSafeP if self.feedStatus != FeedStatus.FNone else FeedStatus.FNone
|
||||
self.sendTargPosition(self.feedConfig.feedLine.safe_position)
|
||||
|
||||
|
||||
@ -254,7 +260,7 @@ class Feeding :
|
||||
self.sendIOControl(Constant.IO_EmergencyPoint, 0)
|
||||
|
||||
def sendIOControl(self,IO_bit,IO_Status:int):
|
||||
from Model.RobotModel import Instruction
|
||||
|
||||
IO_command = CMDInstructRequest()
|
||||
io_instruction = Instruction()
|
||||
io_instruction.IO = True
|
||||
@ -263,10 +269,10 @@ class Feeding :
|
||||
IO_command.dsID = 'HCRemoteCommand'
|
||||
IO_command.instructions.append(io_instruction)
|
||||
self.robotClient.add_sendQuene(IO_command.toString())
|
||||
log.log_message(logging.INFO, f'{Constant.str_feed_io_control}{IO_bit},{IO_Status}')
|
||||
pass
|
||||
|
||||
def sendTargPosition(self,real_position,move_type:MoveType=MoveType.WORLD ,speed = Constant.speed):
|
||||
from Model.RobotModel import Instruction
|
||||
position_instruction = Instruction()
|
||||
position_instruction.speed = speed
|
||||
position_instruction.m0 = real_position.X
|
||||
@ -279,7 +285,7 @@ class Feeding :
|
||||
instruction_command = CMDInstructRequest()
|
||||
instruction_command.instructions.append(position_instruction)
|
||||
request_command = instruction_command.toString()
|
||||
print(request_command)
|
||||
|
||||
|
||||
log_str = f'移动到位置:{"姿势直线"}:' \
|
||||
f'X:{position_instruction.m0}-' \
|
||||
@ -288,7 +294,12 @@ class Feeding :
|
||||
f'U:{position_instruction.m3}-' \
|
||||
f'V:{position_instruction.m4}-' \
|
||||
f'W:{position_instruction.m5}'
|
||||
log.log_message(logging.INFO, log_str)
|
||||
|
||||
try :
|
||||
log.log_message(logging.INFO, log_str)
|
||||
except:
|
||||
print("error")
|
||||
|
||||
|
||||
self.robotClient.add_sendQuene(request_command)
|
||||
pass
|
||||
|
||||
@ -49,6 +49,7 @@ str_feed_feed_num = '剩余投料次数:'
|
||||
str_feed_zip_bag = '移动到压缩袋位置'
|
||||
str_feed_photo_error_msgbox = '请重新摆放料带后再关闭此窗口'
|
||||
str_feed_photo_confirm = '确认摆好'
|
||||
str_feed_io_control = '发送IO控制: '
|
||||
str_sys_start = '进入系统'
|
||||
str_sys_exit = '退出系统'
|
||||
str_sys_switch_tool = '切换到工具坐标'
|
||||
|
||||
80
MainWin.ui
80
MainWin.ui
@ -996,7 +996,7 @@ font: 9pt "楷体";
|
||||
border: 1px solid #dcdfe6;
|
||||
border-radius: 5px;
|
||||
}
|
||||
*:pressed
|
||||
*:disabled
|
||||
{
|
||||
background-color: #ff6e00;
|
||||
}
|
||||
@ -1017,9 +1017,18 @@ background-color: #ff6e00;
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgba(255, 255, 255, 0);
|
||||
<string notr="true">
|
||||
QLabel:disabled{
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: red;
|
||||
}
|
||||
|
||||
QLabel{
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color:#7A7A7A;</string>
|
||||
color:#7A7A7A;
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>取料中...</string>
|
||||
@ -1039,12 +1048,12 @@ color:#7A7A7A;</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">*{
|
||||
background-color: rgb(255, 0, 0);
|
||||
background-color: #7A7A7A;
|
||||
font: 9pt "楷体";
|
||||
border: 1px solid #dcdfe6;
|
||||
border-radius: 5px;
|
||||
}
|
||||
*:pressed
|
||||
*:disabled
|
||||
{
|
||||
background-color: #ff6e00;
|
||||
}
|
||||
@ -1065,9 +1074,18 @@ background-color: #ff6e00;
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgba(255, 255, 255, 0);
|
||||
<string notr="true">
|
||||
QLabel:disabled{
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: red;
|
||||
}
|
||||
|
||||
QLabel{
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: red;</string>
|
||||
color:#7A7A7A;
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>拍照中...</string>
|
||||
@ -1087,12 +1105,12 @@ color: red;</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">*{
|
||||
background-color: rgb(255, 0, 0);
|
||||
background-color: #7A7A7A;
|
||||
font: 9pt "楷体";
|
||||
border: 1px solid #dcdfe6;
|
||||
border-radius: 5px;
|
||||
}
|
||||
*:pressed
|
||||
*:disabled
|
||||
{
|
||||
background-color: #ff6e00;
|
||||
}
|
||||
@ -1113,9 +1131,18 @@ background-color: #ff6e00;
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgba(255, 255, 255, 0);
|
||||
<string notr="true">
|
||||
QLabel:disabled{
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: red;
|
||||
}
|
||||
|
||||
QLabel{
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: black;</string>
|
||||
color:#7A7A7A;
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>抓料中...</string>
|
||||
@ -1135,12 +1162,12 @@ color: black;</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">*{
|
||||
background-color: rgb(255, 0, 0);
|
||||
background-color: #7A7A7A;
|
||||
font: 9pt "楷体";
|
||||
border: 1px solid #dcdfe6;
|
||||
border-radius: 5px;
|
||||
}
|
||||
*:pressed
|
||||
*:disabled
|
||||
{
|
||||
background-color: #ff6e00;
|
||||
}
|
||||
@ -1161,9 +1188,18 @@ background-color: #ff6e00;
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgba(255, 255, 255, 0);
|
||||
<string notr="true">
|
||||
QLabel:disabled{
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: red;
|
||||
}
|
||||
|
||||
QLabel{
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: black;</string>
|
||||
color:#7A7A7A;
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>投料中...</string>
|
||||
@ -1473,6 +1509,13 @@ font: 700 9pt "Microsoft YaHei UI";</string>
|
||||
border: 1px solid #A2EF4D; /* 设置边框颜色和宽度 */
|
||||
qproperty-alignment: 'AlignCenter'; /* 设置文本居中 */
|
||||
}
|
||||
QLabel:disabled{
|
||||
background-color: #FD3251;
|
||||
color: #ffffff;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #FD3251;
|
||||
qproperty-alignment: 'AlignCenter';
|
||||
}
|
||||
</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
@ -5061,7 +5104,12 @@ color:#ffffff
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(255, 255, 255);</string>
|
||||
<string notr="true">color: rgb(255, 255, 255);
|
||||
border: 1px solid #dcdfe6;
|
||||
font: 8pt "Microsoft YaHei UI";</string>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>自定义数量</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -47,13 +47,13 @@ photo_v5 = 0.0
|
||||
photo_w5 = 1.0
|
||||
linecount = 2
|
||||
remain_linename = 1
|
||||
remain_count = 0
|
||||
remain_count = 477
|
||||
solenoid_valve1_addr = 3
|
||||
solenoid_valve2_addr = 2
|
||||
solenoid_valve3_addr = 10
|
||||
takedelay = 2
|
||||
putdelay = 1
|
||||
shakedelay = 1
|
||||
takedelay = 0.2
|
||||
putdelay = 0.1
|
||||
shakedelay = 1.0
|
||||
|
||||
[Camera_Feed]
|
||||
ipaddress = 127.0.0.1
|
||||
|
||||
@ -36,24 +36,36 @@ class Logger:
|
||||
text_edit_handler_warning.setFormatter(formatter_warning)
|
||||
self.logger_textEdit_warning.addHandler(text_edit_handler_warning)
|
||||
|
||||
handler = TimedRotatingFileHandler(file_path, when="D", interval=1, backupCount=30)
|
||||
handler = TimedRotatingFileHandler(file_path, when='D', interval=1, backupCount=30)
|
||||
handler.suffix = "%Y-%m-%d"
|
||||
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
|
||||
handler.setFormatter(formatter)
|
||||
self.logger_file_info.addHandler(handler)
|
||||
def log_message(self,level,message):
|
||||
if message != self.pre_message:
|
||||
self.pre_message = message
|
||||
else:
|
||||
return
|
||||
if level == logging.INFO:
|
||||
self.logger_textEdit_info.info(message)
|
||||
self.logger_file_info.info(message)
|
||||
if level == logging.ERROR:
|
||||
self.logger_textEdit_info.error(message)
|
||||
self.logger_file_info.error(message)
|
||||
self.logger_textEdit_warning.error(message)
|
||||
if level == logging.WARNING:
|
||||
self.logger_file_info.warning(message)
|
||||
try:
|
||||
|
||||
if message != self.pre_message:
|
||||
|
||||
self.pre_message = message
|
||||
else:
|
||||
|
||||
return
|
||||
|
||||
if level == logging.INFO:
|
||||
|
||||
self.logger_textEdit_info.info(message)
|
||||
|
||||
self.logger_file_info.info(message)
|
||||
|
||||
if level == logging.ERROR:
|
||||
self.logger_textEdit_info.error(message)
|
||||
self.logger_file_info.error(message)
|
||||
self.logger_textEdit_warning.error(message)
|
||||
if level == logging.WARNING:
|
||||
self.logger_file_info.warning(message)
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
|
||||
|
||||
158
main.py
158
main.py
@ -4,10 +4,10 @@ import logging
|
||||
import queue
|
||||
import sys
|
||||
from multiprocessing import Process
|
||||
|
||||
import traceback
|
||||
from PyQt5.uic.properties import QtWidgets
|
||||
from PySide6 import QtCore
|
||||
from PySide6.QtCore import QThread, Signal, Slot, QObject, QEvent
|
||||
from PySide6.QtCore import QThread, Signal, Slot, QObject, QEvent, QTimer
|
||||
from PySide6.QtGui import QIntValidator, QStandardItemModel, QStandardItem, Qt, QMovie, QIcon
|
||||
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QHeaderView, QTableWidget, \
|
||||
QTableWidgetItem, QWidget, QHBoxLayout, QAbstractItemView, QMessageBox, QSizePolicy
|
||||
@ -21,6 +21,7 @@ import Constant
|
||||
from CU.Command import FeedCommand
|
||||
from CU.Feeding import FeedLine, FeedingConfig, Feeding, FeedStatus
|
||||
from Util.util_log import QTextEditLogger
|
||||
from Util.util_time import CRisOrFall
|
||||
from Vision.camera_coordinate_dete import Detection
|
||||
from COM.COM_Robot import RobotClient
|
||||
from Expection import Error_Code
|
||||
@ -158,58 +159,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
|
||||
|
||||
def init_qss(self):
|
||||
self.active_status_Qss = """
|
||||
|
||||
background-color: #A2EF4D;
|
||||
color: #ffffff;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #A2EF4D;
|
||||
qproperty-alignment: 'AlignCenter';
|
||||
|
||||
"""
|
||||
self.noActive_status_Qss = """
|
||||
|
||||
background-color: #FD3251;
|
||||
color: #ffffff;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #FD3251;
|
||||
qproperty-alignment: 'AlignCenter';
|
||||
|
||||
"""
|
||||
|
||||
self.active_label_sign_Qss = """
|
||||
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: red;
|
||||
|
||||
|
||||
"""
|
||||
self.active_btn_sign_Qss = """
|
||||
|
||||
background-color: rgb(255, 0, 0);
|
||||
font: 9pt "楷体";
|
||||
border: 1px solid #dcdfe6;
|
||||
border-radius: 5px;
|
||||
|
||||
|
||||
|
||||
"""
|
||||
self.noactive_label_sign_Qss = """
|
||||
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
font: 700 12pt "Microsoft YaHei UI";
|
||||
color: #7A7A7A;
|
||||
"""
|
||||
self.noactive_btn_sign_Qss = """
|
||||
|
||||
background-color: #7A7A7A;
|
||||
font: 9pt "楷体";
|
||||
border: 1px solid #dcdfe6;
|
||||
border-radius: 5px;
|
||||
|
||||
|
||||
"""
|
||||
pass
|
||||
|
||||
def init_log(self):
|
||||
log.init_log(self.textEdit_log_info, self.textEdit_log_error, Constant.log_file_path)
|
||||
@ -334,9 +284,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
solenoid_valve1_addr = int(self.configReader.get('Robot_Feed', 'solenoid_valve1_addr'))
|
||||
solenoid_valve2_addr = int(self.configReader.get('Robot_Feed', 'solenoid_valve2_addr'))
|
||||
solenoid_valve3_addr = int(self.configReader.get('Robot_Feed', 'solenoid_valve3_addr'))
|
||||
time_delay_take = int(self.configReader.get('Robot_Feed', 'takeDelay'))
|
||||
time_delay_put = int(self.configReader.get('Robot_Feed', 'putDelay'))
|
||||
time_delay_shake = int(self.configReader.get('Robot_Feed', 'shakeDelay'))
|
||||
time_delay_take = float(self.configReader.get('Robot_Feed', 'takeDelay'))
|
||||
time_delay_put = float(self.configReader.get('Robot_Feed', 'putDelay'))
|
||||
time_delay_shake = float(self.configReader.get('Robot_Feed', 'shakeDelay'))
|
||||
#TODO
|
||||
#dropDelay_time = int(self.configReader.get('Robot_Feed', 'dropDelay_time'))
|
||||
self.robotClient = RobotClient(ip, port, photo_locs, self.command_position_quene, self.status_address,[solenoid_valve1_addr, solenoid_valve2_addr, solenoid_valve3_addr],time_delay_take,time_delay_put,time_delay_shake)
|
||||
@ -562,7 +512,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.main_UI_threading = Thread(target=self.updateUI)
|
||||
self.main_UI_threading.start()
|
||||
|
||||
self.check_continue()
|
||||
|
||||
pass
|
||||
def check_continue(self):
|
||||
if self.remain_Count!=0:
|
||||
@ -576,6 +526,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
remain_messageBox.setStandardButtons(QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.Cancel)
|
||||
result = remain_messageBox.exec()
|
||||
if result == QMessageBox.StandardButton.Cancel:
|
||||
self.remain_Count = 0
|
||||
return
|
||||
self.configReader.read(Constant.feedLine_set_file, encoding='utf-8')
|
||||
line_name = self.configReader.get(key, 'name')
|
||||
@ -636,6 +587,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.command_quene.put(FeedCommand(FeedingConfig(num, self.feedLine_dict[line_head], self.feeding.robotClient.photo_locs[:])))
|
||||
self.stackedWidget_num.setCurrentIndex(1)
|
||||
self.set_run_status_button(True)
|
||||
self.feeding.pause = False
|
||||
log.log_message(logging.INFO, f'{self.feedLine_dict[line_head].name}:{Constant.str_feed_start}')
|
||||
|
||||
def send_num_button_click(self):
|
||||
@ -724,6 +676,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.label_maxNum.setText(str(max_num))
|
||||
|
||||
def send_custom_num_returnPressed(self):
|
||||
if self.lineEdit_num.text()== '' or not self.lineEdit_num.text().isdigit():
|
||||
return
|
||||
self.horizontalSlider_feedingNum.setMaximum(int(self.lineEdit_num.text()))
|
||||
self.horizontalSlider_feedingNum.setValue(0)
|
||||
self.label_maxNum.setText(self.lineEdit_num.text())
|
||||
@ -761,9 +715,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
solenoid1_addr = int(self.lineEdit_solenoid1_addr.text())
|
||||
solenoid2_addr = int(self.lineEdit_solenoid2_addr.text())
|
||||
solenoid3_addr = int(self.lineEdit_solenoid3_addr.text())
|
||||
time_delay_take = int(self.lineEdit_timedelay_take.text())
|
||||
time_delay_put = int(self.lineEdit_timedelay_put.text())
|
||||
time_delay_shake = int(self.lineEdit_timedelay_shake.text())
|
||||
time_delay_take = float(self.lineEdit_timedelay_take.text())
|
||||
time_delay_put = float(self.lineEdit_timedelay_put.text())
|
||||
time_delay_shake = float(self.lineEdit_timedelay_shake.text())
|
||||
self.robotClient.con_ios[0] = solenoid1_addr
|
||||
self.robotClient.con_ios[1] = solenoid2_addr
|
||||
self.robotClient.con_ios[2] = solenoid3_addr
|
||||
@ -882,6 +836,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.feeding.feedStatus = FeedStatus.FNone
|
||||
# 清空运行命令
|
||||
self.send_clear_auto_command()
|
||||
self.feeding.feedConfig.num = 0
|
||||
log.log_message(logging.INFO, Constant.str_feed_stop)
|
||||
|
||||
def send_pauseFeed_button_click(self):
|
||||
@ -1077,6 +1032,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.label_status_remoteCmdLen.setText(str(self.robotClient.status_model.RemoteCmdLen))
|
||||
if self.robotClient.status_model.curAlarm != 0:
|
||||
log.log_message(logging.ERROR, Constant.str_sys_log_alarm_error+str(self.robotClient.status_model.curAlarm))
|
||||
self.feeding.pause = True
|
||||
self.label_status_alarmcode.setText(str(self.robotClient.status_model.curAlarm))
|
||||
self.label_status_toolIndex.setText(str(self.robotClient.status_model.toolCoord))
|
||||
self.label_status_speed.setText(str(self.robotClient.status_model.curSpeed_n))
|
||||
@ -1153,34 +1109,33 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
|
||||
|
||||
def set_label_status_style(self, connected: bool):
|
||||
|
||||
if connected:
|
||||
if self.label_connect_status.styleSheet().strip() != self.active_status_Qss:
|
||||
self.label_connect_status.setStyleSheet(self.active_status_Qss)
|
||||
self.active_status_Qss = self.label_connect_status.styleSheet().strip()
|
||||
|
||||
else:
|
||||
if self.label_connect_status.styleSheet().strip() != self.noActive_status_Qss:
|
||||
self.label_connect_status.setStyleSheet(self.noActive_status_Qss)
|
||||
self.noActive_status_Qss = self.label_connect_status.styleSheet().strip()
|
||||
#return
|
||||
if connected and not self.label_connect_status.isEnabled():
|
||||
self.label_connect_status.setEnabled(True)
|
||||
if not connected and self.label_connect_status.isEnabled():
|
||||
self.label_connect_status.setDisabled(True)
|
||||
def set_sign_status(self,label,btn,signed:bool):
|
||||
|
||||
#return
|
||||
try :
|
||||
if signed:
|
||||
if label.styleSheet().strip() != self.active_label_sign_Qss:
|
||||
label.setStyleSheet(self.active_label_sign_Qss)
|
||||
self.active_label_sign_Qss = label.styleSheet().strip()
|
||||
|
||||
if btn.styleSheet().strip() != self.active_btn_sign_Qss:
|
||||
btn.setStyleSheet(self.active_btn_sign_Qss)
|
||||
self.active_btn_sign_Qss = btn.styleSheet().strip()
|
||||
else:
|
||||
if label.styleSheet().strip() != self.noactive_label_sign_Qss:
|
||||
label.setStyleSheet(self.noactive_label_sign_Qss)
|
||||
self.noactive_label_sign_Qss = label.styleSheet().strip()
|
||||
if btn.styleSheet().strip() != self.noactive_btn_sign_Qss:
|
||||
btn.setStyleSheet(self.noactive_btn_sign_Qss)
|
||||
self.noactive_btn_sign_Qss = btn.styleSheet().strip()
|
||||
if signed and label.isEnabled():
|
||||
label.setDisabled(True)
|
||||
btn.setDisabled(True)
|
||||
# if label.styleSheet().strip() != self.active_label_sign_Qss:
|
||||
# label.setStyleSheet(self.active_label_sign_Qss)
|
||||
# self.active_label_sign_Qss = label.styleSheet().strip()
|
||||
#
|
||||
# if btn.styleSheet().strip() != self.active_btn_sign_Qss:
|
||||
# btn.setStyleSheet(self.active_btn_sign_Qss)
|
||||
# self.active_btn_sign_Qss = btn.styleSheet().strip()
|
||||
if not signed and not label.isEnabled():
|
||||
label.setEnabled(True)
|
||||
btn.setEnabled(True)
|
||||
# if label.styleSheet().strip() != self.noactive_label_sign_Qss:
|
||||
# label.setStyleSheet(self.noactive_label_sign_Qss)
|
||||
# self.noactive_label_sign_Qss = label.styleSheet().strip()
|
||||
# if btn.styleSheet().strip() != self.noactive_btn_sign_Qss:
|
||||
# btn.setStyleSheet(self.noactive_btn_sign_Qss)
|
||||
# self.noactive_btn_sign_Qss = btn.styleSheet().strip()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
@ -1530,6 +1485,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.feeding.sendIOControl(index-1, 0)
|
||||
log.log_message(logging.INFO, f'关闭IO{index}')
|
||||
|
||||
def showEvent(self, event):
|
||||
super().showEvent(event)
|
||||
QTimer.singleShot(2000, self.check_continue)
|
||||
|
||||
|
||||
def closeEvent(self, event):
|
||||
self.record_remain_num()
|
||||
self.detection.release()
|
||||
@ -1548,10 +1508,32 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
except:
|
||||
log.log_message(logging.ERROR, Constant.str_sys_log_feedNum)
|
||||
|
||||
|
||||
class MyApplication(QApplication):
|
||||
def __init__(self, argv):
|
||||
super().__init__(argv)
|
||||
|
||||
def notify(self, receiver, event):
|
||||
try:
|
||||
return super().notify(receiver, event)
|
||||
except Exception as e:
|
||||
log.log_message(logging.ERROR, e)
|
||||
# 可以在这里记录日志或者执行其他操作
|
||||
return False
|
||||
|
||||
def handle_exception(exc_type, exc_value, exc_tb):
|
||||
if issubclass(exc_type, KeyboardInterrupt):
|
||||
log.log_message(logging.INFO, "用户主动退出程序")
|
||||
return
|
||||
log.log_message(logging.ERROR, exc_value)
|
||||
print("未处理的异常:", exc_type, exc_value)
|
||||
traceback.print_exception(exc_type, exc_value, exc_tb)
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
app = MyApplication(sys.argv)
|
||||
window = MainWindow()
|
||||
window.show()
|
||||
sys.excepthook = handle_exception # 你的 PySide 应用程序代码 pass
|
||||
sys.exit(app.exec())
|
||||
|
||||
|
||||
|
||||
@ -616,7 +616,7 @@ class Ui_MainWindow(object):
|
||||
"border: 1px solid #dcdfe6;\n"
|
||||
"border-radius: 5px;\n"
|
||||
"}\n"
|
||||
"*:pressed\n"
|
||||
"*:disabled\n"
|
||||
"{\n"
|
||||
"background-color: #ff6e00;\n"
|
||||
"}\n"
|
||||
@ -629,9 +629,18 @@ class Ui_MainWindow(object):
|
||||
self.label_sign_go.setObjectName(u"label_sign_go")
|
||||
sizePolicy1.setHeightForWidth(self.label_sign_go.sizePolicy().hasHeightForWidth())
|
||||
self.label_sign_go.setSizePolicy(sizePolicy1)
|
||||
self.label_sign_go.setStyleSheet(u"background-color: rgba(255, 255, 255, 0);\n"
|
||||
self.label_sign_go.setStyleSheet(u"\n"
|
||||
"QLabel:disabled{\n"
|
||||
" background-color: rgba(255, 255, 255, 0);\n"
|
||||
" font: 700 12pt \"Microsoft YaHei UI\";\n"
|
||||
" color: red;\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"QLabel{\n"
|
||||
"background-color: rgba(255, 255, 255, 0);\n"
|
||||
"font: 700 12pt \"Microsoft YaHei UI\";\n"
|
||||
"color:#7A7A7A;")
|
||||
"color:#7A7A7A;\n"
|
||||
"}")
|
||||
self.label_sign_go.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
|
||||
|
||||
self.gridLayout_4.addWidget(self.label_sign_go, 0, 1, 1, 1)
|
||||
@ -641,12 +650,12 @@ class Ui_MainWindow(object):
|
||||
sizePolicy1.setHeightForWidth(self.pushButton_sign_photo.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton_sign_photo.setSizePolicy(sizePolicy1)
|
||||
self.pushButton_sign_photo.setStyleSheet(u"*{\n"
|
||||
"background-color: rgb(255, 0, 0);\n"
|
||||
"background-color: #7A7A7A;\n"
|
||||
"font: 9pt \"\u6977\u4f53\";\n"
|
||||
"border: 1px solid #dcdfe6;\n"
|
||||
"border-radius: 5px;\n"
|
||||
"}\n"
|
||||
"*:pressed\n"
|
||||
"*:disabled\n"
|
||||
"{\n"
|
||||
"background-color: #ff6e00;\n"
|
||||
"}\n"
|
||||
@ -659,9 +668,18 @@ class Ui_MainWindow(object):
|
||||
self.label_sign_photo.setObjectName(u"label_sign_photo")
|
||||
sizePolicy1.setHeightForWidth(self.label_sign_photo.sizePolicy().hasHeightForWidth())
|
||||
self.label_sign_photo.setSizePolicy(sizePolicy1)
|
||||
self.label_sign_photo.setStyleSheet(u"background-color: rgba(255, 255, 255, 0);\n"
|
||||
self.label_sign_photo.setStyleSheet(u"\n"
|
||||
"QLabel:disabled{\n"
|
||||
" background-color: rgba(255, 255, 255, 0);\n"
|
||||
" font: 700 12pt \"Microsoft YaHei UI\";\n"
|
||||
" color: red;\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"QLabel{\n"
|
||||
"background-color: rgba(255, 255, 255, 0);\n"
|
||||
"font: 700 12pt \"Microsoft YaHei UI\";\n"
|
||||
"color: red;")
|
||||
"color:#7A7A7A;\n"
|
||||
"}")
|
||||
self.label_sign_photo.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
|
||||
|
||||
self.gridLayout_4.addWidget(self.label_sign_photo, 0, 3, 1, 1)
|
||||
@ -671,12 +689,12 @@ class Ui_MainWindow(object):
|
||||
sizePolicy1.setHeightForWidth(self.pushButton_sign_take.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton_sign_take.setSizePolicy(sizePolicy1)
|
||||
self.pushButton_sign_take.setStyleSheet(u"*{\n"
|
||||
"background-color: rgb(255, 0, 0);\n"
|
||||
"background-color: #7A7A7A;\n"
|
||||
"font: 9pt \"\u6977\u4f53\";\n"
|
||||
"border: 1px solid #dcdfe6;\n"
|
||||
"border-radius: 5px;\n"
|
||||
"}\n"
|
||||
"*:pressed\n"
|
||||
"*:disabled\n"
|
||||
"{\n"
|
||||
"background-color: #ff6e00;\n"
|
||||
"}\n"
|
||||
@ -689,9 +707,18 @@ class Ui_MainWindow(object):
|
||||
self.label_sign_take.setObjectName(u"label_sign_take")
|
||||
sizePolicy1.setHeightForWidth(self.label_sign_take.sizePolicy().hasHeightForWidth())
|
||||
self.label_sign_take.setSizePolicy(sizePolicy1)
|
||||
self.label_sign_take.setStyleSheet(u"background-color: rgba(255, 255, 255, 0);\n"
|
||||
self.label_sign_take.setStyleSheet(u"\n"
|
||||
"QLabel:disabled{\n"
|
||||
" background-color: rgba(255, 255, 255, 0);\n"
|
||||
" font: 700 12pt \"Microsoft YaHei UI\";\n"
|
||||
" color: red;\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"QLabel{\n"
|
||||
"background-color: rgba(255, 255, 255, 0);\n"
|
||||
"font: 700 12pt \"Microsoft YaHei UI\";\n"
|
||||
"color: black;")
|
||||
"color:#7A7A7A;\n"
|
||||
"}")
|
||||
self.label_sign_take.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
|
||||
|
||||
self.gridLayout_4.addWidget(self.label_sign_take, 0, 5, 1, 1)
|
||||
@ -701,12 +728,12 @@ class Ui_MainWindow(object):
|
||||
sizePolicy1.setHeightForWidth(self.pushButton_sign_feed.sizePolicy().hasHeightForWidth())
|
||||
self.pushButton_sign_feed.setSizePolicy(sizePolicy1)
|
||||
self.pushButton_sign_feed.setStyleSheet(u"*{\n"
|
||||
"background-color: rgb(255, 0, 0);\n"
|
||||
"background-color: #7A7A7A;\n"
|
||||
"font: 9pt \"\u6977\u4f53\";\n"
|
||||
"border: 1px solid #dcdfe6;\n"
|
||||
"border-radius: 5px;\n"
|
||||
"}\n"
|
||||
"*:pressed\n"
|
||||
"*:disabled\n"
|
||||
"{\n"
|
||||
"background-color: #ff6e00;\n"
|
||||
"}\n"
|
||||
@ -719,9 +746,18 @@ class Ui_MainWindow(object):
|
||||
self.label_sign_feed.setObjectName(u"label_sign_feed")
|
||||
sizePolicy1.setHeightForWidth(self.label_sign_feed.sizePolicy().hasHeightForWidth())
|
||||
self.label_sign_feed.setSizePolicy(sizePolicy1)
|
||||
self.label_sign_feed.setStyleSheet(u"background-color: rgba(255, 255, 255, 0);\n"
|
||||
self.label_sign_feed.setStyleSheet(u"\n"
|
||||
"QLabel:disabled{\n"
|
||||
" background-color: rgba(255, 255, 255, 0);\n"
|
||||
" font: 700 12pt \"Microsoft YaHei UI\";\n"
|
||||
" color: red;\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"QLabel{\n"
|
||||
"background-color: rgba(255, 255, 255, 0);\n"
|
||||
"font: 700 12pt \"Microsoft YaHei UI\";\n"
|
||||
"color: black;")
|
||||
"color:#7A7A7A;\n"
|
||||
"}")
|
||||
self.label_sign_feed.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
|
||||
|
||||
self.gridLayout_4.addWidget(self.label_sign_feed, 0, 7, 1, 1)
|
||||
@ -871,6 +907,13 @@ class Ui_MainWindow(object):
|
||||
" border: 1px solid #A2EF4D; /* \u8bbe\u7f6e\u8fb9\u6846\u989c\u8272\u548c\u5bbd\u5ea6 */\n"
|
||||
" qproperty-alignment: 'AlignCenter'; /* \u8bbe\u7f6e\u6587\u672c\u5c45\u4e2d */\n"
|
||||
"}\n"
|
||||
"QLabel:disabled{\n"
|
||||
" background-color: #FD3251; \n"
|
||||
" color: #ffffff; \n"
|
||||
" border-radius: 8px; \n"
|
||||
" border: 1px solid #FD3251; \n"
|
||||
" qproperty-alignment: 'AlignCenter'; \n"
|
||||
"}\n"
|
||||
"")
|
||||
|
||||
self.gridLayout_3.addWidget(self.label_connect_status, 0, 1, 1, 1)
|
||||
@ -3176,7 +3219,9 @@ class Ui_MainWindow(object):
|
||||
self.lineEdit_num.setObjectName(u"lineEdit_num")
|
||||
sizePolicy1.setHeightForWidth(self.lineEdit_num.sizePolicy().hasHeightForWidth())
|
||||
self.lineEdit_num.setSizePolicy(sizePolicy1)
|
||||
self.lineEdit_num.setStyleSheet(u"color: rgb(255, 255, 255);")
|
||||
self.lineEdit_num.setStyleSheet(u"color: rgb(255, 255, 255);\n"
|
||||
"border: 1px solid #dcdfe6;\n"
|
||||
"font: 8pt \"Microsoft YaHei UI\";")
|
||||
|
||||
self.gridLayout.addWidget(self.lineEdit_num, 2, 0, 1, 1)
|
||||
|
||||
@ -3743,6 +3788,7 @@ class Ui_MainWindow(object):
|
||||
self.pushButton_num4.setText(QCoreApplication.translate("MainWindow", u"40", None))
|
||||
self.pushButton_num5.setText(QCoreApplication.translate("MainWindow", u"50", None))
|
||||
self.pushButton_num6.setText(QCoreApplication.translate("MainWindow", u"60", None))
|
||||
self.lineEdit_num.setPlaceholderText(QCoreApplication.translate("MainWindow", u"\u81ea\u5b9a\u4e49\u6570\u91cf", None))
|
||||
self.pushButton_num_confirm.setText(QCoreApplication.translate("MainWindow", u"\u786e\u5b9a", None))
|
||||
self.pushButton_AddNum.setText(QCoreApplication.translate("MainWindow", u"\u8865\u4e00\u888b", None))
|
||||
self.pushButton_SubNum.setText(QCoreApplication.translate("MainWindow", u"\u6263\u4e00\u888b", None))
|
||||
|
||||
Reference in New Issue
Block a user