Echtzeit Daten laden und in einem Graphen ein- und ausschalten können durch eine Checkbox
3 views (last 30 days)
Show older comments
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.
0 Comments
Answers (1)
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
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
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!