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

Kommunikation über serial port - Problem mit fprintf

 

Janvi
Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 20.05.08
Wohnort: Rom
Version: R2007a
     Beitrag Verfasst am: 08.05.2009, 23:09     Titel:
  Antworten mit Zitat      
ok, dann war das offensichtlich mal ein Fehler im Prolific Treiber der zwischenzeitlich schon andere gestört hat und deshalb behoben ist.

Der Handshake dient als Kontrolle um zu Vermeiden, dass einer der beiden Kommunikationspartner versehentlich eingehende Daten verliert. Hierzu gibt es verschiedene Methoden in HW und SW. Die SW passiert auf Anwendungsebene und das bekannteste Protokoll ist Xon/Xoff für Ascii Daten. Ein etwas komfortableres Protokoll ist RK3964 (ehemals von Siemens erfunden) für Binärdaten mit Datensicherung durch Prüfsummen, Wiederholstrategien usw.

Weil das zum programmieren lästig ist, sieht die V24 auch verschiedene Möglichkeiten vor einen solchen Handshake mit HW Unterstützung zu machen, wo die SW dann gar nix dazu tun muss. Pin 2 und 3 sind die Tx (Transmitt) und Rx (Receive) Leitungen. Eine Tx Ausgang muss auf der Gegenseite immer auf den Rx Eingang gehen und umgekehrt. Daher ein gekreuztes Kabel. Vielleicht aber auch ungekreuzt, denn es kommt drauf an, ob sich ein Endgerät wie etwa dein Theodolit als solches versteht oder ob es so tut als ob es ein "Master" wäre. Für HW Handshake gibt es nun die Steuersignale bzw. Paare mit Ein und Ausgang RTS/CTS und DTR/DSR (Request To Send - usw. einfach googeln). Auch hier haben vollbelegte Kabel immer einen Ausgang auf einen Eingang vom Gegengerät verschaltet, i.d.R. also 3 Signalpaare=6 Leitungen plus Masse auf Pin7.

Der allergrösste Teil der Anwendungen geht aber bereits mit nur einem Signalpaar auf den Datenpins 2+3 und benutzt weder HW noch SW Handshake. Trotzdem kann es sein, daß wenn ein solcher HW pin jetzt versehentlich falsch angeschlossen ist, daß er den UART oder das Ein oder Ausgangsschieberegister per HW blockiert und die SW dann einen timeout kriegt und das Zeichen auf der Leitung elektrisch auch nie erscheint. Linux aktiviert solche Handshake Signal z. Bsp. bereits beim booten bevor die Anwendung losläuft und etwas darauf ausgeben kann, weshalb einige Anwendungen kaum portierbar sind weil das Endgerät bereits einen Blödsinn macht bevor die Anwendung losläuft.

Um das zu kontrollieren besorgst du dir am besten eine 9 pol Min D Stecker und eine Buchse und einen Lötkolben. Dann verbindest du nur in einem Adapter nur die Datenleitungen 2,3 plus Masse 5. Nur so kannst du sicher sein, dass HW handshake tatsächlich nicht benutzt wird, denn einige UARTS können so initialisiert werden, daß die Pegel an diesen Pins ignoriert werden und andere (Prolific?) vielleicht nicht, so daß es mit dem einen geht und mit dem anderen dann nicht. Da ist einfach probieren und nachmessen angesagt. Was ich aber zumindest mal gesehen habe, hat Matlab die Anweisungen zum Ein und Auschalten dieser HW Kontrollpins ebenfalls implementiert (evlt. nur im Kommunikation Toolset)
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2009, 15:25     Titel:
  Antworten mit Zitat      
Hallo,

wollt nur sagen, dass ich noch an dem Problem dran bin ... suche mir grad die nötigen Werkzeuge + jemanden mit Ahnung von Elektrotechnik zusammen.

Melde mich dann wieder, wenn ich so weit bin!
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2009, 15:18     Titel:
  Antworten mit Zitat      
Hallo,

ich habe mein Problem gelöst:

1) neueste Treiber geladen

2) Input Buffer vor dem Senden jedes Befehls leeren (ansonsten bekommt man eventuell die Antwort auf die vorherige Anfrage)

Letzteres war zwar bisher, d.h. bei anderen Geräten/anderem Kabel nicht nötig, aber da es jetzt funktioniert bin ich zufrieden.

Danke für eure Hilfe!

PS:
Was den Hardware Handshake angeht: Es sieht so aus, als ob das Kabel nur Eingang, Ausgang und Ground belegt hätte, aber getestet hab ich das nicht.
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2009, 18:50     Titel:
  Antworten mit Zitat      
kannst du mir sagen wie du den Input Buffer des UART's gelöscht hast?
ich finde leider nirgens angaben dazu

Vielen Dank
Gast
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.