openflexure-microscope / gui_control.py
sgbaird's picture
mv title
6d0df63
def show():
# note to self you can check for empty with if statement st.image(image,
# caption='PIL Image', use_column_width=True)
from os import environ
import streamlit as st
from microscope_demo_client import MicroscopeDemo
# from my_secrets import HIVEMQ_BROKER
HIVEMQ_BROKER = environ["HIVEMQ_BROKER"]
port = 8883
microscopes = [
"microscope",
"microscope2",
"deltastagetransmission",
"deltastagereflection",
]
st.title("GUI control")
microscopeselection = st.selectbox(
"Choose a microscope:", microscopes, index=microscopes.index("microscope2")
)
access_key = st.text_input(label="Enter your access key here:", max_chars=1000)
def get_pos_button():
microscope = MicroscopeDemo(
HIVEMQ_BROKER,
port,
microscopeselection + "clientuser",
access_key,
microscopeselection,
)
# "acmicroscopedemo" is a placeholder until access keys are implemented
pos = microscope.get_pos()
st.write("x: " + str(pos["x"]))
st.write("y: " + str(pos["y"]))
st.write("z: " + str(pos["z"]))
microscope.end_connection()
def take_image_button():
microscope = MicroscopeDemo(
HIVEMQ_BROKER,
port,
microscopeselection + "clientuser",
access_key,
microscopeselection,
)
# "acmicroscopedemo" is a placeholder until access keys are implemented
st.image(
microscope.take_image(),
caption="Taken from the microscope camera",
use_column_width=True,
)
microscope.end_connection()
def focus_button():
microscope = MicroscopeDemo(
HIVEMQ_BROKER,
port,
microscopeselection + "clientuser",
access_key,
microscopeselection,
)
# "acmicroscopedemo" is a placeholder until access keys are implemented
microscope.focus(focusamount)
st.write("Autofocus complete")
microscope.end_connection()
def move_button():
microscope = MicroscopeDemo(
HIVEMQ_BROKER,
port,
microscopeselection + "clientuser",
access_key,
microscopeselection,
)
# "acmicroscopedemo" is a placeholder until access keys are implemented
microscope.move(xmove, ymove)
st.write("Move complete")
microscope.end_connection()
st.button("Get position", on_click=get_pos_button)
st.write("")
st.button("Take image", on_click=take_image_button)
st.write("")
focusamount = st.number_input(
"Autofocus amount 1-5000", min_value=1, max_value=5000, step=100, value=1000
)
st.button("Focus", on_click=focus_button)
st.write("")
xmove = st.number_input("X", min_value=-20000, max_value=20000, step=250, value=0)
ymove = st.number_input("Y", min_value=-20000, max_value=20000, step=250, value=0)
st.button("Move", on_click=move_button)