|
|
|
@ -31,9 +31,9 @@ class WaveformPage(BasePage):
|
|
|
|
self.time_axis = np.linspace(0, self.sample_duration, self.sample_points)
|
|
|
|
self.time_axis = np.linspace(0, self.sample_duration, self.sample_points)
|
|
|
|
|
|
|
|
|
|
|
|
# 纵轴配置
|
|
|
|
# 纵轴配置
|
|
|
|
self.y_min = -30
|
|
|
|
self.y_min = -1000
|
|
|
|
self.y_max = 60
|
|
|
|
self.y_max = 1000
|
|
|
|
self.y_precision = 10
|
|
|
|
self.y_precision = 200
|
|
|
|
|
|
|
|
|
|
|
|
# 通道配置
|
|
|
|
# 通道配置
|
|
|
|
self.channels = list(range(1, 9))
|
|
|
|
self.channels = list(range(1, 9))
|
|
|
|
@ -43,6 +43,9 @@ class WaveformPage(BasePage):
|
|
|
|
self.selected_channel = tk.IntVar(value=1) # 默认选择通道1
|
|
|
|
self.selected_channel = tk.IntVar(value=1) # 默认选择通道1
|
|
|
|
self.previous_channel = 1 # 记录上一个通道
|
|
|
|
self.previous_channel = 1 # 记录上一个通道
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 波形开启开关
|
|
|
|
|
|
|
|
self.wave_enabled = False
|
|
|
|
|
|
|
|
|
|
|
|
# 现在调用父类构造函数
|
|
|
|
# 现在调用父类构造函数
|
|
|
|
super().__init__(parent, tcp_client, "实时波形")
|
|
|
|
super().__init__(parent, tcp_client, "实时波形")
|
|
|
|
|
|
|
|
|
|
|
|
@ -83,9 +86,8 @@ class WaveformPage(BasePage):
|
|
|
|
button_frame = ttk.Frame(control_frame)
|
|
|
|
button_frame = ttk.Frame(control_frame)
|
|
|
|
button_frame.pack(fill=tk.X, pady=5)
|
|
|
|
button_frame.pack(fill=tk.X, pady=5)
|
|
|
|
|
|
|
|
|
|
|
|
ttk.Button(button_frame, text="开始接收", command=self.set_data, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
ttk.Button(button_frame, text="开始接收", command=self.set_wave_address, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
# ttk.Button(button_frame, text="开始接收", command=self.start_udp, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
ttk.Button(button_frame, text="停止接收", command=self.clr_wave_address, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
ttk.Button(button_frame, text="停止接收", command=self.stop_udp, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
|
|
|
|
ttk.Button(button_frame, text="清空数据", command=self.clear_data, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
ttk.Button(button_frame, text="清空数据", command=self.clear_data, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
ttk.Button(button_frame, text="自动缩放", command=self.auto_scale, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
ttk.Button(button_frame, text="自动缩放", command=self.auto_scale, width=12).pack(side=tk.LEFT, padx=2)
|
|
|
|
|
|
|
|
|
|
|
|
@ -155,7 +157,7 @@ class WaveformPage(BasePage):
|
|
|
|
|
|
|
|
|
|
|
|
# 纵轴刻度
|
|
|
|
# 纵轴刻度
|
|
|
|
y_major_ticks = np.arange(self.y_min, self.y_max + 1, self.y_precision) # 每10mV主刻度
|
|
|
|
y_major_ticks = np.arange(self.y_min, self.y_max + 1, self.y_precision) # 每10mV主刻度
|
|
|
|
y_minor_ticks = np.arange(self.y_min, self.y_max + 1, 2) # 每2mV次刻度
|
|
|
|
y_minor_ticks = np.arange(self.y_min, self.y_max + 1, 50) # 每2mV次刻度
|
|
|
|
|
|
|
|
|
|
|
|
self.ax.set_xticks(x_major_ticks)
|
|
|
|
self.ax.set_xticks(x_major_ticks)
|
|
|
|
self.ax.set_xticks(x_minor_ticks, minor=True)
|
|
|
|
self.ax.set_xticks(x_minor_ticks, minor=True)
|
|
|
|
@ -193,12 +195,8 @@ class WaveformPage(BasePage):
|
|
|
|
except Exception as e:
|
|
|
|
except Exception as e:
|
|
|
|
self.status_var.set(f"UDP设置失败: {e}")
|
|
|
|
self.status_var.set(f"UDP设置失败: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
def set_data(self):
|
|
|
|
def set_wave_address(self):
|
|
|
|
"""设置波形接收地址"""
|
|
|
|
"""设置波形接收地址"""
|
|
|
|
if not self.tcp_client.connected:
|
|
|
|
|
|
|
|
self.show_error("未连接设备")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
addr = DebugWaveAddress()
|
|
|
|
addr = DebugWaveAddress()
|
|
|
|
|
|
|
|
|
|
|
|
@ -212,6 +210,29 @@ class WaveformPage(BasePage):
|
|
|
|
self.show_error("未连接设备")
|
|
|
|
self.show_error("未连接设备")
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.wave_enabled = True
|
|
|
|
|
|
|
|
self.tcp_client.send_packet(Cmd.SET_WAVE_ADDRESS, addr.to_bytes())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except ValueError as e:
|
|
|
|
|
|
|
|
self.show_error(f"参数格式错误: {e}")
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
|
|
self.show_error(f"设置失败: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def clr_wave_address(self):
|
|
|
|
|
|
|
|
"""设置波形接收地址"""
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
addr = DebugWaveAddress()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
addr.wave_ipv4 = bytes(16)
|
|
|
|
|
|
|
|
addr.wave_port = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print(f"wave_ipv4: {addr.wave_ipv4} wave_port:{addr.wave_port}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print(f"发送命令: {Cmd.SET_WAVE_ADDRESS}")
|
|
|
|
|
|
|
|
if not self.tcp_client.connected:
|
|
|
|
|
|
|
|
self.show_error("未连接设备")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
self.wave_enabled = False
|
|
|
|
self.tcp_client.send_packet(Cmd.SET_WAVE_ADDRESS, addr.to_bytes())
|
|
|
|
self.tcp_client.send_packet(Cmd.SET_WAVE_ADDRESS, addr.to_bytes())
|
|
|
|
|
|
|
|
|
|
|
|
except ValueError as e:
|
|
|
|
except ValueError as e:
|
|
|
|
@ -413,8 +434,12 @@ class WaveformPage(BasePage):
|
|
|
|
|
|
|
|
|
|
|
|
def on_set_response(self, header, body):
|
|
|
|
def on_set_response(self, header, body):
|
|
|
|
"""处理设置响应"""
|
|
|
|
"""处理设置响应"""
|
|
|
|
self.show_info("波形地址设置成功")
|
|
|
|
if self.wave_enabled:
|
|
|
|
self.start_udp()
|
|
|
|
self.show_info("波形地址设置成功")
|
|
|
|
|
|
|
|
self.start_udp()
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
elf.show_info("波形地址设置成功")
|
|
|
|
|
|
|
|
self.stop_udp()
|
|
|
|
|
|
|
|
|
|
|
|
def ip_to_int(self, ip):
|
|
|
|
def ip_to_int(self, ip):
|
|
|
|
parts = ip.split('.')
|
|
|
|
parts = ip.split('.')
|
|
|
|
|