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

Serielle Verbindung durch eine weitere Funktion öffnen

 

honesta
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.09.2015, 19:50     Titel: Serielle Verbindung durch eine weitere Funktion öffnen
  Antworten mit Zitat      
Grüße an alle!

Nun habe ich auch mal eine Frage:

Ich möche eine serielle Verbindung durch eine zusätzliche Funktion erstellen/öffnen, mit der ich dann von meinem aufrufenden "Hauptprogramm" weiterarbeite.

Mit einem m-File funktioniert es und ich mache es wie folgt:

Code:
if ~isempty(instrfind)
   fclose(instrfind)
end
 
s=serial('COM4');
set(s,'BaudRate',115200);
set(s,'DataBits',8);
set(s,'Parity','none');
set(s,'StopBits',1);
set(s,'ReadAsyncMode','continuous');
set(s,'Terminator','CR');
set(s,'InputBuffersize',8000);
set(s,'TimeOut', 4);

fopen(s);

fwrite(s, ['*idn?' char(13)]);
disp(fgetl(s));

fclose(s)


Ich habe eine ganze Menge Programme/m-Files, mit denen ich mit meinem SCPI-Gerät bidirektional kommuniziere. Nun möchte ich einige oft wiederkehrende Funktionen auslagern wie z.B. das Erstellen/Öffnen der seriellen Verbindung. Ich möchte es wie in den nachfolgenden zwei Listings splitten, doch leider klappt es nicht.

Code:
%hauptprogramm.m

open_s()

fwrite(s, ['*idn?' char(13)]);
disp(fgetl(s));

fclose(s)


Code:
%function open_s.m

function open_s()

if ~isempty(instrfind)
   fclose(instrfind)
end
 
s=serial('COM4');
set(s,'BaudRate',115200);
set(s,'DataBits',8);
set(s,'Parity','none');
set(s,'StopBits',1);
set(s,'ReadAsyncMode','continuous');
set(s,'Terminator','CR');
set(s,'InputBuffersize',8000);
set(s,'TimeOut', 4);

fopen(s)


Nach dem Ausführen von hauptprogramm.m bekomme ich folgende Fehlermeldung: "Undefined function or variable 's'." und die Zeile "fwrite(s, ['*idn?' char(13)]);" wird nicht ausgeführt.

Hat jemand eine Idee? Ich habe schon etliche deutsch- und englisch-sprachige Foren und die Matlab-Hilfen durchsucht...ohne Erfolg!
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 24.09.2015, 00:10     Titel:
  Antworten mit Zitat      
jede funktion hat ihren eigenen variablen raum. wenn du werte nicht zurück giebst sind sie auch nicht in der übergeordneten funktion bekannt. du kannst sie also entweder zurück geben oder versuchen mit globalen variablen zu arbeiten. das würde ich aber nur im notfall machen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
honesta
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2015, 09:23     Titel:
  Antworten mit Zitat      
Ach verdammt! Ja, mit dem Zusatz
Code:

in jedem m-File hat es wirklich funktioniert! Ich habe zwar auch schon an globale Variablen gedacht, hätte aber nicht vermutet, dass die Lösung doch so einfach wäre -.-
Vlt sollte ich die Fehlermeldungen in Zukunft ernster nehmen...

Merci Winkow
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.