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

Timer programmieren

 

Haselnuss

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2008, 14:00     Titel: Timer programmieren
  Antworten mit Zitat      
Hallo,
ich möchte mit einem Timer Daten Auslesen. Dazu habe ich den Timer wie folgt prgrammiert

Tim = timer('TimerFcn',@DatenLesen,'TimerFcn',@DatenSchreiben 'Period', delta_t ,'TaskToExecute', Trigger);

Die Funktionen sind M-Files und sehen wie folgt aus

function [out] = DatenLesen
out = getvalue(di0);
end


UND

function [B,b] = DatenSchreiben (out)
@Versuchsstand;
b=get(timer,'AveragePeriod');
B(b)=out;
end


die Funktionen ruft er allerdings gar nicht auf. Kann mir jemand weiterhelfe

Besten Dank und Grüße.


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2008, 14:41     Titel:
  Antworten mit Zitat      
Das habe ich jetzt hinbekommen, allerdingds bekomme ich nun die Fehlermeldung

Too many inputarguments in DatenLesen.

Weiß jemand was ich tun muss?
Für Hilfe wäre ich wirklich dankbar.
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 03.04.2008, 14:50     Titel:
  Antworten mit Zitat      
Moin,

sofern du nicht etwas vergessen hast, liegt es an dieser Zeile:
Code:
function [out] = DatenLesen

Du definierst hier einen output aber keinen Input für die Funktion!

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 03.04.2008, 15:39     Titel:
  Antworten mit Zitat      
wird der Timer-Callback per ein Functions Handle aufgerufen, so werden immer 2 InputParameter übergeben. Der erster ist der Timer-Handle und der zweiter EventData.

1.
Deine Functionsdeklaration sollte also stehts wie folgt ausschauen
Code:

function DatenLesen(hTimer,data)
function DatenSchreiben(hTimer,data)
 


2.
Die Output-Parameter haben keine Bedeutung, den der TimerCallback wird aus dem Objekt generiert und nicht durch Deine Funktion aufgerufen in der Du dann auf den Output wartest. Wenn Du die Daten zwischen den Callbacks austauschen willst, kannst Du das über die "UserData"-Eigenschaft des Timer-Objekts tun
Code:

function DatenLesen(hTimer,data)
% daten auslesen
mydata = ....
% im UserData ablegen
set(hTimer,'UserData',mydata)
 


mit get(hTimer,'UserData') können diese dann ausgelsen werden.

3.
diese Zeile wird Dir die Fehlermeldung über eine fehlende Variable "di0" ausgeben:
Code:
out = getvalue(di0);


Schaue in der Dokumentation nach Timer-Beispielen und versuche diesen besser nachzuvollziehen.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Haselnuss

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2008, 10:58     Titel:
  Antworten mit Zitat      
Zunächst mal vielen Dank.

Mit
out= getvalue(di0)

lese ich meinen digitalen Eingang aus, das kann doch dann so bleiben oder?

function DatenLesen(hTimer,data)

Mit hTimer ist der Timer gemeint, ok. Aber was ist mit data gemeint, die Daten die ich lesen will, dind eigenlich meine out.

die Demos finde ich leider nicht Sad
 
Haselnuss

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2008, 13:54     Titel: aktueller Stand
  Antworten mit Zitat      
Hallo noch mal,

leider bin ich noch nicht weiter.
Meine DatenLesen function sieht nun wie folgt aus

function [out] = DatenLesen (Tim)
di0 = digitalio ('dtol',0);
line1 = addline(di0 ,0 , 'in');
out=getvalue(di0);
set(Tim,'UserData',out);
end


und die Fehlermeldung lautete immer noch:

too many input arguments >> DatenLesen

Wäre schön, wenn jemand einen Ratschlag für mich hätte.

Grüße und besten Dank im Voraus.
 
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 - 2024 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.