update 完成控制基本逻辑
This commit is contained in:
110
main.py
110
main.py
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user