function motor_Run_Timer(T, event) global pin_richtung
global richtung
global pin_takt
switch(event.Type) case 'StartFcn'
% Drehrichtung setzen (dauerhaft high oder low)
putvalue(pin_richtung, richtung);
disp('Timer gestartet') case 'TimerFcn'
% Motorbewegung
putvalue(pin_takt, 1)% Takt setzen, high pause(0.001)
putvalue(pin_takt, 0)% Takt setzen, low pause(0.001) disp(T.TasksExecuted) case 'StopFcn'
stop(T) disp('Timer beendet') end
Derzeit mache ich es mit globalen Variablen, aber das möchte ich gern ändern. Ich möchte beispielsweise von außen die 'TasksToExecute' als Variable reingeben, z. B. so:
Code:
function T = motor_Timer(varargin, schritte) % Timer vorbereiten
T = timer(...
'Name' , 'Timer1',...
'Tag' , 'Motor',...
'Period', 0.001,...
'ExecutionMode', 'fixedDelay',...
'TasksToExecute', schritte,...
'TimerFcn' , {@motor_Run_Timer},...
'StartFcn' , {@motor_Run_Timer},...
'StopFcn' , {@motor_Run_Timer});
% % Timer starten
start(T)
Verfasst am: 03.07.2017, 21:25
Titel: Re: Variablen in Timer übergeben
Hallo pfeili,
Du erstellst den Timer zwar in einem Callback, das muss aber nicht so sein. hObject und EventData werden dazu ja gar nicht benötigt, oder? Dann schreibe doch eine eigenstädnige Funktion dafür:
Code:
function T = CreateTimer(schritte) % Timer vorbereiten
T = timer(...
'Name' , 'Timer1',...
'Tag' , 'Motor',...
'Period', 0.001,...
'ExecutionMode', 'fixedDelay',...
'TasksToExecute', schritte,...
'TimerFcn' , {@motor_Run_Timer},...
'StartFcn' , {@motor_Run_Timer},...
'StopFcn' , {@motor_Run_Timer});
% % Timer starten
start(T)
varargin
muss in der Definition der Funktion in den Inputs stehen. Das kann man nicht einfach als "Dummy-Inputs" beim Aufruf einer Funktion verwenden.
Zitat:
Attempt to execute SCRIPT varargin as a function:
Woher diese Medlung stammt, ist mir jedoch nicht klar. Vielleicht ist
"D:\Matlab2012\toolbox\matlab\lang\" der aktuelle Ordner? Das sollte man unbedingt vermeiden: Niemals ein
cd
in einen Toolbox-Ordner von Matlab!
Gruß, Jan
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
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.