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