Echtzeit Daten laden und in einem Graphen ein- und ausschalten können durch eine Checkbox

3 views (last 30 days)
Ich habe mit dem Appdesigner eine Gui erstellt die mir Echtzeit Signale laden kann, jedoch möchte ich diese in einer Achse ein- und ausblenden lassen können mithilfe einer Checkbox. Mithilfe der Methode connectLine konnte ich das Signal laden, jedoch weiß ich nicht ob ich das Signal in einer Variable speichern lassen kann und dann darauf zugreifen kann, um es so ein und auszuschalten.
% Connect line to UIAxis
connectLine(app.Instrument, app.UIAxes_Temp, 'Temp_Cur');
% Configure instrument object
app.Instrument.AxesTimeSpan = 20;
app.Instrument.AxesTimeSpanOverrun = 'wrap';
% Configure UIAxes
app.UIAxes_Temp.YLimMode = 'auto';
% Add the instrument to the InstrumentManager
InstrumentManager = slrealtime.ui.tool.InstrumentManager(app.UIFigure);
InstrumentManager.TargetSource = app.TargetSelector;
InstrumentManager.Instruments = app.Instrument;
Desweiteren wäre es von interesse wenn ich eine Legende einfügen könnte, jedoch funktioniert die Methode legend nur bei einem Plot und ich wüsste nicht wie ich dies trotzdem erreichen kann.
Mithilfe der Checkpox Input1 bzw. Input 2 sollen digitale Signale welche angelesen werden im Diagramm angezeigt bzw. ausgeblendet werden, dies will ich dann anschließend auf analoge Signale erweitern. Es würde mich freuen wenn ihr mir weiterhelfen könntet.

Answers (1)

Harald
Harald on 26 Jul 2023
Hallo,
connectLine hat keine Rückgabe. Man muss also auf einem anderen Weg an die Signale kommen. Da ich das auf die Schnelle nicht nachstellen kann, hier nur ein möglicher, ungetesteter Ansatz: Im Debugging-Modus prüfen, ob in app.UIAxes_Temp.Children (oder an anderer Stelle) entsprechende Handles enthalten sind, bei denen man die Eigenschaft "Visible" wie gewünscht setzen kann.
Viele Grüße,
Harald
  2 Comments
Kevin
Kevin on 26 Jul 2023
ja dies ist zwar möglich jedoch befinden sich bei mir in der Grafik 2 Signale und ich möchte beide Signale nur ausblenden wenn dies gewünscht ist, und nicht immer beide.
if app.Input1CheckBox.Value == 1
app.DigInputAxes.HandleVisibility = "on";
else
app.DigInputAxes.HandleVisibility = "off";
end
Mit diesem Code hatte ich gehofft das ich die Signale anzeigen bzw ausblenden kann jedoch passiert leider nichts.
Wenn ich mit dem Debugger über app.UIAxes_Temp.Children drüber laufe wird mir folgendes angezeigt:
Es befinden sich die zwei gewünschten Signale in der Grafik jedoch weiß ich nicht wie ich auf die Line zugreifen kann.
Ich danke im Vorraus für die Hilfe
Harald
Harald on 26 Jul 2023
Hallo,
das mit app.DigInputAxes.Children sieht erfolgsversprechend aus. :)
Beispielsweise sollte dies eine der beiden Linien ausblenden:
connectedLines = app.DigInputAxes.Children;
connectedLines(1).Visible = "off";
Wenn nicht klar ist, welche Linie die richtige ist, dann z.B. um Digital_Input_1 auszublenden:
connectedLines = app.DigInputAxes.Children;
names = string({connectedLines.DisplayName})
connectedLines(names == "Digital_Input_1").Visible = "off";
Viele Grüße,
Harald

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!