Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Studierende:
Praktikant Toolentwicklung Matlab (m/w)
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Abschlussarbeit / Praktikum: Entwicklung Matlab (m/w)
Branche: Informationstechnologie, Elektrotechnik, Elektronik
GIGATRONIK Technologies GmbH - Ulm

Studentischer Mitarbeiter (m/w) - DevOps / Toolentwicklung
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - Berlin

Praktikant (m/w) Bereich Konzernvorausentwicklung - Aktoren sicherheitsrelevanter Anwendungen
Branche: Fahrzeugtechnik, Fahrzeugteile, Maschinentechnik, Industrietechnik
MAHLE International GmbH - Stuttgart

Praktikum - Softwareentwicklung Java
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - Dresden, Gifhorn

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Ein Anfänger arbeitet sich in Pushbuttons und Callbacks ein

 

Nordlicht
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 08.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2017, 09:56     Titel: Ein Anfänger arbeitet sich in Pushbuttons und Callbacks ein
  Antworten mit Zitat      
Moin moin liebes Forum,

ich habe eine GUI mit einem edit Feld.
Ich möchte den Inhalt, eine Integer Zahl, in einer anderen Funktion nutzen ohne die Variable global anzulegen.
Die Waffe der Wahl sind Rückgabewerte der Funktion, richtig?

Mein Ansatz:
Code:

function amp=editboxAmplitude_Callback(hObject, eventdata, handles)
amp=num2str(get(hObject,'String'))
 



Code:
editboxAmplitude_Callback(hObject, eventdata, handles)

sollte doch nun den Inhalt meiner editbox einer Variable zuweisen können.

Aber das hier:
Code:
function btnAmplLastwBest_Callback(hObject, eventdata, handles)
test=editboxAmplitude_Callback(hObject, eventdata, handles)

gibt mir den Inhalt der Beschriftung meines Pushbuttons wieder.

Ich bin hochgradig verwirrt und bitte um Aufklärung.

Lieben Gruß
das Nordlich
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 10.481
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.03.2017, 12:55     Titel: Re: Ein Anfänger arbeitet sich in Pushbuttons und Callbacks
  Antworten mit Zitat      
Hallo Nordlicht,

Callbacks haben keine Rückgabewerte. Wohin sollte der Wert auch zurückgegeben werden?

Code:

function editboxAmplitude_Callback(hObject, eventdata, handles)
handles = guidata(hObject);  % Get current value
handles.amp=num2str(get(hObject,'String'))
guidata(hObject, handles);  % Store updated value


Code:
function btnAmplLastwBest_Callback(hObject, eventdata, handles)
handles = guidata(hObject);
disp(handles.amp)


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Nordlicht
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 08.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2017, 14:32     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für deine Antwort!
Also mit deiner Lösung speichere ich meine Variable in der "Gottstruct" handles von Matlab ab.
Ich würde bei größeren Anwendungen Sorge haben, das ich ähnlich wie bei globalen
Variablen die Übersicht verliere und sich Fehler einschleichen, deren Ursache man nur schwer findet, oder übersehe ich da etwas?
Ist mein Ansatz mit einer Funktion den Wert des Feldes abzufragen bei Matlab unzulässig oder aus anderen Gründen nicht sinnvoll?

Ich habe noch eine kleinere Schwierigkeit und zwar habe ich den Defaultwert des Editfeldes mittels Guide in dem Feld "String" auf einen Zahlenwert gesetzt.
Wenn ich nun direkt, ohne den Defaultwert zu verändern,

Code:

function btnAmplLastwBest_Callback(hObject, eventdata, handles)
handles = guidata(hObject);
disp(handles.amp)
 


ausführe, findet er die Variablen der Callbacks nicht - wie auch sie wurden ja nicht aufgerufen. (Kleine Zwischenfrage: Die Callbacks rufen sich bei Userinteraktion des Feldes automatisch auf, richtig?)
Wie ist nun der eleganteste Weg den Default Wert abzufragen?

Lieben Gruß
euer Nordlich
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.537
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 04.03.2017, 17:46     Titel:
  Antworten mit Zitat      
Hallo,

eine Alternative zum Hinzufügen zu der handles-Struktur ist setappdata / getappdata , siehe auch https://www.mathworks.com/help/matl.....data-among-callbacks.html

Einen "Default-Wert" gibt es in dem Sinn nicht. Der muss wenn selbst erzeugt und abgespeichert werden, z.B. im Feld 'UserData' oder eben in Application Data.

Die Callbacks werden aus der GUI heraus aufgerufen. Selbst aufrufen sollte man sie nur in absoluten Ausnahmefällen, und dann eben mit Übergabe der Variablen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2017 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.