forked from zietzm/Helmholtz_Test_Bench
Added set magnetic field and vector norms to the field data displays
Marius fancy implementation using globals
This commit is contained in:
+81
-18
@@ -41,6 +41,7 @@ BIG_BUTTON_FONT = (font, points[1], "bold")
|
||||
SMALL_BUTTON_FONT = (font, points[2])
|
||||
DEFAULT_FONT = (font, points[2])
|
||||
|
||||
target_values = [np.nan, np.nan, np.nan, np.nan]
|
||||
|
||||
class HelmholtzGUI(Tk):
|
||||
# main application window, almost everything else here is called from this class
|
||||
@@ -602,8 +603,13 @@ class CalibrateAmbientField(Frame):
|
||||
# UI variables
|
||||
self.connected_state_var = StringVar(value="Not connected")
|
||||
self.field_value_vars = [StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data")]
|
||||
self.target_value_vars = [StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data")]
|
||||
self.calibration_procedure_progress_var = IntVar(value=0)
|
||||
# Contains results for ambient field calibration
|
||||
self.ambient_field_result_vars = [StringVar(), StringVar(), StringVar()]
|
||||
@@ -641,16 +647,26 @@ class CalibrateAmbientField(Frame):
|
||||
field_data_frame.grid(row=row_counter, column=0, sticky="nw")
|
||||
field_data_label = Label(field_data_frame, text="Field data:", font=SUB_HEADER_FONT)
|
||||
field_data_label.grid(row=0, column=0, padx=10, pady=3, sticky="nw")
|
||||
axis_labels = ['X:', 'Y:', 'Z:']
|
||||
for i in range(3):
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels[i])
|
||||
field_data_axis_label.grid(row=i, column=1, padx=10, pady=3)
|
||||
axis_labels_mgm = ['X_mgm:', 'Y_mgm:', 'Z_mgm:', 'T_mgm:']
|
||||
axis_labels_hh = ['X_hh:', 'Y_hh:', 'Z_hh:', 'T_hh:']
|
||||
for i in range(4):
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels_mgm[i])
|
||||
field_data_axis_label.grid(row=i+1, column=0, padx=10, pady=3)
|
||||
|
||||
field_data_axis_data = Label(field_data_frame, textvariable=self.field_value_vars[i])
|
||||
field_data_axis_data.grid(row=i, column=2, padx=(20, 0), pady=3)
|
||||
field_data_axis_data.grid(row=i+1, column=1, padx=(20, 0), pady=3)
|
||||
|
||||
field_data_axis_units = Label(field_data_frame, text="\u03BCT")
|
||||
field_data_axis_units.grid(row=i, column=3, padx=5, pady=3)
|
||||
field_data_axis_units.grid(row=i+1, column=2, padx=5, pady=3)
|
||||
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels_hh[i])
|
||||
field_data_axis_label.grid(row=i+1, column=3, padx=10, pady=3)
|
||||
|
||||
field_data_axis_data = Label(field_data_frame, textvariable=self.target_value_vars[i])
|
||||
field_data_axis_data.grid(row=i+1, column=4, padx=(20, 0), pady=3)
|
||||
|
||||
field_data_axis_units = Label(field_data_frame, text="\u03BCT")
|
||||
field_data_axis_units.grid(row=i+1, column=5, padx=5, pady=3)
|
||||
row_counter += 1
|
||||
|
||||
# Calibration start and reinitialize buttons
|
||||
@@ -819,9 +835,13 @@ class CalibrateAmbientField(Frame):
|
||||
|
||||
# Get new field data
|
||||
new_field = g.MAGNETOMETER.field
|
||||
global target_values
|
||||
for i in range(3):
|
||||
# Display in uT
|
||||
self.field_value_vars[i].set("{:.3f}".format(new_field[i] * 1e6))
|
||||
self.target_value_vars[i].set("{:.3f}".format(target_values[i] * 1e6))
|
||||
self.field_value_vars[3].set("{:.3f}".format(np.sqrt(new_field[0]**2+new_field[1]**2+new_field[2]**2) * 1e6))
|
||||
self.target_value_vars[3].set("{:.3f}".format(target_values[3] * 1e6))
|
||||
|
||||
# Get mpi messages from calibration procedures
|
||||
try:
|
||||
@@ -1014,8 +1034,13 @@ class CalibrateMagnetometerSimple(Frame):
|
||||
# UI variables
|
||||
self.connected_state_var = StringVar(value="Not connected")
|
||||
self.field_value_vars = [StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data")]
|
||||
self.target_value_vars = [StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data")]
|
||||
self.calibration_procedure_progress_var = IntVar(value=0)
|
||||
# Calibration parameters
|
||||
self.calibration_points_var = IntVar(value=8)
|
||||
@@ -1056,16 +1081,26 @@ class CalibrateMagnetometerSimple(Frame):
|
||||
field_data_frame.grid(row=row_counter, column=0, sticky="nw")
|
||||
field_data_label = Label(field_data_frame, text="Field data:", font=SUB_HEADER_FONT)
|
||||
field_data_label.grid(row=0, column=0, padx=10, pady=3, sticky="nw")
|
||||
axis_labels = ['X:', 'Y:', 'Z:']
|
||||
for i in range(3):
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels[i])
|
||||
field_data_axis_label.grid(row=i, column=1, padx=10, pady=3)
|
||||
axis_labels_mgm = ['X_mgm:', 'Y_mgm:', 'Z_mgm:', 'T_mgm:']
|
||||
axis_labels_hh = ['X_hh:', 'Y_hh:', 'Z_hh:', 'T_hh:']
|
||||
for i in range(4):
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels_mgm[i])
|
||||
field_data_axis_label.grid(row=i + 1, column=0, padx=10, pady=3)
|
||||
|
||||
field_data_axis_data = Label(field_data_frame, textvariable=self.field_value_vars[i])
|
||||
field_data_axis_data.grid(row=i, column=2, padx=(20, 0), pady=3)
|
||||
field_data_axis_data.grid(row=i + 1, column=1, padx=(20, 0), pady=3)
|
||||
|
||||
field_data_axis_units = Label(field_data_frame, text="\u03BCT")
|
||||
field_data_axis_units.grid(row=i, column=3, padx=5, pady=3)
|
||||
field_data_axis_units.grid(row=i + 1, column=2, padx=5, pady=3)
|
||||
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels_hh[i])
|
||||
field_data_axis_label.grid(row=i + 1, column=3, padx=10, pady=3)
|
||||
|
||||
field_data_axis_data = Label(field_data_frame, textvariable=self.target_value_vars[i])
|
||||
field_data_axis_data.grid(row=i + 1, column=4, padx=(20, 0), pady=3)
|
||||
|
||||
field_data_axis_units = Label(field_data_frame, text="\u03BCT")
|
||||
field_data_axis_units.grid(row=i + 1, column=5, padx=5, pady=3)
|
||||
row_counter += 1
|
||||
|
||||
# Centered controls
|
||||
@@ -1301,6 +1336,9 @@ class CalibrateMagnetometerSimple(Frame):
|
||||
for i in range(3):
|
||||
# Display in uT
|
||||
self.field_value_vars[i].set("{:.3f}".format(new_field[i] * 1e6))
|
||||
self.target_value_vars[i].set("{:.3f}".format(target_values[i] * 1e6))
|
||||
self.field_value_vars[3].set("{:.3f}".format(np.sqrt(new_field[0]**2+new_field[1]**2+new_field[2]**2)* 1e6))
|
||||
self.target_value_vars[3].set("{:.3f}".format(target_values[3] * 1e6))
|
||||
|
||||
# Get mpi messages from calibration procedures
|
||||
try:
|
||||
@@ -1497,8 +1535,13 @@ class CalibrateMagnetometerComplete(Frame):
|
||||
# UI variables
|
||||
self.connected_state_var = StringVar(value="Not connected")
|
||||
self.field_value_vars = [StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data")]
|
||||
self.target_value_vars = [StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data"),
|
||||
StringVar(value="No data")]
|
||||
self.calibration_procedure_progress_var = IntVar(value=0)
|
||||
# Calibration parameters
|
||||
self.mag_field_magnitude_var = DoubleVar(value=100)
|
||||
@@ -1549,16 +1592,26 @@ class CalibrateMagnetometerComplete(Frame):
|
||||
field_data_frame.grid(row=row_counter, column=0, sticky="nw")
|
||||
field_data_label = Label(field_data_frame, text="Field data:", font=SUB_HEADER_FONT)
|
||||
field_data_label.grid(row=0, column=0, padx=10, pady=3, sticky="nw")
|
||||
axis_labels = ['X:', 'Y:', 'Z:']
|
||||
for i in range(3):
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels[i])
|
||||
field_data_axis_label.grid(row=i, column=1, padx=10, pady=3)
|
||||
axis_labels_mgm = ['X_mgm:', 'Y_mgm:', 'Z_mgm:', 'T_mgm:']
|
||||
axis_labels_hh = ['X_hh:', 'Y_hh:', 'Z_hh:', 'T_hh:']
|
||||
for i in range(4):
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels_mgm[i])
|
||||
field_data_axis_label.grid(row=i + 1, column=0, padx=10, pady=3)
|
||||
|
||||
field_data_axis_data = Label(field_data_frame, textvariable=self.field_value_vars[i])
|
||||
field_data_axis_data.grid(row=i, column=2, padx=(20, 0), pady=3)
|
||||
field_data_axis_data.grid(row=i + 1, column=1, padx=(20, 0), pady=3)
|
||||
|
||||
field_data_axis_units = Label(field_data_frame, text="\u03BCT")
|
||||
field_data_axis_units.grid(row=i, column=3, padx=5, pady=3)
|
||||
field_data_axis_units.grid(row=i + 1, column=2, padx=5, pady=3)
|
||||
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels_hh[i])
|
||||
field_data_axis_label.grid(row=i + 1, column=3, padx=10, pady=3)
|
||||
|
||||
field_data_axis_data = Label(field_data_frame, textvariable=self.target_value_vars[i])
|
||||
field_data_axis_data.grid(row=i + 1, column=4, padx=(20, 0), pady=3)
|
||||
|
||||
field_data_axis_units = Label(field_data_frame, text="\u03BCT")
|
||||
field_data_axis_units.grid(row=i + 1, column=5, padx=5, pady=3)
|
||||
row_counter += 1
|
||||
|
||||
# Centered controls
|
||||
@@ -1796,6 +1849,9 @@ class CalibrateMagnetometerComplete(Frame):
|
||||
for i in range(3):
|
||||
# Display in uT
|
||||
self.field_value_vars[i].set("{:.3f}".format(new_field[i] * 1e6))
|
||||
self.target_value_vars[i].set("{:.3f}".format(target_values[i] * 1e6))
|
||||
self.field_value_vars[3].set("{:.3f}".format(np.sqrt(new_field[0]**2+new_field[1]**2+new_field[2]**2)* 1e6))
|
||||
self.target_value_vars[3].set("{:.3f}".format(target_values[3] * 1e6))
|
||||
|
||||
# Get mpi messages from calibration procedures
|
||||
try:
|
||||
@@ -2664,9 +2720,16 @@ class StatusDisplay(Frame):
|
||||
|
||||
def update_label_poll_method(self):
|
||||
"""Infinite loop to poll for status updates to display"""
|
||||
global target_values
|
||||
try:
|
||||
new_status = self.update_label_queue.get(block=False) # Blocks until new data is available.
|
||||
self.update_labels(new_status)
|
||||
target_values = [new_status['axes'][0]['target_field'],
|
||||
new_status['axes'][1]['target_field'],
|
||||
new_status['axes'][2]['target_field'],
|
||||
np.sqrt(new_status['axes'][0]['target_field']**2 +
|
||||
new_status['axes'][1]['target_field']**2 +
|
||||
new_status['axes'][2]['target_field']**2)]
|
||||
except Empty:
|
||||
pass
|
||||
self.controller.after(200, self.update_label_poll_method)
|
||||
|
||||
Reference in New Issue
Block a user