2025-02-14 11:11:41 +08:00
|
|
|
from ui_arr_details import Ui_Widget
|
|
|
|
from PySide6.QtWidgets import QWidget, QTableWidgetItem
|
|
|
|
from PySide6.QtCore import Slot, Signal, SignalInstance
|
|
|
|
from param_data import ParamDataArr
|
|
|
|
from br_com_message import BrComMessage
|
|
|
|
from br_widget_basic_plot import BrWidgetBasicPlot
|
|
|
|
|
|
|
|
class BrWidgetArrDetails(QWidget, Ui_Widget):
|
|
|
|
signal_read: SignalInstance = Signal(list)
|
2025-02-14 15:01:24 +08:00
|
|
|
signal_write: SignalInstance = Signal(list)
|
2025-02-14 11:11:41 +08:00
|
|
|
def __init__(self, parent=None):
|
|
|
|
super().__init__(parent)
|
|
|
|
self.setupUi(self)
|
|
|
|
self.param_data: ParamDataArr = None
|
2025-02-14 15:01:24 +08:00
|
|
|
|
|
|
|
self.updating = False
|
2025-02-14 11:11:41 +08:00
|
|
|
self.tableWidget_val.setColumnCount(2)
|
|
|
|
self.tableWidget_val.setHorizontalHeaderLabels(['Addr', 'Value'])
|
|
|
|
|
|
|
|
self.tableWidget_setval.setColumnCount(2)
|
|
|
|
self.tableWidget_setval.setHorizontalHeaderLabels(['Addr', 'Value'])
|
|
|
|
|
2025-02-14 15:01:24 +08:00
|
|
|
self.tableWidget_setval.itemChanged.connect(self.on_table_setval_itemChanged)
|
|
|
|
|
|
|
|
|
|
|
|
def on_table_setval_itemChanged(self, item: QTableWidgetItem):
|
|
|
|
if self.updating:
|
|
|
|
return
|
|
|
|
# 获取编辑的行index,获取输入的值
|
|
|
|
row_index = item.row()
|
|
|
|
input_val = item.text()
|
|
|
|
self.param_data.setval_list[row_index] = float(input_val)
|
|
|
|
print('item changed', row_index, input_val)
|
|
|
|
|
|
|
|
|
2025-02-14 11:11:41 +08:00
|
|
|
def update_param_info(self, p_data: ParamDataArr):
|
|
|
|
self.param_data = p_data
|
|
|
|
self.label_addr.setText(str(p_data.addr))
|
|
|
|
self.label_name.setText(str(p_data.name))
|
|
|
|
self.label_length.setText(str(p_data.size))
|
|
|
|
self.label_details.setText(str(p_data.details))
|
|
|
|
self.update_table()
|
|
|
|
|
|
|
|
def update_table(self):
|
2025-02-14 15:01:24 +08:00
|
|
|
self.updating = True
|
2025-02-14 11:11:41 +08:00
|
|
|
self.tableWidget_val.setRowCount(self.param_data.size)
|
|
|
|
for row in range(0, self.param_data.size):
|
|
|
|
self.tableWidget_val.setItem(
|
|
|
|
row, 0, QTableWidgetItem(
|
|
|
|
str(self.param_data.addr + row)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
self.tableWidget_val.setItem(
|
|
|
|
row, 1, QTableWidgetItem(
|
|
|
|
str(self.param_data.getval_list[row]))
|
|
|
|
)
|
|
|
|
|
2025-02-14 15:01:24 +08:00
|
|
|
self.tableWidget_setval.setRowCount(self.param_data.size)
|
|
|
|
# 增加table写功能
|
|
|
|
for row in range(0, self.param_data.size):
|
|
|
|
self.tableWidget_setval.setItem(
|
|
|
|
row, 0, QTableWidgetItem(
|
|
|
|
str(self.param_data.addr + row)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
self.tableWidget_setval.setItem(
|
|
|
|
row, 1, QTableWidgetItem(
|
|
|
|
str(self.param_data.getval_list[row]))
|
|
|
|
)
|
|
|
|
|
|
|
|
# 把设定值设置为获取到的值
|
|
|
|
self.param_data.setval_list = self.param_data.getval_list
|
|
|
|
self.updating = False
|
2025-02-14 11:11:41 +08:00
|
|
|
|
|
|
|
def update_val_list(self):
|
|
|
|
|
|
|
|
for i in range(0, self.param_data.size):
|
|
|
|
self.tableWidget_val.setItem(0, i, QTableWidgetItem(str(self.param_data.getval_list[i])))
|
|
|
|
|
|
|
|
def update_setval_list(self):
|
|
|
|
for i in range(0, len(self.param_data.setval_list)):
|
|
|
|
self.tableWidget_setval.setItem(0, i, QTableWidgetItem(str(self.param_data.setval_list[i])))
|
|
|
|
|
|
|
|
@Slot()
|
|
|
|
def on_pushButton_read_clicked(self):
|
|
|
|
print('[read] button clicked!')
|
|
|
|
# 生成一组读取命令
|
|
|
|
_cmd_list = []
|
|
|
|
for i in range(0, self.param_data.size):
|
|
|
|
_cmd_list.append(
|
|
|
|
BrComMessage(
|
|
|
|
BrComMessage.OP_READ,
|
|
|
|
self.param_data.addr + i
|
|
|
|
)
|
|
|
|
)
|
|
|
|
self.signal_read.emit(_cmd_list)
|
|
|
|
|
2025-02-14 15:01:24 +08:00
|
|
|
@Slot()
|
|
|
|
def on_pushButton_write_clicked(self):
|
|
|
|
print('[write] button clicked!')
|
|
|
|
|
|
|
|
_cmd_list = []
|
|
|
|
for i in range(0, self.param_data.size):
|
|
|
|
_cmd_list.append(
|
|
|
|
BrComMessage(
|
|
|
|
BrComMessage.OP_WRITE,
|
|
|
|
self.param_data.addr + i,
|
|
|
|
self.param_data.getval_list[i]
|
|
|
|
)
|
|
|
|
)
|
|
|
|
self.signal_write.emit(_cmd_list)
|
|
|
|
|
2025-02-14 11:11:41 +08:00
|
|
|
@Slot()
|
|
|
|
def on_pushButton_valplot_clicked(self):
|
|
|
|
print('[valpolt] button clicked!')
|
|
|
|
self.dialog = BrWidgetBasicPlot()
|
|
|
|
self.dialog.set_chart_data(self.param_data.getval_list, self.param_data.name)
|
|
|
|
self.dialog.show()
|
|
|
|
|
|
|
|
|
|
|
|
@Slot()
|
|
|
|
def on_pushButton_setvalplot_clicked(self):
|
|
|
|
print('[setvalplot] button clicked!')
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
from PySide6.QtWidgets import QApplication
|
|
|
|
import sys
|
|
|
|
app = QApplication()
|
|
|
|
widget = BrWidgetArrDetails()
|
|
|
|
param_data = ParamDataArr(10, 'name', 'NULL', 0, 10)
|
|
|
|
widget.update_param_info(param_data)
|
|
|
|
widget.update_val_list()
|
|
|
|
widget.update_setval_list()
|
|
|
|
widget.show()
|
|
|
|
sys.exit(app.exec())
|