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']}")
|
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):
|
class MacConfigDialog(QDialog):
|
||||||
def __init__(self, socket: QTcpSocket, parent=None):
|
def __init__(self, socket: QTcpSocket, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
|
|||||||
@ -8,7 +8,7 @@ from typing import Tuple, Optional
|
|||||||
import matplotlib
|
import matplotlib
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
from PyQt5.QtCore import QTimer
|
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 matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT
|
||||||
from scipy.fft import fft, fftfreq
|
from scipy.fft import fft, fftfreq
|
||||||
|
|
||||||
@ -184,6 +184,7 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.save_button_csv = QPushButton("存储到csv")
|
self.save_button_csv = QPushButton("存储到csv")
|
||||||
self.set_sn_button = QPushButton("设置序列号")
|
self.set_sn_button = QPushButton("设置序列号")
|
||||||
self.get_sn_button = QPushButton("获取序列号")
|
self.get_sn_button = QPushButton("获取序列号")
|
||||||
|
self.iepe_power_switch = QPushButton("IEPE供电开关")
|
||||||
self.get_data_button.setEnabled(False) # 初始状态不可点击
|
self.get_data_button.setEnabled(False) # 初始状态不可点击
|
||||||
self.get_data_button2.setEnabled(False) # 初始状态不可点击
|
self.get_data_button2.setEnabled(False) # 初始状态不可点击
|
||||||
self.upgrade_button.setEnabled(False) # 初始状态不可点击
|
self.upgrade_button.setEnabled(False) # 初始状态不可点击
|
||||||
@ -197,6 +198,7 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.get_version_button.setEnabled(False)
|
self.get_version_button.setEnabled(False)
|
||||||
self.set_sn_button.setEnabled(False)
|
self.set_sn_button.setEnabled(False)
|
||||||
self.get_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.ip_input.setText("192.168.0.253")
|
||||||
self.port_input.setText("12345")
|
self.port_input.setText("12345")
|
||||||
|
|
||||||
@ -247,6 +249,7 @@ class SocketClientApp(QMainWindow):
|
|||||||
button_layout.addWidget(self.save_button_csv)
|
button_layout.addWidget(self.save_button_csv)
|
||||||
button_layout.addWidget(self.set_sn_button)
|
button_layout.addWidget(self.set_sn_button)
|
||||||
button_layout.addWidget(self.get_sn_button)
|
button_layout.addWidget(self.get_sn_button)
|
||||||
|
button_layout.addWidget(self.iepe_power_switch)
|
||||||
main_layout.addLayout(button_layout)
|
main_layout.addLayout(button_layout)
|
||||||
|
|
||||||
# 添加分割线
|
# 添加分割线
|
||||||
@ -291,6 +294,9 @@ class SocketClientApp(QMainWindow):
|
|||||||
central_widget.setLayout(main_layout)
|
central_widget.setLayout(main_layout)
|
||||||
self.setCentralWidget(central_widget)
|
self.setCentralWidget(central_widget)
|
||||||
|
|
||||||
|
# 创建菜单栏
|
||||||
|
self.create_menus()
|
||||||
|
|
||||||
# 事件绑定
|
# 事件绑定
|
||||||
self.connect_button.clicked.connect(self.connect_to_server)
|
self.connect_button.clicked.connect(self.connect_to_server)
|
||||||
self.get_data_button.clicked.connect(self.on_button_clicked)
|
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.batch_process_button.clicked.connect(self.on_button_batch)
|
||||||
self.get_sn_button.clicked.connect(self.on_button_get_sn)
|
self.get_sn_button.clicked.connect(self.on_button_get_sn)
|
||||||
self.set_sn_button.clicked.connect(self.on_button_set_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)
|
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):
|
def on_button_batch(self):
|
||||||
dialog = BatchOperationDialog()
|
dialog = BatchOperationDialog()
|
||||||
if dialog.exec_() == QDialog.Accepted:
|
if dialog.exec_() == QDialog.Accepted:
|
||||||
@ -380,6 +419,7 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.get_version_button.setEnabled(True)
|
self.get_version_button.setEnabled(True)
|
||||||
self.set_sn_button.setEnabled(True)
|
self.set_sn_button.setEnabled(True)
|
||||||
self.get_sn_button.setEnabled(True)
|
self.get_sn_button.setEnabled(True)
|
||||||
|
self.iepe_power_switch.setEnabled(True)
|
||||||
self.connect_button.setText("断开")
|
self.connect_button.setText("断开")
|
||||||
|
|
||||||
def on_socket_disconnected(self):
|
def on_socket_disconnected(self):
|
||||||
@ -399,6 +439,7 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.get_version_button.setEnabled(False)
|
self.get_version_button.setEnabled(False)
|
||||||
self.set_sn_button.setEnabled(False)
|
self.set_sn_button.setEnabled(False)
|
||||||
self.get_sn_button.setEnabled(False)
|
self.get_sn_button.setEnabled(False)
|
||||||
|
self.iepe_power_switch.setEnabled(False)
|
||||||
# self.current_reconnect_attempts = 0
|
# self.current_reconnect_attempts = 0
|
||||||
# self.reconnect_timer.start(self.reconnect_interval)
|
# self.reconnect_timer.start(self.reconnect_interval)
|
||||||
|
|
||||||
@ -814,6 +855,13 @@ class SocketClientApp(QMainWindow):
|
|||||||
dialog.exec_()
|
dialog.exec_()
|
||||||
self.socket.readyRead.connect(self.on_ready_read)
|
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):
|
def calibration_dialog(self):
|
||||||
self.recv_state = ''
|
self.recv_state = ''
|
||||||
self.socket.readyRead.disconnect(self.on_ready_read)
|
self.socket.readyRead.disconnect(self.on_ready_read)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user