support iepe switch and add version info
This commit is contained in:
parent
7299157dba
commit
e431e048d9
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user