support serial num config and get
This commit is contained in:
parent
3584fbc48e
commit
7299157dba
@ -98,6 +98,76 @@ class Eigenvalue:
|
|||||||
self.offset2 = offset2
|
self.offset2 = offset2
|
||||||
|
|
||||||
|
|
||||||
|
class SNConfigDialog(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("年月日(ex:20251105)"))
|
||||||
|
ymd.addWidget(self.yymmdd)
|
||||||
|
|
||||||
|
serial_num = QHBoxLayout()
|
||||||
|
serial_num.addWidget(QLabel("序列号(ex:12)"))
|
||||||
|
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_sn_config)
|
||||||
|
self.cancel_btn.clicked.connect(self.reject)
|
||||||
|
|
||||||
|
def send_sn_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,
|
||||||
|
0x13, # cmd
|
||||||
|
0x01, # version
|
||||||
|
0x00 # result_code (发送时为0)
|
||||||
|
]) + struct.pack('2I', 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)
|
||||||
|
|||||||
@ -182,6 +182,8 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.get_version_button = QPushButton("版本")
|
self.get_version_button = QPushButton("版本")
|
||||||
self.upgrade_button_sampling = QPushButton("采样率/时间")
|
self.upgrade_button_sampling = QPushButton("采样率/时间")
|
||||||
self.save_button_csv = QPushButton("存储到csv")
|
self.save_button_csv = QPushButton("存储到csv")
|
||||||
|
self.set_sn_button = QPushButton("设置序列号")
|
||||||
|
self.get_sn_button = QPushButton("获取序列号")
|
||||||
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) # 初始状态不可点击
|
||||||
@ -193,7 +195,9 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.ipv4_config_button.setEnabled(False)
|
self.ipv4_config_button.setEnabled(False)
|
||||||
self.calibration_config_button.setEnabled(False)
|
self.calibration_config_button.setEnabled(False)
|
||||||
self.get_version_button.setEnabled(False)
|
self.get_version_button.setEnabled(False)
|
||||||
self.ip_input.setText("192.168.0.191")
|
self.set_sn_button.setEnabled(False)
|
||||||
|
self.get_sn_button.setEnabled(False)
|
||||||
|
self.ip_input.setText("192.168.0.253")
|
||||||
self.port_input.setText("12345")
|
self.port_input.setText("12345")
|
||||||
|
|
||||||
# 预留绘图区域
|
# 预留绘图区域
|
||||||
@ -241,6 +245,8 @@ class SocketClientApp(QMainWindow):
|
|||||||
button_layout.addWidget(self.calibration_config_button)
|
button_layout.addWidget(self.calibration_config_button)
|
||||||
button_layout.addWidget(self.get_version_button)
|
button_layout.addWidget(self.get_version_button)
|
||||||
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.get_sn_button)
|
||||||
main_layout.addLayout(button_layout)
|
main_layout.addLayout(button_layout)
|
||||||
|
|
||||||
# 添加分割线
|
# 添加分割线
|
||||||
@ -299,6 +305,8 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.calibration_config_button.clicked.connect(self.calibration_dialog)
|
self.calibration_config_button.clicked.connect(self.calibration_dialog)
|
||||||
self.get_version_button.clicked.connect(self.on_button_get_version)
|
self.get_version_button.clicked.connect(self.on_button_get_version)
|
||||||
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.set_sn_button.clicked.connect(self.on_button_set_sn)
|
||||||
# 设置布局策略,确保控件大小随窗口调整
|
# 设置布局策略,确保控件大小随窗口调整
|
||||||
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||||
|
|
||||||
@ -370,6 +378,8 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.ipv4_config_button.setEnabled(True)
|
self.ipv4_config_button.setEnabled(True)
|
||||||
self.calibration_config_button.setEnabled(True)
|
self.calibration_config_button.setEnabled(True)
|
||||||
self.get_version_button.setEnabled(True)
|
self.get_version_button.setEnabled(True)
|
||||||
|
self.set_sn_button.setEnabled(True)
|
||||||
|
self.get_sn_button.setEnabled(True)
|
||||||
self.connect_button.setText("断开")
|
self.connect_button.setText("断开")
|
||||||
|
|
||||||
def on_socket_disconnected(self):
|
def on_socket_disconnected(self):
|
||||||
@ -387,6 +397,8 @@ class SocketClientApp(QMainWindow):
|
|||||||
self.ipv4_config_button.setEnabled(False)
|
self.ipv4_config_button.setEnabled(False)
|
||||||
self.calibration_config_button.setEnabled(False)
|
self.calibration_config_button.setEnabled(False)
|
||||||
self.get_version_button.setEnabled(False)
|
self.get_version_button.setEnabled(False)
|
||||||
|
self.set_sn_button.setEnabled(False)
|
||||||
|
self.get_sn_button.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)
|
||||||
|
|
||||||
@ -522,9 +534,17 @@ class SocketClientApp(QMainWindow):
|
|||||||
body_size = struct.calcsize(body_format)
|
body_size = struct.calcsize(body_format)
|
||||||
body_data = recv_data[HEADER_SIZE:HEADER_SIZE + body_size]
|
body_data = recv_data[HEADER_SIZE:HEADER_SIZE + body_size]
|
||||||
unpacked_data = struct.unpack(body_format, body_data)
|
unpacked_data = struct.unpack(body_format, body_data)
|
||||||
print(f"version{unpacked_data}")
|
print(f"mac info {unpacked_data}")
|
||||||
QMessageBox.information(self, "MAC地址",
|
QMessageBox.information(self, "MAC地址",
|
||||||
f"50-29-4D-20-{format(unpacked_data[0], '02x')}-{format(unpacked_data[1], '02x')}")
|
f"50-29-4D-20-{format(unpacked_data[0], '02x')}-{format(unpacked_data[1], '02x')}")
|
||||||
|
elif cmd == 0x14:
|
||||||
|
body_format = '< I I'
|
||||||
|
body_size = struct.calcsize(body_format)
|
||||||
|
body_data = recv_data[HEADER_SIZE:HEADER_SIZE + body_size]
|
||||||
|
unpacked_data = struct.unpack(body_format, body_data)
|
||||||
|
print(f"sn: {unpacked_data}")
|
||||||
|
QMessageBox.information(self, "序列号为: ",
|
||||||
|
f"年月日: {unpacked_data[0]}, 序号: {unpacked_data[1]}")
|
||||||
|
|
||||||
def receive_data(self, length: int):
|
def receive_data(self, length: int):
|
||||||
while len(self.buffer) < length:
|
while len(self.buffer) < length:
|
||||||
@ -613,7 +633,7 @@ class SocketClientApp(QMainWindow):
|
|||||||
0x01, 0x00, 0x00,
|
0x01, 0x00, 0x00,
|
||||||
0x01
|
0x01
|
||||||
]) + rate_bytes + time_bytes
|
]) + rate_bytes + time_bytes
|
||||||
|
print("get channel 1 wave")
|
||||||
self.socket.write(packet)
|
self.socket.write(packet)
|
||||||
print(packet)
|
print(packet)
|
||||||
self.status_bar.showMessage(f"状态: 正在获取通道1数据,采样率: {self.rate_code}, 时间: {time_value}s")
|
self.status_bar.showMessage(f"状态: 正在获取通道1数据,采样率: {self.rate_code}, 时间: {time_value}s")
|
||||||
@ -634,7 +654,7 @@ class SocketClientApp(QMainWindow):
|
|||||||
0x01, 0x00, 0x00,
|
0x01, 0x00, 0x00,
|
||||||
0x02
|
0x02
|
||||||
]) + rate_bytes + time_bytes
|
]) + rate_bytes + time_bytes
|
||||||
|
print("get channel 2 wave")
|
||||||
self.socket.write(packet)
|
self.socket.write(packet)
|
||||||
self.status_bar.showMessage(f"状态: 正在获取通道2数据,采样率: {self.rate_code}, 时间: {time_value}s")
|
self.status_bar.showMessage(f"状态: 正在获取通道2数据,采样率: {self.rate_code}, 时间: {time_value}s")
|
||||||
self.socket.waitForReadyRead()
|
self.socket.waitForReadyRead()
|
||||||
@ -787,6 +807,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_button_set_sn(self):
|
||||||
|
self.recv_state = ''
|
||||||
|
self.socket.readyRead.disconnect(self.on_ready_read)
|
||||||
|
dialog = SNConfigDialog(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)
|
||||||
@ -814,6 +841,16 @@ class SocketClientApp(QMainWindow):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.status_bar.showMessage(f"状态: 错误 - {str(e)}")
|
self.status_bar.showMessage(f"状态: 错误 - {str(e)}")
|
||||||
|
|
||||||
|
def on_button_get_sn(self):
|
||||||
|
try:
|
||||||
|
self.recv_state = ''
|
||||||
|
self.status_bar.showMessage("状态: 正在获取数据...", 3000)
|
||||||
|
self.socket.write(bytes(
|
||||||
|
[0xAA, 0x55, 0xAA, 0x14, 0x01, 0x00])) # 发送数据
|
||||||
|
self.socket.waitForReadyRead()
|
||||||
|
except Exception as e:
|
||||||
|
self.status_bar.showMessage(f"状态: 错误 - {str(e)}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user