128 lines
4.7 KiB
Python
128 lines
4.7 KiB
Python
import PySimpleGUI as sg
|
|
import time
|
|
import sys
|
|
sys.path.append(r'/Users/bartkowiak/Programs/frappy/frappy')
|
|
from secop.client import SecopClient
|
|
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
|
|
import matplotlib.pyplot as plt
|
|
from numpy.random import rand
|
|
import numpy as np
|
|
|
|
def draw_figure(canvas, figure):
|
|
figure_canvas_agg = FigureCanvasTkAgg(figure, canvas)
|
|
figure_canvas_agg.draw()
|
|
figure_canvas_agg.get_tk_widget().pack(side='top', fill='both', expand=1)
|
|
return figure_canvas_agg
|
|
|
|
def upd_flim(inp):
|
|
return int(inp)
|
|
def connection_handler(sec,status,IP,port, cstate):
|
|
if cstate == -1 and status == False:
|
|
try :
|
|
cstate = 1
|
|
#sock.connect((IP,int(port)))
|
|
sec = SecopClient(IP+':'+port)
|
|
sec.connect()
|
|
sec.setParameter('f','control',False)
|
|
status = False
|
|
except :
|
|
cstate = -1
|
|
status = True
|
|
elif status == True and cstate == 1 :
|
|
status = False
|
|
sec.disconnect()
|
|
#sock.close()
|
|
cstate = -1
|
|
return cstate, status,sec
|
|
|
|
def new_xy(sec, cstate):
|
|
xn = 0
|
|
yn = 0
|
|
if cstate == 1:
|
|
try:
|
|
xn = sec.getParameter('roi0','i')[0]
|
|
yn = sec.getParameter('roi0','q')[0]
|
|
except:
|
|
pass
|
|
return xn, yn
|
|
|
|
def send_new_f(sec, cstate, freq):
|
|
if cstate == 1:
|
|
freq = sec.setParameter('f','basefreq',freq)
|
|
return freq
|
|
|
|
|
|
# THIS IS THE MAIN LOOP
|
|
def main(): # define the main loop
|
|
freq = '10000000'
|
|
f_start = 39000000
|
|
f_end = 42000000
|
|
new_f = f_start
|
|
down = True
|
|
down2 = True
|
|
cstate = -1
|
|
tstart = time.time()
|
|
x = np.array([])
|
|
y = np.array([])
|
|
IP = 'pc13252'
|
|
port = '5000'
|
|
sec = SecopClient(IP+':'+port)
|
|
layout = [ [sg.Text('Frequency Tuner)')],
|
|
[sg.Text('IP\t\t:',font= ("Helvetica",22)),sg.InputText(key='_IP_',default_text=IP,font= ("Helvetica",22),size=(15,1))],
|
|
[sg.Text('PORT\t\t:',font= ("Helvetica",22)),sg.InputText(key='_PORT_',default_text=port,font= ("Helvetica",22),size=(15,1)),sg.T(' ' * 41), sg.Button('connect',key='connect',font= ("Helvetica",22))],
|
|
[sg.Text('Start Frequency\t:',font= ("Helvetica",22)),sg.InputText(key='_f_start_', default_text='39000000',font= ("Helvetica",22),size=(15,1))],
|
|
[sg.Text('Stop Frequency\t:',font= ("Helvetica",22)),sg.InputText(key='_f_end_',default_text='45000000',font= ("Helvetica",22),size=(15,1))],
|
|
[sg.Slider(range=(f_start, f_end),key='_SLtune_', orientation='h',font= ("Helvetica",22), size=(35, 20), default_value=f_start),sg.T(' ' * 2),sg.Button('sweep',key='sweep',font= ("Helvetica",22))],
|
|
[sg.Canvas(size=(640, 480), key='-CANVAS-')],
|
|
[sg.Button('Exit',font= ("Helvetica",22)),sg.T(' ' * 150),sg.Button('Clear Plot',key='clp',font= ("Helvetica",22))] ] # a couple of buttons
|
|
|
|
window = sg.Window('Frequency tuner', layout, finalize=True)
|
|
canvas_elem = window['-CANVAS-']
|
|
canvas = canvas_elem.TKCanvas
|
|
# draw the intitial scatter plot
|
|
fig, ax = plt.subplots()
|
|
ax.grid(True)
|
|
fig_agg = draw_figure(canvas, fig)
|
|
|
|
while True:
|
|
# Event Loop
|
|
event, values = window.Read(timeout=0.5)
|
|
if event in (None, 'Exit'): # checks if user wants to exit
|
|
if cstate == 1:
|
|
connection_handler(sec,True,values['_IP_'],values['_PORT_'],cstate)
|
|
break
|
|
|
|
if event == 'connect':
|
|
down = not down
|
|
window['connect'].Update(('disconnect','connect')[down])
|
|
cstate, down, sec = connection_handler(sec,down,values['_IP_'],values['_PORT_'],cstate)
|
|
if event == 'sweep':
|
|
down2 = not down2
|
|
window['sweep'].Update(('sweeping','sweep')[down2])
|
|
#if event in ('_SL8_','_SL6_','_SL4_','_SL2_'): # the two lines of code needed to get button and run command
|
|
#freq = update_freq(inp=[values['_SL8_'],values['_SL6_'],values['_SL4_'],values['_SL2_']])
|
|
if down2 == False:
|
|
if time.time() - tstart > 1.:
|
|
tstart = time.time()
|
|
new_f = int(int(values['_SLtune_']) + (int(values['_f_end_'])-int(values['_f_start_']))/200)
|
|
send_new_f(sec,cstate,new_f)
|
|
window['_SLtune_'].Update(value=new_f)
|
|
if event == 'clp':
|
|
x = np.array([])
|
|
y = np.array([])
|
|
window['_SLtune_'].Update(range=(int(values['_f_start_']),int(values['_f_end_'])))
|
|
xn,yn = new_xy(sec,cstate)
|
|
ax.cla()
|
|
ax.grid(True)
|
|
x = np.append(x,xn)
|
|
y = np.append(y,yn)
|
|
ax.plot(x, y)
|
|
fig_agg.draw()
|
|
|
|
window.Close()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|