优化代码
This commit is contained in:
parent
c59b6a3c1b
commit
9ae3e480ca
@ -169,6 +169,7 @@ class SocketClientApp(QMainWindow):
|
||||
try:
|
||||
port = int(port)
|
||||
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.socket.settimeout(2)
|
||||
# 设置 keep-alive 选项
|
||||
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
|
||||
self.socket.connect((ip, port))
|
||||
@ -188,14 +189,17 @@ class SocketClientApp(QMainWindow):
|
||||
start_time = time.time()
|
||||
try:
|
||||
while True:
|
||||
try:
|
||||
# 每次接收 1024 字节的数据
|
||||
chunk = self.socket.recv(1000)
|
||||
chunk = self.socket.recv(1460)
|
||||
buffer_size += len(chunk)
|
||||
print(f"len partf {len(chunk)},buffer_size {buffer_size}")
|
||||
# 拼接数据
|
||||
if buffer_size > 97000*4:
|
||||
if not chunk:
|
||||
break # 如果没有数据,退出循环
|
||||
received_data += chunk
|
||||
except socket.timeout:
|
||||
print(f"接收数据超时({2} 秒),退出接收循环")
|
||||
break # 超时后退出接收循环
|
||||
# 记录结束时间
|
||||
end_time = time.time()
|
||||
|
||||
@ -231,26 +235,35 @@ class SocketClientApp(QMainWindow):
|
||||
|
||||
# 提取实际数据
|
||||
actual_data = received_data[7:7 + data_length]
|
||||
print(f"解析到的长度字段 {len(actual_data)}")
|
||||
complete_data += actual_data # 将数据拼接到完整数据中
|
||||
print(f"解析到的长度字段2 {len(complete_data)}")
|
||||
# 丢弃已处理的数据
|
||||
received_data = received_data[7 + data_length:]
|
||||
print(f"还剩下解析长度字段 {len(received_data)}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"发生错误: {e}")
|
||||
print(f" 数据: {len(complete_data)}")
|
||||
# 打印前100个字节的数据(以16进制方式)
|
||||
print("前100个字节的数据(16进制表示):")
|
||||
for i in range(min(100, len(complete_data))): # 确保不超过数据长度
|
||||
print(f"{complete_data[i]:02X}", end=" ") # 每个字节以16进制格式打印
|
||||
print() # 换行
|
||||
return complete_data
|
||||
|
||||
def on_button_clicked(self):
|
||||
""" 获取数据并绘制 """
|
||||
try:
|
||||
self.status_bar.showMessage("状态: 正在获取数据...")
|
||||
self.socket.sendall(bytes([0xAA, 0x55, 0xAA,0x01])) # 发送数据
|
||||
data = self.receive_data() # 接收所有数据
|
||||
data = np.frombuffer(data, dtype=np.int32) # 根据实际数据格式转换
|
||||
for i in range(min(100, len(data))): # 确保不超过数据长度
|
||||
print(f"{data[i]:1f}", end=" ")
|
||||
print() # 换行
|
||||
LSB_32BIT = (2.8 / (2 ** 31)) * ((750 + 287) / 287) * 1000
|
||||
scaled_data = data * LSB_32BIT
|
||||
for i in range(min(100, len(scaled_data))): # 确保不超过数据长度
|
||||
print(f"{scaled_data[i]:2f}", end=" ")
|
||||
print() # 换行
|
||||
self.canvas.plot_data(scaled_data) # 在 Qt 界面中绘图
|
||||
self.status_bar.showMessage("状态: 数据绘制完成")
|
||||
except Exception as e:
|
||||
|
Loading…
x
Reference in New Issue
Block a user