09.02.2007, 13:42
Hallo, Silence
hier ein Paar Hinweise und eine Nachfrage:
Erstens:
Auch in LV gilt: Styleguide beachten. Dazu gehören (nach Möglichkeit) gerade Datenflusslinien. Linien, die hinter einem Element ums Eck gehen, sind ganz "unleserlich" und können in jedem Fall vermieden werden. Selbst rückwärts führende Linien sind sehr gewöhnungsbedürftig. Entweder das Diagramm in die Breite zeihen oder besser SubVIs benutzen.
Zweitens:
Ein Timeout tritt immer nur dann ein, wenn die entsprechende Funktion auf etwas wartet. Wenn also beim Senden ein Timeout eintritt, so nur dann, wenn das Senden eben temporär verboten ist - z.B. weil die Gegenseite kein XOn gesendet hat (respektive weil der Sender auf das XOn wartet). Beim Empfangen kann ein Timeout dann eintreten, wenn z.B. eine gewisse Menge Daten erwartet werden, diese Anzahl aber in der vorgegeben Zeit nicht hereinkommt. Wenn alles richtig geht, kannst du für Timeout einstellen was du willst (500ms oder 10 Sekunden), es hat (für gewöhnlich) keine Auswirkung.
Drittens:
Bist du sicher, dass das mit 0xFF und 0xEE als XOn/XOff-Handshake gedacht ist? XOn/XOff-Handshake ist eigentlich definiert. Hierfür gibt es zwei entsprechende ASCII-Zeichen. Was du da machst sieht sehr nach einer Blockübertragen mit einem Blockstartzeichen (0xFF) und einem Blockendezeichen (eben 0xEE) aus. Liege ich mit einer Blockübertragung tatsächlich falsch?
Viertens:
Mach alle Warte-VIs in den Case-Strukturen etc heraus. Ein Warte-VI mit z.B. 10ms gehört (standardmäßig, da gibt es natürlich applikationsspezifische Besonderheiten) in die außere While-Schleife. Ein Warte-VI beeinträchtigt im Normalfall den Empfang über die Serielle Schnittstelle nicht. VISA hat hier nämlich Puffercharakter.
hier ein Paar Hinweise und eine Nachfrage:
Erstens:
Auch in LV gilt: Styleguide beachten. Dazu gehören (nach Möglichkeit) gerade Datenflusslinien. Linien, die hinter einem Element ums Eck gehen, sind ganz "unleserlich" und können in jedem Fall vermieden werden. Selbst rückwärts führende Linien sind sehr gewöhnungsbedürftig. Entweder das Diagramm in die Breite zeihen oder besser SubVIs benutzen.
Zweitens:
Ein Timeout tritt immer nur dann ein, wenn die entsprechende Funktion auf etwas wartet. Wenn also beim Senden ein Timeout eintritt, so nur dann, wenn das Senden eben temporär verboten ist - z.B. weil die Gegenseite kein XOn gesendet hat (respektive weil der Sender auf das XOn wartet). Beim Empfangen kann ein Timeout dann eintreten, wenn z.B. eine gewisse Menge Daten erwartet werden, diese Anzahl aber in der vorgegeben Zeit nicht hereinkommt. Wenn alles richtig geht, kannst du für Timeout einstellen was du willst (500ms oder 10 Sekunden), es hat (für gewöhnlich) keine Auswirkung.
Drittens:
Bist du sicher, dass das mit 0xFF und 0xEE als XOn/XOff-Handshake gedacht ist? XOn/XOff-Handshake ist eigentlich definiert. Hierfür gibt es zwei entsprechende ASCII-Zeichen. Was du da machst sieht sehr nach einer Blockübertragen mit einem Blockstartzeichen (0xFF) und einem Blockendezeichen (eben 0xEE) aus. Liege ich mit einer Blockübertragung tatsächlich falsch?
Viertens:
Mach alle Warte-VIs in den Case-Strukturen etc heraus. Ein Warte-VI mit z.B. 10ms gehört (standardmäßig, da gibt es natürlich applikationsspezifische Besonderheiten) in die außere While-Schleife. Ein Warte-VI beeinträchtigt im Normalfall den Empfang über die Serielle Schnittstelle nicht. VISA hat hier nämlich Puffercharakter.