INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

RS-232 Software Handshake



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

01.07.2011, 18:58 (Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2011 19:06 von Lucki.)
Beitrag #2

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: RS-232 Software Handshake
(01.07.2011 17:38 )Just Me schrieb:  Wenn ich nach jedem Befehl ein Delay von 50 ms einbaue, funktioniert alles einwandfrei, aber ich frage mich, ob das eigntlich nicht auch so gehen müsste und labview sich darum kümmern sollte, wenn der Handshake aktiv ist?
Du liegst hier ganz falsch. Das Handshake ist nicht dazu da, das Frage-Antwortspiel der Kommando/Antwortsequenzen zu synchronisieren, sondern einzig dazu, den Überlauf der beidseitigen Empfangspuffer zu verhindern. Der Empfangspuffer auf Labview-Seite könnte z.B 4 kByte groß sein. Wenn die Gegenstelle sendet, Labview aber längere Zeit am Empfang verhindert ist, dann sendet Labview bei drohendem Empfangspuffer-Überlauf mit Xoff eine höfliche Bitte an die Gegenstelle, vorerst nicht weiter zu senden.
Ich führe das jetzt nicht weiter aus, nur so viel: bei Deinen paar Bytes kommt Xon/Xoff nie zum Einsatz, Wahrscheinlich wird ohne die Xon/Xoff Konfiguration alles genau so funktionieren.
Bei Dir liegt dieser Fehler vor: Du synchronisierst überaupt nicht, sondern willst Null µs nach Senden eines Kommandos sofort wissen, wie viele Bytes angekommen sind (das sind 0 oder höchstesn 1 Byte) und liest das aus, ohne das Ende der Nachricht abzuwarten.
Es kommt aber darauf an, erst zu lesen, wenn die vollständige Nachricht im Empfangspuffer ist.
Und in einem hast Du Recht: 50ms warten funktioniert zwar, es ist aber nicht die feine Art.
Sondern so: In der Regel endet eine Nachricht mit einem Endezeichen (z.B CR).
In der Konfiguration ist standardmäßig Endterm mit x0A aktiviert.
Alles was Du ändern muß ist: An den Input "Anzahl bytes zu lesen" einen hohen Wert anzuschließen. Also z.B 100 bytes, wenn Du maximal 50 erwartest. Das Read VI wartet nicht bis zu dieser Anzahl, sondern wartet und liest die ganze Nachricht aus, sowie ein CR eintrifft. Das nenne ich ideales Syncronisieren, im Gegensatz zum Einfügen von Wait.
Zu Deiner Entlastung aber sei gesagt: mit der überflüssigen, fehlerhaften Verwendung der Funktion Bytes im Puffer fangen sie hier im Forum fast alle an..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RS-232 Software Handshake - Just Me - 01.07.2011, 17:38
RE: RS-232 Software Handshake - Lucki - 01.07.2011 18:58
RE: RS-232 Software Handshake - Just Me - 04.07.2011, 11:32
RE: RS-232 Software Handshake - Lucki - 04.07.2011, 12:27
RE: RS-232 Software Handshake - Takuro - 04.07.2011, 13:57
RE: RS-232 Software Handshake - Just Me - 08.07.2011, 11:10

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Software Timer Gottimp 3 4.168 16.03.2021 16:23
Letzter Beitrag: Gottimp
  PCI6221 und Software PWM senmeis 2 4.439 16.07.2010 15:17
Letzter Beitrag: jg
  RS232 direkt ansteuern (Handshake selber programmieren) Ranseier 10 13.052 05.07.2006 09:24
Letzter Beitrag: Ranseier

Gehe zu: