support iepe switch and add version info

This commit is contained in:
pandx 2025-11-12 12:00:48 +08:00
parent 7299157dba
commit e431e048d9
2 changed files with 119 additions and 1 deletions

View File

@ -168,6 +168,76 @@ class SNConfigDialog(QDialog):
QMessageBox.warning(self, "失败", f"错误码: {pkg['result_code']}")
class IEPESwitchDialog(QDialog):
def __init__(self, socket: QTcpSocket, parent=None):
super().__init__(parent)
self.setWindowTitle("配置序列号")
self.socket = socket
self.setFixedWidth(300)
self.yymmdd = QLineEdit()
self.sn = QLineEdit()
self.save_btn = QPushButton("设置")
self.cancel_btn = QPushButton("取消")
ymd = QHBoxLayout()
ymd.addWidget(QLabel("通道编号(1或2)"))
ymd.addWidget(self.yymmdd)
serial_num = QHBoxLayout()
serial_num.addWidget(QLabel("状态(1打开2关闭)"))
serial_num.addWidget(self.sn)
btn_line = QHBoxLayout()
btn_line.addWidget(self.save_btn)
btn_line.addWidget(self.cancel_btn)
main_layout = QVBoxLayout()
main_layout.addLayout(ymd)
main_layout.addLayout(serial_num)
main_layout.addLayout(btn_line)
self.setLayout(main_layout)
self.save_btn.clicked.connect(self.send_config)
self.cancel_btn.clicked.connect(self.reject)
def send_config(self):
try:
ymd_int = int(self.yymmdd.text())
sn_int = int(self.sn.text())
except ValueError:
QMessageBox.warning(self, "输入错误", "请输入合法的十进制数")
return
packet = bytes([
0xAA, 0x55, 0xAA,
0x15, # cmd
0x01, # version
0x00 # result_code (发送时为0)
]) + struct.pack('2B', ymd_int, sn_int)
self.socket.write(packet)
if not self.socket.waitForBytesWritten(1000):
QMessageBox.critical(self, "错误", "发送失败")
return
if not self.socket.waitForReadyRead(3000):
QMessageBox.critical(self, "超时", "未收到回应")
return
data = bytes(self.socket.readAll())
pkg = PackageHead.parse(data)
if not pkg:
QMessageBox.critical(self, "错误", "返回数据格式无效")
return
if pkg['result_code'] == 0x00:
QMessageBox.information(self, "成功", "配置成功")
self.accept()
else:
QMessageBox.warning(self, "配置失败", f"错误码: {pkg['result_code']}")
class MacConfigDialog(QDialog):
def __init__(self, socket: QTcpSocket, parent=None):
super().__init__(parent)

View File

@ -8,7 +8,7 @@ from typing import Tuple, Optional
import matplotlib
import matplotlib.pyplot as plt
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QFrame, QStatusBar, QSizePolicy, QFileDialog, QApplication, QMainWindow, QWidget
from PyQt5.QtWidgets import QFrame, QStatusBar, QSizePolicy, QFileDialog, QApplication, QMainWindow, QWidget, QAction
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT
from scipy.fft import fft, fftfreq
@ -184,6 +184,7 @@ class SocketClientApp(QMainWindow):
self.save_button_csv = QPushButton("存储到csv")
self.set_sn_button = QPushButton("设置序列号")
self.get_sn_button = QPushButton("获取序列号")
self.iepe_power_switch = QPushButton("IEPE供电开关")
self.get_data_button.setEnabled(False) # 初始状态不可点击
self.get_data_button2.setEnabled(False) # 初始状态不可点击
self.upgrade_button.setEnabled(False) # 初始状态不可点击
@ -197,6 +198,7 @@ class SocketClientApp(QMainWindow):
self.get_version_button.setEnabled(False)
self.set_sn_button.setEnabled(False)
self.get_sn_button.setEnabled(False)
self.iepe_power_switch.setEnabled(False)
self.ip_input.setText("192.168.0.253")
self.port_input.setText("12345")
@ -247,6 +249,7 @@ class SocketClientApp(QMainWindow):
button_layout.addWidget(self.save_button_csv)
button_layout.addWidget(self.set_sn_button)
button_layout.addWidget(self.get_sn_button)
button_layout.addWidget(self.iepe_power_switch)
main_layout.addLayout(button_layout)
# 添加分割线
@ -291,6 +294,9 @@ class SocketClientApp(QMainWindow):
central_widget.setLayout(main_layout)
self.setCentralWidget(central_widget)
# 创建菜单栏
self.create_menus()
# 事件绑定
self.connect_button.clicked.connect(self.connect_to_server)
self.get_data_button.clicked.connect(self.on_button_clicked)
@ -307,9 +313,42 @@ class SocketClientApp(QMainWindow):
self.batch_process_button.clicked.connect(self.on_button_batch)
self.get_sn_button.clicked.connect(self.on_button_get_sn)
self.set_sn_button.clicked.connect(self.on_button_set_sn)
self.iepe_power_switch.clicked.connect(self.on_iepe_power_switch_cb)
# 设置布局策略,确保控件大小随窗口调整
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
def create_menus(self):
# 创建菜单栏
menubar = self.menuBar()
# 创建帮助菜单
help_menu = menubar.addMenu('帮助')
# 创建版本信息菜单项
version_action = QAction('版本信息', self)
version_action.triggered.connect(self.dnm_version_info_cb) # 触发显示版本信息
help_menu.addAction(version_action)
# 设置状态栏右下角显示版本号
self.status_bar.showMessage('版本号2.2', 20000)
def dnm_version_info_cb(self):
msg = QMessageBox()
# 设置消息框的标题
msg.setWindowTitle("软件版本信息")
# 设置消息框的内容
msg.setText("软件版本号2.2\n"
"支持的分布式节点版本号2.2以上\n"
"更新日期2025-11-12")
# 设置按钮
msg.setStandardButtons(QMessageBox.Ok)
# 显示消息框
msg.exec_()
def on_button_batch(self):
dialog = BatchOperationDialog()
if dialog.exec_() == QDialog.Accepted:
@ -380,6 +419,7 @@ class SocketClientApp(QMainWindow):
self.get_version_button.setEnabled(True)
self.set_sn_button.setEnabled(True)
self.get_sn_button.setEnabled(True)
self.iepe_power_switch.setEnabled(True)
self.connect_button.setText("断开")
def on_socket_disconnected(self):
@ -399,6 +439,7 @@ class SocketClientApp(QMainWindow):
self.get_version_button.setEnabled(False)
self.set_sn_button.setEnabled(False)
self.get_sn_button.setEnabled(False)
self.iepe_power_switch.setEnabled(False)
# self.current_reconnect_attempts = 0
# self.reconnect_timer.start(self.reconnect_interval)
@ -814,6 +855,13 @@ class SocketClientApp(QMainWindow):
dialog.exec_()
self.socket.readyRead.connect(self.on_ready_read)
def on_iepe_power_switch_cb(self):
self.recv_state = ''
self.socket.readyRead.disconnect(self.on_ready_read)
dialog = IEPESwitchDialog(self.socket, self)
dialog.exec_()
self.socket.readyRead.connect(self.on_ready_read)
def calibration_dialog(self):
self.recv_state = ''
self.socket.readyRead.disconnect(self.on_ready_read)