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

Error while evaluating TimerFcn for timer 'timer-117'

 

Tom_matlab
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 29.08.11
Wohnort: München
Version: ---
     Beitrag Verfasst am: 29.08.2011, 17:37     Titel: Timer Problem hObject handles
  Antworten mit Zitat      
Hallo zusammen,

habe ein Problem mit einem Timer, der in einer GUI gestartet wird. Dieser soll alle 4 Sekunden eine Funktion ausführen.

Hintergrundinfo:
Von einem Laserscanner, den ich über ein GUI steuere, kommen kontinuierlich Daten in Form von Textzeilen an. In diesen Zeilen stehen auch Informationen über Distanzen drin, welche ich in meinem GUI regelmäßig (alle 4 sec) mittels timer plotten will.

Hier mein
Code:


function edit_darst_aktual_Callback(hObject, eventdata, handles)
% handles.darst_aktual = get( handles.edit_darst_aktual, 'String' );
% handles.str2 = cell2mat(handles.edit_darst_aktual);
% Speichern des struct handles am GUI-Objekt
% guidata( hObject, handles );
handles = guidata(hObject);

% timer definieren:
handles.t = timer;
set(handles.t,'TimerFcn',{@timercallback, handles}, 'ExecutionMode','fixedSpacing','Period', 4, 'UserData', hObject);

guidata(hObject, handles);

% timer starten:
start(handles.t);

% timer callback function:
function timercallback(obj, event, hObject)
handles=guidata(hObject);

daten = handles.daten;
% plot:
if strcmp('sSN', daten(2:4)) && handles.status ~= 0
  A = strread(daten, '%s');
anz_werte = hex2dec(A(26));

% Winkel:
theta = (hex2dec(A(24))/10000)+85:-(hex2dec(A(25))/10000):(hex2dec(A(24))/10000)+85-((anz_werte-1)*hex2dec(A(25))/10000);
theta = theta.*pi/180;
theta = theta';

% Distanzwerte des Profils:
DISThex = A(27:(hex2dec(A(26))+26));  
DIST = hex2dec(DISThex);
   
% Umrechnung in kartesische Koordinaten:
[y,x] = pol2cart(theta,DIST);

%plot:
axes(handles.axes1);
plot(handles.axes1,y,x,'.');
xlabel(handles.axes1,'Y-Koordinate [mm]')
ylabel(handles.axes1,'X-Koordinate [mm]')
end
 


Funktioniert jedoch nicht. Stattdessen erscheint folgende Fehlermeldung:

??? Error while evaluating TimerFcn for timer 'timer-117'

Error using ==> guidata at 89
H must be the handle to a figure or figure descendent.

Sitze an diesem Problem schon ewig und habe das Forum durchsucht, aber nichts hat funktioniert. Deswegen poste ich nun mein Problem.

Bin für jede Hilfestellung sehr dankbar!!
Tom_matlab
Private Nachricht senden Benutzer-Profile anzeigen
Gesplittet: 30.08.2011, 17:05 Uhr von denny
Von Beitrag TimerFcn hObject aus dem Forum Programmierung


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 30.08.2011, 17:14     Titel:
  Antworten mit Zitat      
Hallo

Dein Fehler liegt einfach darin, dass du bei TimerCallback Definition, statt hObject handles übergibst.
Code:

set(handles.t,'TimerFcn',{@timercallback, hObject}, 'ExecutionMode','fixedSpacing','Period', 4, 'UserData', hObject)
 


Ich bin aber mir nicht sicher, ob die Definition von Timer in Callback gehört.
Es muss ja nur einmal definiert werden, wäre also OpeningFcn wahrscheinlich besser.


PS: Bitte keine Threads vorsetzen, wenn deine Frage nicht an Threadopener gerichtet ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tom_matlab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 29.08.11
Wohnort: München
Version: ---
     Beitrag Verfasst am: 30.08.2011, 17:25     Titel:
  Antworten mit Zitat      
Hallo Denny,

Danke für die Antwort! Hab das Problem, nach weiterer Recherche im Netz, folgendermaßen lösen können:

Code:

function edit_darst_aktual_Callback(hObject, eventdata, handles)
handles.darst_aktual = get( handles.edit_darst_aktual, 'String' );
handles.akt = str2double(handles.darst_aktual);
% Speichern des struct handles am GUI-Objekt
guidata( hObject, handles );
handles = guidata(hObject);
handles.guifig = gcf;

% sofern timer läuft, stoppen:
if strcmp('On', handles.t.running)
    stop(handles.t);
    delete(handles.t);
end

% timer definieren:
handles.t = timer;
set(handles.t,'TimerFcn',{@timercallback, handles.guifig}, ...
                'ExecutionMode','fixedSpacing', ...
                'Period', handles.akt, ...
                'UserData', handles.daten);

guidata(handles.guifig, handles);

% timer starten:
start(handles.t);
guidata(handles.guifig,handles);

% timer callback function:
function timercallback(obj, event, handles)
handles=guidata(handles);

daten = handles.daten;
% plot:
if strcmp('sSN', daten(2:4)) && handles.status ~= 0
  A = strread(daten, '%s');
anz_werte = hex2dec(A(26));

% Winkel:
theta = (hex2dec(A(24))/10000)+85:-(hex2dec(A(25))/10000):(hex2dec(A(24))/10000)+85-((anz_werte-1)*hex2dec(A(25))/10000);
theta = theta.*pi/180;
theta = theta';

% Distanzwerte des Profils:
DISThex = A(27:(hex2dec(A(26))+26));  
DIST = hex2dec(DISThex);
   
% Umrechnung in kartesische Koordinaten:
[y,x] = pol2cart(theta,DIST);

%plot:
axes(handles.axes1);
plot(handles.axes1,y,x,'.');
xlabel(handles.axes1,'Y-Koordinate [mm]')
ylabel(handles.axes1,'X-Koordinate [mm]')
end
 


besten gruß
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.