|
Eric |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.07.2009, 20:33
Titel: while break
|
 |
Hallo, hab mir zur ansteuerung eines messgerätes eine dll programmiert und in matlab eingebunden, jetzt will ich eine funktion read_data in einer endlosschleife aufrufen, ich hab dann noch eine gui mit zwei buttons erstellt, messung start/stop . ich will sozusagen in der while schleife noch eine if anweisung realiesieren. Bsp.:
i wird auf 1 gesetzt, wenn button Messung stop gedrückt wurde. Leider funktioniert das nich so ganz. weiss einer wie man das Lösen könnte.[/code]
|
|
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2009, 10:39
Titel:
|
 |
hab es jetzt gelöst indem ich in meiner bei messung beenden den socket schliesse und dann bekomme ich 0 zurück in meiner readdata funktion.
musste aber damit ich auf der gui den messung beenden button drücken kann eine pause in meiner whileschleife einbauen.
dazu hätte ich noch ne frage bis wieviel sekunden wird die pause finktion unterstützt, hab einfach mal pause(0.0000000000000000001) eingegeben. es geht zwar aber nun weiss ich nicht ob pause wirklich nur so kurz wartet oder ob ein standardwert gesetzt wird, so wie 0.01, wenn man einen zu kleinen wert übergeben hat. hab leider in der hilfe keine genaue aussage gefunden
|
|
|
Diddy |

Forum-Fortgeschrittener
|
 |
Beiträge: 61
|
 |
|
 |
Anmeldedatum: 02.08.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2009a
|
 |
|
|
 |
|
Verfasst am: 14.07.2009, 14:34
Titel:
|
 |
Hallo!
Also ich löse das immer so:
Also einfach die Abfrage, ob der Button gedrückt wurde, wenn ja, dann aus der Schleife raus gehen. Das imo schöner als dieses break.
Gruß,
Christian
|
|
|
Diddy |

Forum-Fortgeschrittener
|
 |
Beiträge: 61
|
 |
|
 |
Anmeldedatum: 02.08.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2009a
|
 |
|
|
 |
|
Verfasst am: 14.07.2009, 14:40
Titel:
|
 |
Anonymous hat Folgendes geschrieben: |
dazu hätte ich noch ne frage bis wieviel sekunden wird die pause finktion unterstützt, hab einfach mal pause(0.0000000000000000001) eingegeben. es geht zwar aber nun weiss ich nicht ob pause wirklich nur so kurz wartet oder ob ein standardwert gesetzt wird, so wie 0.01, wenn man einen zu kleinen wert übergeben hat. hab leider in der hilfe keine genaue aussage gefunden |
also die Pausenzeit kann nicht minimal gestzt werden, allein schon, weil der Aufruf der Funktion "pause" eine gewisse Zeit braucht. Ich denke aber, dass das Minimum bei 10ms liegt. Das ist aber bestimmt wieder PC-Abhängig.
Probier doch mal das hier:
Das tic-toc braucht zwar auch seine Zeit, aber das sind bei mir 1,3e-5 Sekunden (und ich hab nicht den schnellsten PC)
|
|
|
Titus |

Forum-Meister
|
 |
Beiträge: 871
|
 |
|
 |
Anmeldedatum: 19.07.07
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2009, 16:31
Titel:
|
 |
Hallo,
anstatt pause() kann man auch einfach drawnow() verwenden. Es macht das selbe: es unterbricht den aktuellen code, um die Event-Queue abzuarbeiten, damit (wie bei Dir) der Button-Callback auch ausgeführt wird ...
Titus
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2009, 21:44
Titel:
|
 |
gut danke, ich werde die verschiedenen Möglichkeiten mal ausprobieren. das mit dem while get..... hatte ich schon probiert, hat bei mir leider nicht funktioniert, der hat einfach die Schleife immer weiter abgearbeitet.
drawnow klingt ganz gut.
also dann, en schönen Abend noch
|
|
|
Diddy |

Forum-Fortgeschrittener
|
 |
Beiträge: 61
|
 |
|
 |
Anmeldedatum: 02.08.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2009a
|
 |
|
|
 |
|
Verfasst am: 15.07.2009, 08:31
Titel:
|
 |
Hi,
Anonymous hat Folgendes geschrieben: |
gut danke, ich werde die verschiedenen Möglichkeiten mal ausprobieren. das mit dem while get..... hatte ich schon probiert, hat bei mir leider nicht funktioniert, der hat einfach die Schleife immer weiter abgearbeitet.
drawnow klingt ganz gut.
|
Ähm ja, hatte ich vergessen zu sagen: man braucht eine kurze pause, damit die abfrage mit get funktioniert.
|
|
|
HasanK |

Forum-Anfänger
|
 |
Beiträge: 29
|
 |
|
 |
Anmeldedatum: 23.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2009, 10:45
Titel:
|
 |
Hallo zusammen,
habe ein ähnliches Problem und stelle mich wahrscheinlich ziemlich blöd an.
anbei poste ich die vereinfachte Darstellung:
function start_Callback(hObject, eventdata, handles)
j1=1
while j1<2;
account=account+1
function stop_Callback(hObject, eventdata, handles)
j1=2;
end
ich möchte ganz einfach mit einem Start-Button eine Prozedur starten (am besten eine Endlosschleife)
und anschließend diese Prozedur mit dem Betätigen eines Stop Buttons beenden.
Den Vorschlag von Diddy habe ich erfolglos versucht.
Vielen Dank im Voraus.
Hasan
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 13.08.2009, 11:11
Titel:
|
 |
Hallo,
das ist wirklich sehr vereinfacht,
zu was gehört denn end?
Die Variable j1, die du als Stopper benutzt,
ist eine Lokale Variable.
Es existiert nur in der Funktion, wo es deklariert wurde, und nur diese Funktion kennt sie.
Sozusagen j1 in Start-Funktion ist nicht gleich j1 in Stop-Funktion.
Du muss globale variablen benutzen, wie z.b. handles
Nach Diddy's Vorschlag könnte es so aussehen
|
|
|
HasanK |

Forum-Anfänger
|
 |
Beiträge: 29
|
 |
|
 |
Anmeldedatum: 23.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2009, 12:11
Titel:
|
 |
Vielen Dank für deine schnelle Antwort Denny,
aber leider hat das nicht funktioniert.
|
|
|
Diddy |

Forum-Fortgeschrittener
|
 |
Beiträge: 61
|
 |
|
 |
Anmeldedatum: 02.08.07
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2009a
|
 |
|
|
 |
|
Verfasst am: 13.08.2009, 12:45
Titel:
|
 |
Hi,
hast du eine pause eingebaut? Brauch nur ganz kurz zu sein. Oder drawnow, das geht auch.
Gruß,
Christian
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|