19.11.2008, 13:55
Beitrag #2
|
|
|
19.11.2008, 14:01
Beitrag #3
|
ThomasDipl
LVF-Gelegenheitsschreiber
Beiträge: 54
Registriert seit: Oct 2008
8.5
-
de
85375
Deutschland
|
visa write; visa read zeitgesteuert
Servus Achim,
ich hab am Serial Port Monitor gelauscht! Den ersten Case macht er sauber. Den zweiten und den dritten zusammen, und danach den vierten, fünften, sechsten und siebten zusammen.
|
|
|
19.11.2008, 14:07
(Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2008 14:09 von jg.)
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
visa write; visa read zeitgesteuert
Das die Cases zusammen ausgeführt werden, kann gar nicht sein, da wird dein Serial Port Monitor zu langsam sein, denn du hast in den Cases 0-6 schließlich eine Wartezeit von Null drinstehen:
Was ist eigentlich jeweils die Antwort, die du erwartest? Du testest dies momentan nur in einem Case, ansonsten langt es die offenbar, wenn du schon ein beliebiges Zeichen bzw. sogar gar kein Zeichen als Antwort erhältst.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
19.11.2008, 14:19
Beitrag #5
|
ThomasDipl
LVF-Gelegenheitsschreiber
Beiträge: 54
Registriert seit: Oct 2008
8.5
-
de
85375
Deutschland
|
visa write; visa read zeitgesteuert
Case 0-6 bekommt er jeweils die gleiche Antwort. Deshalb kann ich die ohne Wartezeit ausführen! Danach kommt der Einwahlvorgang auf den eine ganz bestimmte Antwort kommt. Falls das Modem correct verbunden ist, folgen die restlichen Cases für das aktivieren der Steuerung. Und falls diese nicht genau nacheinander abgearbeitet werden, bekomme ich keine Daten. Und das ist leider ab und zu der Fall. Wie gesagt, ab und zu funktioniert´s und ab und zu eben nicht. Jeweils mit dem selben vi.
|
|
|
19.11.2008, 15:36
Beitrag #6
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
visa write; visa read zeitgesteuert
' schrieb:Case 0-6 bekommt er jeweils die gleiche Antwort. Deshalb kann ich die ohne Wartezeit ausführen!
So funktioniert das nicht.
Das "Senden" funktioniert so, daß die Bytes in den Sendepuffer geschoben werden, von wo aus dann mit irgendeinen windowseigenen Slave-Prozess die Serielle Leitung bedient wird. Das VI "Senden" hat keine Wartezeit.
Wenn Du danach sofort abfragst, wieviele Bytes im Empfangsbuffer sind, ist die Antwort immer Null, denn die Gegensstelle hat zu diesem Zeitpunkt noch nicht einmal die Nachricht bekommen, daß sie etwas senden soll.
Das machst Du sieben Mal hintereinader so.
Wenn dann einmmal eine Wartezeit kommt und sich Gelgenheit bietet, daß sich im Empfangspuffer etwas ansammeln kann, dann sind es garantiert nicht die gewünschten Bytes auf Grund er Anfrage beim letzten Senden, sondern irgendetwas ganz anderes. Was es ist ist, laßt sich schwer sagen, denn was weiß ich wie die Gegenstelle reagiert, wenn Du sieben Mal umittelber hintereinander etwas sendest ohne die Antworten abzuwarten. Vermutlich hat sie davon einen Hustenanfall bekommen.
Ganz und gar abwegig ist Deine Vermutung, daß das Warte-VI nicht richtig funktioniert.
Du solltest als Diagnose an alle Leitungen "Bytes im Buffer" Anzeigen oder Sonden anschließen, und nachschauen, ob überall die richtigen Bytes empfangen wurden, auch wenn Dich diese Bytes letztlich nicht interessieren.
|
|
|
19.11.2008, 16:01
Beitrag #7
|
ThomasDipl
LVF-Gelegenheitsschreiber
Beiträge: 54
Registriert seit: Oct 2008
8.5
-
de
85375
Deutschland
|
visa write; visa read zeitgesteuert
Lucki, genau diese Zeit brauche ich als Verzögerung!!! Senden, Empfangen und dann, erst wenn die gewünschten Bytes empfangen wurden die nächsten wieder senden!!! Wie funktioniert denn die Diagnose? Genau so eine Möglcihkeit suche ich, welche visa read abwartet und erst anschl. das nächste visa write betätigt.
|
|
|
19.11.2008, 16:48
Beitrag #8
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
visa write; visa read zeitgesteuert
Nachdem mir gerade langweilig ist, habe ich dir mal eine Event-basierte Leseroutine gebastelt. Diese kannst du als SubVI einsetzen, dann wird dein VI auch wesentlich übersichtlicher. Was hierbei voraussetzt wird ist, dass du bei jedem Befehl wissen musst, wieviele Zeichen deine Antwort enthält.
Wenn jede Antwort mit einem bestimmten Zeichen (z.B. Carriage Return) abgeschlossen wird, könnte man die Leseschleife natürlich auch darauf hin umbauen.
Was du allerdings nicht vergessen darfst, nach dem Öffnen der Schnittstelle folgendes VI einfügen:
VISA_Lesen_mit_Event.vi (Größe: 23,94 KB / Downloads: 457)
Gruß, Jens
P.S.: Sag mal, so ganz hast du das Konzept der StateMachine noch nicht verstanden, oder wieso baust du in "State 12" nochmal die komplette State-Machine ein?
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
20.11.2008, 06:46
Beitrag #9
|
|
|
| |