update 完成控制基本逻辑

This commit is contained in:
FrankCV2048
2024-12-03 23:25:17 +08:00
parent 157e7edce5
commit aa93685862
8 changed files with 728 additions and 262 deletions

110
main.py
View File

@ -22,7 +22,7 @@ from Model.FeedModel import LineModel, PositionModel
from Util.util_ini import writeFeedLine_to_ini
import Constant
from CU.Command import FeedCommand
from CU.Feeding import FeedLine, FeedingConfig, Feeding, FeedStatus
from CU.Feeding import FeedLine, FeedingConfig, Feeding, FeedStatus, FeedMidStatus
from Util.util_log import QTextEditLogger
from Util.util_time import CRisOrFall
from Vision.camera_coordinate_dete import Detection
@ -195,22 +195,22 @@ class MainWindow(QMainWindow, Ui_MainWindow):
for row_i in range(self.tableWidget_lines.rowCount()):
if self.tableWidget_lines.item(row_i, 0).text() == section:
line_model = LineModel()
line_model.section = section
line_model.name = self.tableWidget_lines.item(row_i, 1).text()
line_model.id = int(self.tableWidget_lines.item(row_i, 2).text())
line_model.positions = self.get_table_positions()
if len(self.get_table_positions()) != 0 and line_model.id != self.get_table_positions()[0].id:
return
if len(self.get_table_positions())==0:
return
if len(self.get_table_positions()) == 0 and self.feedLine_dict.keys().__contains__(section):
line_model = self.feedLine_dict[section]
line_model.name = self.tableWidget_lines.item(row_i, 1).text()
else:
line_model.section = section
line_model.name = self.tableWidget_lines.item(row_i, 1).text()
line_model.id = int(self.tableWidget_lines.item(row_i, 2).text())
line_model.positions = self.get_table_positions()
config_reader = configparser.ConfigParser()
config_reader.read(Constant.feedLine_set_file, encoding='utf-8')
if len(self.get_table_positions()) != 0 and line_model.id != self.get_table_positions()[0].lineId:
return
line_model.save_line_model(config_reader)
config_reader.write(open(Constant.feedLine_set_file, 'w', encoding='utf-8'))
break
self.init_FeedLine()
break
self.init_table_lines_data()
self.table_line_changed = False
self.table_position_changed = False
@ -226,29 +226,36 @@ class MainWindow(QMainWindow, Ui_MainWindow):
position_model.U = float(self.tableWidget_line_positions.item(row_i, 4).text())
position_model.V = float(self.tableWidget_line_positions.item(row_i, 5).text())
position_model.W = float(self.tableWidget_line_positions.item(row_i, 6).text())
widget = self.tableWidget_line_positions.cellWidget(row_i, 7)
position_model.status = widget.currentData()
position_model.id = int(self.tableWidget_line_positions.item(row_i, 8).text())
combox_line_type = self.tableWidget_line_positions.cellWidget(row_i, 7)
position_model.lineType = combox_line_type.currentData()
combox_status = self.tableWidget_line_positions.cellWidget(row_i, 8)
position_model.status = combox_status.currentData()
position_model.id = int(self.tableWidget_line_positions.item(row_i, 9).text())
position_model.order = row_i
position_model.lineId = int(self.tableWidget_line_positions.item(row_i, 10).text())
position_model.lineId = int(self.tableWidget_line_positions.item(row_i, 11).text())
position_models.append(position_model)
return position_models
def init_table_lines_data(self):
# self.tableWidget_lines.setItem(0, 0, QTableWidgetItem("线1"))
# self.tableWidget_lines.setItem(1, 0, QTableWidgetItem("线2"))
# self.tableWidget_lines.setItem()
self.selected_line_section = ''
self.table_line_changed = False
self.table_position_changed = False
self.tableWidget_lines.setRowCount(0)
for key,value in self.feedLine_dict.items():
for key, value in self.feedLine_dict.items():
self.tableWidget_lines.insertRow(self.tableWidget_lines.rowCount())
self.tableWidget_lines.setItem(self.tableWidget_lines.rowCount()-1, 0, QTableWidgetItem(key))
self.tableWidget_lines.setItem(self.tableWidget_lines.rowCount()-1, 1, QTableWidgetItem(value.name))
self.tableWidget_lines.setItem(self.tableWidget_lines.rowCount()-1, 2, QTableWidgetItem(value.id))
self.tableWidget_lines.setItem(self.tableWidget_lines.rowCount()-1, 2, QTableWidgetItem(str(value.id)))
show_pos_btn = QPushButton("显示路径")
show_pos_btn.clicked.connect(
lambda _, index=self.tableWidget_lines.rowCount()-1: self.show_lines_pos_data(index))
self.tableWidget_lines.setCellWidget(self.tableWidget_lines.rowCount() - 1, 3, show_pos_btn)
self.tableWidget_line_positions.setRowCount(0)
self.selected_line_section = ''
self.tableWidget_line_positions.setRowCount(0)
def show_lines_context_menu(self):
menu = QMenu(self)
@ -293,6 +300,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
result = msgBox.exec()
if result == QMessageBox.StandardButton.Ok:
self.send_save_lines_data()
return
else:
# 重新初始化·
self.init_table_lines_data()
@ -304,26 +312,27 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def init_table_position(self):
#self.tableWidget_line_positions.setRowCount(5)
self.tableWidget_line_positions.setColumnCount(12)
self.tableWidget_line_positions.setColumnCount(13)
self.tableWidget_line_positions.setHorizontalHeaderLabels(["节段","X","Y","Z","U","V","W","类型","序号","排序","线号","操作2"])
self.tableWidget_line_positions.setHorizontalHeaderLabels(["节段","X","Y","Z","U","V","W","运动类型","点位类型","序号","排序","线号","操作2"])
self.tableWidget_line_positions.setSelectionBehavior(QTableWidget.SelectRows)
self.tableWidget_line_positions.setColumnHidden(0, True)
self.tableWidget_line_positions.setColumnHidden(8,True)
self.tableWidget_line_positions.setColumnHidden(9, True)
self.tableWidget_line_positions.setColumnHidden(9,True)
self.tableWidget_line_positions.setColumnHidden(10, True)
self.tableWidget_line_positions.setColumnHidden(11, True)
self.tableWidget_line_positions.setAutoScroll(True)
self.tableWidget_line_positions.verticalHeader().hide()
# 自动调整列宽
header = self.tableWidget_line_positions.horizontalHeader()
header.setSectionResizeMode(0, PySide6.QtWidgets.QHeaderView.ResizeMode.Stretch)
header.setSectionResizeMode(0, PySide6.QtWidgets.QHeaderView.ResizeMode.Interactive)
self.tableWidget_line_positions.setHorizontalScrollBarPolicy(PySide6.QtCore.Qt.ScrollBarPolicy.ScrollBarAsNeeded)
for i in range(12):
header.setSectionResizeMode(i, PySide6.QtWidgets.QHeaderView.ResizeMode.Stretch)
for i in range(13):
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)
def init_table_positions_data(self,position_list):
self.tableWidget_line_positions.setRowCount(0)
for index,position_model in enumerate(position_list):
self.tableWidget_line_positions.insertRow(self.tableWidget_line_positions.rowCount())
self.set_positionModel_to_tabel(index,position_model)
@ -347,13 +356,21 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.table_position_changed = True
def add_new_position(self):# 选中添加
if self.selected_line_section == '': return
config_reader = configparser.ConfigParser()
config_reader.read(Constant.feedLine_set_file, encoding = 'utf-8')
position_model = PositionModel(999)
ids = []
for j in range(self.tableWidget_line_positions.rowCount()):
ids.append(int(self.tableWidget_line_positions.item(j, 9).text()))
for i in range(1,Constant.MAX_Position_num):
if not config_reader.has_section(f"{Constant.position_set_section}{i}"):
if ids.__contains__(i):
continue
position_model = PositionModel(i)
break
if position_model.id == 999:
print("d")
if self.tableWidget_line_positions.currentRow()==-1:
row_i = self.tableWidget_line_positions.rowCount()
else:
@ -362,8 +379,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.tableWidget_line_positions.insertRow(row_i)
position_model.order = 0
position_model.status = FeedStatus.FStart
position_model.status = 1
line_model = self.feedLine_dict.get(self.selected_line_section)
line_id = line_model.id
position_model.lineId = line_id
@ -371,7 +387,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.table_line_changed = True
def tabel_get_position(self,row_i):
self.set_position_to_tabel(row_i,self.status_address.getRealPosition())
self.set_position_tabel(row_i,self.status_address.getRealPosition())
self.table_line_changed = True
def tabel_delete_position(self,row_i):
@ -381,8 +397,16 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def set_positionModel_to_tabel(self,row_i,position_model:PositionModel):
self.tableWidget_line_positions.setItem(row_i,0,QTableWidgetItem(str(position_model.section)))
self.set_position_tabel(row_i,position_model.get_position())
combox_lineType = QComboBox()
combox_lineType.addItem("直线",0)
combox_lineType.addItem("曲线中间点",2)
combox_lineType.addItem("曲线终点",3)
combox_lineType.setCurrentIndex(combox_lineType.findData(position_model.lineType))
combox_lineType.currentIndexChanged.connect(self.send_table_position_status_changed)
self.tableWidget_line_positions.setCellWidget(row_i, 7, combox_lineType)
combox = QComboBox()
combox.addItem("初始化点", 1)
combox.addItem("初始化点", 2)
combox.addItem("中间点", 3)
combox.addItem("相机/待抓点",4)
combox.addItem("抓取",5)
@ -390,18 +414,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
combox.addItem("破带点2",7)
combox.addItem("震动点",8)
combox.addItem("扔带点",9)
combox.setCurrentIndex(position_model.status)
combox.setCurrentIndex(combox.findData(position_model.status))
combox.currentIndexChanged.connect(self.send_table_position_status_changed)
self.tableWidget_line_positions.setCellWidget(row_i, 7, combox)
self.tableWidget_line_positions.setCellWidget(row_i, 8, combox)
#self.tableWidget_line_positions.setItem(row_i, 7, QTableWidgetItem(str(position_model.status)))
self.tableWidget_line_positions.setItem(row_i, 8, QTableWidgetItem(str(position_model.id)))
self.tableWidget_line_positions.setItem(row_i, 9, QTableWidgetItem(str(position_model.order)))
self.tableWidget_line_positions.setItem(row_i, 10, QTableWidgetItem(str(position_model.lineId)))
self.tableWidget_line_positions.setItem(row_i, 9, QTableWidgetItem(str(position_model.id)))
self.tableWidget_line_positions.setItem(row_i, 10, QTableWidgetItem(str(position_model.order)))
self.tableWidget_line_positions.setItem(row_i, 11, QTableWidgetItem(str(position_model.lineId)))
get_pos_btn = QPushButton("获取点位")
get_pos_btn.clicked.connect(
lambda _, index=row_i: self.tabel_get_position(index))
self.tableWidget_line_positions.setCellWidget(row_i, 11, get_pos_btn)
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)
@ -781,9 +805,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
return
log.log_message(logging.INFO, '第一层确认生产')
has_person, _ = self.detection_person.get_person()
if has_person:
has_person = False
# has_person, _ = self.detection_person.get_person() # TODO
if has_person: # TODO
# self.feeding.pause = True
# self.send_pause_command(True)
#
@ -800,7 +824,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
num = self.horizontalSlider_feedingNum.maximum()
line_head = self.comboBox_lineIndex.currentData()
self.command_quene.put(FeedCommand(FeedingConfig(num, self.feedLine_dict[line_head], self.feeding.robotClient.photo_locs[:])))
self.command_quene.put(FeedCommand(FeedingConfig(num, FeedLine(self.feedLine_dict[line_head].id,self.feedLine_dict[line_head].name,self.feedLine_dict[line_head].positions), self.feeding.robotClient.photo_locs[:])))
self.stackedWidget_num.setCurrentIndex(1)
self.set_run_status_button(True)
self.feeding.pause = False
@ -1166,7 +1191,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if isinstance(command, FeedCommand) and command.status == Status.Prepareing:
if self.feeding.feedStatus == FeedStatus.FNone:
self.feeding.feedConfig = command.feed_config
self.feeding.feedStatus = FeedStatus.FCheck
self.feeding.feedStatus = FeedStatus.FStart
# self.feeding.feed_Mid_Status = FeedMidStatus.FMid_Start
command.status = Status.Runing
try:
@ -1315,7 +1341,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.set_sign_status(self.label_sign_take, self.pushButton_sign_take, True)
self.set_sign_status(self.label_sign_feed, self.pushButton_sign_feed, False)
return
if sign <= FeedStatus.FBroken:
if sign <= FeedStatus.FBroken1:
self.set_sign_status(self.label_sign_go, self.pushButton_sign_go, False)
self.set_sign_status(self.label_sign_photo, self.pushButton_sign_photo, False)
self.set_sign_status(self.label_sign_take, self.pushButton_sign_take, False)