added initial config
This commit is contained in:
@ -3,6 +3,7 @@ import json
|
||||
import math
|
||||
import socket
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
import device_interaction as dev
|
||||
|
||||
@ -23,6 +24,14 @@ INITIAL_TEMPERATURE_2 = 28.9 # Set initial temperature for Laser 2 in Celsius: f
|
||||
INITIAL_CURRENT_1 = 33 # 64.0879 max # Set initial current for Laser 1, in mA
|
||||
INITIAL_CURRENT_2 = 35 # 64.0879 max # Set initial current for Laser 2, in mA
|
||||
|
||||
AD9833_FREQ_DEFAULT_KHZ = 125.0
|
||||
AD9833_MCLK_DEFAULT_MHZ = 20.0
|
||||
DS1809_MAX_STEP = 63
|
||||
DS1809_DEFAULT_STEP = 0
|
||||
DS1809_INIT_HOME_PULSES = 64
|
||||
DS1809_INIT_PULSE_MS = 2
|
||||
DS1809_INIT_STARTUP_DELAY_S = 0.35
|
||||
|
||||
#### ---- Functions
|
||||
|
||||
def start_task(prt):
|
||||
@ -73,6 +82,38 @@ def shorten(i):
|
||||
return "{:.2f}".format(round(i, 2))
|
||||
|
||||
|
||||
def clamp_int(value, min_value, max_value):
|
||||
if value < min_value:
|
||||
return min_value
|
||||
if value > max_value:
|
||||
return max_value
|
||||
return value
|
||||
|
||||
|
||||
def format_ds1809_status(step):
|
||||
return f"{step}/{DS1809_MAX_STEP} шагов"
|
||||
|
||||
|
||||
def initialize_ds1809_position(prt, default_step):
|
||||
default_step = clamp_int(int(default_step), 0, DS1809_MAX_STEP)
|
||||
|
||||
# Give the STM32 side a short startup margin before DS1809 pulse traffic.
|
||||
time.sleep(DS1809_INIT_STARTUP_DELAY_S)
|
||||
|
||||
dev.send_ds1809_pulse(prt, uc=False, dc=True,
|
||||
count=DS1809_INIT_HOME_PULSES,
|
||||
pulse_ms=DS1809_INIT_PULSE_MS)
|
||||
current_step = 0
|
||||
|
||||
if default_step > 0:
|
||||
dev.send_ds1809_pulse(prt, uc=True, dc=False,
|
||||
count=default_step,
|
||||
pulse_ms=DS1809_INIT_PULSE_MS)
|
||||
current_step = default_step
|
||||
|
||||
return current_step
|
||||
|
||||
|
||||
def set_initial_params():
|
||||
params = {}
|
||||
params['Temp_1'] = INITIAL_TEMPERATURE_1 # Initial temperature for Laser 1
|
||||
@ -108,9 +149,11 @@ def set_initial_params():
|
||||
params['RampSramMode'] = False
|
||||
params['RampSramSamples'] = ''
|
||||
params['RampSramAmp'] = ''
|
||||
params['Ad9833Freq'] = ''
|
||||
params['Ad9833Mclk'] = '25'
|
||||
params['Ad9833Freq'] = str(AD9833_FREQ_DEFAULT_KHZ)
|
||||
params['Ad9833Mclk'] = str(AD9833_MCLK_DEFAULT_MHZ)
|
||||
params['Ad9833Triangle'] = True
|
||||
params['DS1809Step'] = DS1809_DEFAULT_STEP
|
||||
params['DS1809Status'] = format_ds1809_status(DS1809_DEFAULT_STEP)
|
||||
return params
|
||||
|
||||
def update_data_lists():
|
||||
@ -139,12 +182,29 @@ if __name__ == "__main__":
|
||||
|
||||
# dev.request_state(prt)
|
||||
dev.send_control_parameters(prt, params)
|
||||
saved_data.append(dev.request_data(prt))
|
||||
draw_data.append(saved_data[0])
|
||||
|
||||
|
||||
window = gui.setup_gui(params)
|
||||
axes_signs = gui.sign_axes(window)
|
||||
|
||||
|
||||
ds1809_step = initialize_ds1809_position(prt, params['DS1809Step'])
|
||||
params['DS1809Step'] = ds1809_step
|
||||
params['DS1809Status'] = format_ds1809_status(ds1809_step)
|
||||
window['-DS1809Status-'].update(params['DS1809Status'])
|
||||
|
||||
initial_data = None
|
||||
for _ in range(20):
|
||||
initial_data = dev.request_data(prt)
|
||||
if isinstance(initial_data, dict):
|
||||
break
|
||||
time.sleep(0.05)
|
||||
|
||||
if not isinstance(initial_data, dict):
|
||||
print('Error: initial DATA packet not received. Closing program...')
|
||||
exit(1)
|
||||
|
||||
saved_data.append(initial_data)
|
||||
draw_data.append(initial_data)
|
||||
|
||||
current_and_temperature_settings_available = True
|
||||
disableStartButton = False
|
||||
|
||||
@ -492,22 +552,33 @@ if __name__ == "__main__":
|
||||
sram_mode=sram_mode, sram_samples=sram_samples,
|
||||
sram_amplitude=sram_amplitude)
|
||||
elif event == '-StartRamp9833-':
|
||||
freq_hz = parse_optional_float(values.get('-AD9833Freq-'))
|
||||
freq_khz = parse_optional_float(values.get('-AD9833Freq-'))
|
||||
freq_hz = int(round(freq_khz * 1000.0)) if freq_khz is not None else None
|
||||
mclk_mhz = parse_optional_float(values.get('-AD9833Mclk-'))
|
||||
mclk_hz = mclk_mhz * 1e6 if mclk_mhz is not None else None
|
||||
triangle = values.get('-AD9833Triangle-', True)
|
||||
dev.start_ad9833_ramp(prt, freq_hz=freq_hz, mclk_hz=mclk_hz, triangle=triangle, enable=True)
|
||||
elif event == '-DS1809UC-':
|
||||
dev.send_ds1809_pulse(prt, uc=True, dc=False)
|
||||
dev.send_ds1809_pulse(prt, uc=True, dc=False, count=1, pulse_ms=DS1809_INIT_PULSE_MS)
|
||||
ds1809_step = clamp_int(ds1809_step + 1, 0, DS1809_MAX_STEP)
|
||||
params['DS1809Step'] = ds1809_step
|
||||
params['DS1809Status'] = format_ds1809_status(ds1809_step)
|
||||
window['-DS1809Status-'].update(params['DS1809Status'])
|
||||
elif event == '-DS1809DC-':
|
||||
dev.send_ds1809_pulse(prt, uc=False, dc=True)
|
||||
dev.send_ds1809_pulse(prt, uc=False, dc=True, count=1, pulse_ms=DS1809_INIT_PULSE_MS)
|
||||
ds1809_step = clamp_int(ds1809_step - 1, 0, DS1809_MAX_STEP)
|
||||
params['DS1809Step'] = ds1809_step
|
||||
params['DS1809Status'] = format_ds1809_status(ds1809_step)
|
||||
window['-DS1809Status-'].update(params['DS1809Status'])
|
||||
elif event == '-StopCycle-':
|
||||
window['-StopCycle-'].update(disabled = True)
|
||||
current_and_temperature_settings_available = True
|
||||
stop_task(prt)
|
||||
elif event == TIMEOUT_KEY:
|
||||
data = dev.request_data(prt)
|
||||
|
||||
if not isinstance(data, dict):
|
||||
continue
|
||||
|
||||
update_data_lists()
|
||||
|
||||
window['-TOUT_1-'].update(gui.READ_TEMPERATURE_TEXT+' 1: '+shorten(data['Temp_1'])+' C')
|
||||
|
||||
Reference in New Issue
Block a user