47 lines
1.9 KiB
Python
47 lines
1.9 KiB
Python
import os
|
|
import time
|
|
import datetime
|
|
import numpy as np
|
|
|
|
# List to accumulate measurement data
|
|
measurement_data = []
|
|
|
|
def append_measurement(target_b_abs, b_x, b_y, measurement_data):
|
|
"""Append a single measurement to the global list."""
|
|
measurement = {
|
|
"Target B_abs (T)": target_b_abs,
|
|
"Target Angle (deg)": 90, # insert target angle here
|
|
"Datetime": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
|
"B_x (T)": b_x,
|
|
"B_y (T)": b_y,
|
|
"Actual B_abs (T)": (b_x**2 + b_y**2)**0.5,
|
|
"Actual Angle (deg)": np.degrees(np.arctan2(b_y, b_x)) % 360,
|
|
}
|
|
measurement_data.append(measurement)
|
|
|
|
def save_measurements_to_file(relative_directory, measurement_data, make_dir=False):
|
|
"""Save accumulated measurements to a file in the specified directory."""
|
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
directory = os.path.join(script_dir, relative_directory)
|
|
if make_dir:
|
|
os.makedirs(directory, exist_ok=True)
|
|
|
|
filename = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M") + ".txt"
|
|
file_path = os.path.join(directory, filename)
|
|
|
|
# Write header and data
|
|
with open(file_path, 'w') as f:
|
|
f.write("Target B_abs (T);Target Angle (deg);Datetime; B_x (T);B_y (T);Actual B_abs (T);Actual Angle (deg)\n")
|
|
for entry in measurement_data:
|
|
line = f"{entry['Target B_abs (T)']};{entry['Target Angle (deg)']};{entry['Datetime']};{entry['B_x (T)']};{entry['B_y (T)']};{entry['Actual B_abs (T)']};{entry['Actual Angle (deg)']}\n"
|
|
f.write(line)
|
|
|
|
# Example usage
|
|
for i in range(5):
|
|
append_measurement(target_b_abs=0.5 + i, b_x=1.0 * i, b_y=2.0 * i, measurement_data=measurement_data)
|
|
time.sleep(1) # Simulate time delay between measurements
|
|
|
|
save_measurements_to_file("Test_Map_" + f"{datetime.datetime.now().strftime('%Y_%m_%d_%H.%M')}", measurement_data, make_dir=False)
|
|
# print(9**0.5)
|
|
# print(datetime.datetime.now())
|