WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Übergabe von GUI für Weitervearbeitung in M-File klappt ni

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2012, 14:03     Titel: Übergabe von GUI für Weitervearbeitung in M-File klappt ni
  Antworten mit Zitat      
Hallo Leute,

ich bin in der Programmierung von GUI's noch in den Babyschuhen, habt also bitte ein bisschen Nachsicht. Ich hab jezt schon sehr lang im Forum gestöbert, aber das gefundene, hilft mir leider immer noch nicht so richtig weiter =( vlt. setz ich es auch nur falsch um. k.A. Sad

Zu meinem Problem:
Ich versuche ein Programm zu schreiben, bei dem der User ein Ordner auswählt, in dem Files enthalten sind. (das klappt wunderbar) Ist nur eine Messung enthalten, gibt der das auch super aus und läuft auch ohne Probleme weiter. Sind mehrere enthalten, soll der User ein File auswählen dürfen und die Zahl eingeben. (das Problem hab ich jetzt anders gelöst) Arbeite hier jetzt mit uigetfile. Ist auch vlt. hier an der Stelle besser so.

Steh aber jetzt bei einer weiteren Eingabe vor dem erneuten Probelm.
Also man soll auswählen können, welche Frequenz man nehmen möchte, die eingeben, oder am Besten über einen Slider festlegen. Nu weiß ich aber nich, wie ich das mit dem Slider in meinem m-file hinbekomm. Hab angefangen, dass so zu schreiben

Code:
%
   figure('Units','points','Position',[100 100 200 200], ...
        'NumberTitle','off','Name','Wahl der Freqeunz', ...
        'MenuBar','none');
    uicontrol('Style','text','Position',[20 100 200 100],'FontSize',12,...
        'String',['Bitte geben Sie die Frequenz in Hz ein, mit der Sie die Daten auswerten wollen. Sie muss zwischen 10000 und 50000 Hz liegen!']);
    uicontrol('Style','edit','Position',[20 80 50 50],'String','1')
    uicontrol('Style', 'pushbutton', 'String', 'OK','Position', [150 20 40 20],...
        'Callback', 'close(gcbf)');
    uiwait;
 


jetzt weiß ich aber nich, wie ich an die eingegebene Frequenz rankomm.
Ich weiß, dass man GUIs auch mit guide erstellen kann, aber dann weiß ich wieder nicht, wie ich dass in meinem m-file einbinde. Embarassed

Kann mir jemand helfen? Ist vlt. was ganz einfaches, aber ich komm einfach nich drauf =(

Dank schon mal im Voraus


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2012, 16:28     Titel:
  Antworten mit Zitat      
Hallo,

wichtig ist, dass du dir von den Elementen auch Handles zurückgibst.
Code:
sHandle = uicontrol('style', 'slider', ...)


Dann kannst du später mit einem Callback die benötigten Daten abfragen
Code:
get(sHandle, 'Value')


Auch mit GUIDE ginge das ganze: du baust den Aufruf der GUI in deinen Code ein und setzt ein uiwait, damit auf deine Eingaben gewartet wird. Wenn diese abgeschlossen sind, setzt du uiresume und kannst weitermachen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2012, 08:31     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Antwort. Also wenn ichd as richtig verstehe, muss der Code dann für den Slider so aussehen

Code:

sHandle=uicontrol('Style','slider','Min',10000,'Max',50000,...
          'Value',100000,'SliderStep',[1 1])
 


und dann zum Abrufen
Code:

inp = get(sHandle,'Value');
 


Ist das soweit richtig? Ich kann aber leider keine Frequenz einstellen, also bei dem Slider. Ich bekomm jetzt aber ne Fehlermeldung =(
Code:

sHandle =

    2.0033

Warning: slider control can not have a Value outside of Min/Max
range
Control will not be rendered until all of its parameter values are
valid
> In uiwait at 72
In test at 115
 


Was genau bedeutet diese Fehlermeldung und wie bekomm ich das hin?
Ich hätt z.B. auch gern, dass nur alle 100 Frequenzen gehen, aber wenn ich als SliderStep 100 eingebe bekomm ich auch ne Fehlermeldung. Und warum hat sHandle so nen komischen Wert?
Ich brauch sicherlich auch einen Vektor, in die die ganzen möglichen Sliderwerte enthalten sind, oder? Heißt der dann Value?
Ich danke im voraus für eure Antworten.
Danke
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.11.2012, 08:54     Titel:
  Antworten mit Zitat      
Hallo,

es schadet sicher nichts, auch mal in die Dokumentation zu schauen um zu sehen, ob die Fragen dort beantwortet werden.

Viel deutlicher kann die Warnung doch nicht sein?
Min ist der Wert, den der Slider annimmt, wenn er ganz links steht, und Max der Wert, den der Slider annimmt, wenn er ganz rechts steht. Value ist der Wert, den der Slider momentan (hier also als Initialisierung) annimmt. Dieser Wert muss aber dann naheliegenderweise zwischen Min und Max liegen, und das ist bei dir nicht der Fall.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2012, 08:59     Titel:
  Antworten mit Zitat      
Ok, zwei Sachen schon selber rausgefunden.
bei dem Startwert vom Slider war eine Null zu viel (peinlich, peinlich)
und die Grenzen sind in Prozent. Wenn ich mich nicht total verrechnet hab, müsste ich dann ja 0.0025 wählen (damit es 100er Schritte sind).
Aber warum sind das zwei Grenzen?

Und wie kann ich mir die eingestellte Frequenz anzeigen lassen. Muss ja dafür noch nen text fenster dranhängen. Braucht das dann nen andern Namen?
Hab noch ma das verbesserte dran gehangen

Code:

sHandle=uicontrol('Style','slider','Position', [20 50 200 50],'Min',10000,'Max',50000,...
          'Value',10000,'SliderStep',[0.0025 0.0025])
    frq=uicontrol('Style','text','Position',[20 30 200 100],'FontSize',12,...
        'String','10000');
    frequ = get(sHandle,'Value');
    set(frq,'String',num2str(frequ));
 
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.11.2012, 10:34     Titel:
  Antworten mit Zitat      
Hallo,
Zitat:
Aber warum sind das zwei Grenzen?

Was sind zwei Grenzen?
Wenn Du den SliderStep meinst, ist dies in der Dokumentation erklärt: Der eine Wert betrifft das Klicken auf die kleinen Dreiecke, der andere das Klicken in den Berecih des Sliders.
Gruß, Jan
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.