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

Prüfen, ob COM Schnittstelle bereits geöffnet ist

 

FelixF
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 22.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.09.2013, 11:38     Titel: Prüfen, ob COM Schnittstelle bereits geöffnet ist
  Antworten mit Zitat      
Hallo all beisammen,
ich habe ein GUI welches einen Motor steuert. Der Datenaustausch erfolgt über einen COM-Port.
Die Verbindung funktioniert problemlos, die Daten werden auch übertragen. Allerdings habe ich das Problem, dass ich manchmal die Fehlermeldung bekommen, dass der Port noch offen sei, obwohl ich ihn eigentlich geschlossen habe.
Daher meine Frage, ob es möglich ist, zu überprüfen, dass der Port noch offen ist bzw. schon geschlossen ist. Wenn ja, wie kann ich das anstellen?

Grüße und ein Dankeschön
Felix
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.09.2013, 10:09     Titel:
  Antworten mit Zitat      
Hallo,

mit welchen Befehlen öffnest / schließt du den Port denn?

Zitat:
dass der Port noch offen sei, obwohl ich ihn eigentlich geschlossen habe.

Dann eben vermutlich nur "eigentlich" ;) Versuch doch mal, Schritte zu finden, die das Verhalten klar reproduzieren. Dann setz mal einen Haltepunkt an die Stelle, an der der Port geschlossen wird, und führe diese Schritte nochmal aus. Vielleicht wird der Haltepunkt gar nicht erreicht, und dann müsstest sehen, warum der Programmablauf nicht so ist wie von dir gedacht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
FelixF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 22.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2013, 22:21     Titel:
  Antworten mit Zitat      
Danke für deinen Hinweis mit den Haltepunkten. Ich bin erst neu in Matlab eingestiegen und kannte sowas mit Haltepunkten aus PHP noch nicht. So habe ich gesehen, dass eine if-Bedingung nicht gegriffen hatte, wo ich dachte, dass sie greift.

Auf den Port greife ich wie folgt zu (auf das aller wesentliche verkürzt)

Code:

seriel(com,'com1')
fopen(com)
 


Ich habe außerdem noch eine Methode gefunden, wie ich prüfen kann, ob der Port geöffnet ist.

Code:
com.Status


...liefert mit 'on' bzw. 'off' zurück. Nur weiß ich jetzt leider nicht, ob das allgemein gülitg ist, oder nur speziell auf meinen Fall passt.

Grüße Felix
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.09.2013, 22:33     Titel:
  Antworten mit Zitat      
Hallo,

http://www.mathworks.com/help/matlab/matlab_external/status.html
Ich hätte an sich erwartet, dass es 'open' oder 'closed' zurückgibt.

Geschlossen wird der Port vermutlich mit fclose? Vielleicht kannst du die Sache mit der if-Abfrage korrigieren.

Im Zweifelsfall kannst du auch eine CloseRequestFcn machen, in der in einem try-catch versucht wird, den Port zu schließen. Wenn das nicht klappt, weil er schon geschlossen ist, macht's dann auch nichts.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
FelixF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 22.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2013, 13:15     Titel:
  Antworten mit Zitat      
Ich habe Unsinn erzählt! Natürlich bekomme ich open und closed als Rückgabewert zurück.

Ja genau, schließen tue ich es mit fclose.

Ich habe es jetzt hinbekommen, dass Problem durch eine if Bedingung und Abfrage des Status den Port zu überprüfen.

Mit der CloseRequestFcn werde ich mich noch einmal genauer auseinander setzen, wenn ich Matlab ein bisschen besser verstanden habe Smile

Danke
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.