Управление моделью Engee при помощи Веб-приложения
Author
using StippleUI
using PlotlyBase
using GenieFramework
using Engee
T = 0:0.01:5
@app begin
@in A = 1.0
@in Fs = 1.0
@in P = 0.0
@out plotdata = [scatter(x=vec(T), y=vec(sin.(2π .* T)))]
@out plotlayout = PlotlyBase.Layout(
xaxis=attr(title="Время", showgrid=true),
yaxis=attr(title="Значение", showgrid=true)
)
@onchange A, Fs, P begin
plotdata = [scatter(x=vec(T), y=vec(A .* sin.(2π * Fs .* T .+ P)))]
engee.genie.send("A", A)
engee.genie.send("Fs", Fs)
engee.genie.send("P", P)
engee.set_param!("SIN/Sin",
"Amplitude" => Float64(A),
"Frequency" => Float64(Fs),
"Phase" => Float64(P))
end
end
function ui()
row([
column([
h6("Амплитуда = {{A}}", style="margin-bottom: -10px"),
slider(0.1:0.20:10, :A, color="red", style="margin-bottom: 20px"),
h6("Частота = {{Fs}}", style="margin-bottom: -10px"),
slider(0.1:0.20:10, :Fs, color="green", style="margin-bottom: 20px"),
h6("Фаза = {{P}}", style="margin-bottom: -10px"),
slider(0.0:0.20:2π, :P, color="blue", style="margin-bottom: 20px")
], style="width: 40%; padding: 20px;"),
column([
plot(:plotdata, layout=:plotlayout)
], style="width: 60%; padding: 20px; background-color: #f9f9f9; border-radius: 10px;")
])
end
@page("/", ui, debounce=1)