LabVIEWForum.de - USB Steuerung/Visa read problem

LabVIEWForum.de

Normale Version: USB Steuerung/Visa read problem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag!

Ich bin ganz neu bei LabVIEW und hoffe mir kann hier jemand helfen. Ich steuere mit hilfe der Visa-VIs ein Motor. Befehle werden über USB an ein MC geschickt und der macht den Rest. Mein Problem ist jetzt das Visa read VI. Je nach Befehl muss man eine bestimmte Anzahl von Bytes lesen. Wenn ich zu wenig lese kommen nicht alle Informationen an und wenn ich zu viel Bytes lesen versuche kommt der Fehler:

Zitat:Fehler -1073807339 ist bei VISA: Lesen in Motor.vi aufgetreten
Mögliche Ursachen:
VISA: (Hex 0xBFFF0015) Zeitüberschreitung, bevor der Vorgang abgeschlossen werden konnte.

Kann man irgendwie angeben, dass Visa read alle Bytes im Puffer liest?(nicht mehr und nicht weniger)
Ich hab in SuFu etwas von Visa timeout Sessions gefunden. Würde das hier helfen? Kann es leider nicht Testen, weil es im Uni LabVIEW anscheinend nicht enthalten ist (LabVIEW 9.0 Prof., wenn ich es aus der Hilfe-Doku reinziehen will kommt Fehler)
Das kommt darauf an, was Dein MC sendet.
Am besten wäre es, er würde als letzte Byte immer ein Abschlußzeichen senden. Dann brauchst Du nur in der VISAKonfig "Termchar" zu aktiven, und VISA read wartet, bis das Termchar eingetroffen ist.
Wenn das nicht der Fall ist, dann nach dem Senden ein Wait einfügen, so groß, daß bis dahin die vollständige Antwort im Buffer ist. Dann per Eigenschaftsknoten die Anzahl Bytes im Buffer feststellen, und diese Zahl als Anzahl zu lesender Bytes an VISARead anschließen.
Danke für deine Antwort.

Wie kann ich mit dem Eigenschaftsknoten die Anzahl der Bytes im Puffer festellen? Wenn ich einen Eigenschaftsknoten erstelle dann finde ich kein Eintrag dazu. Was so ähnlich klingt wäre "Number of Bytes at Serial Port", das ist aber immer Null.


MfG
' schrieb:Danke für deine Antwort.

Wie kann ich mit dem Eigenschaftsknoten die Anzahl der Bytes im Puffer festellen? Wenn ich einen Eigenschaftsknoten erstelle dann finde ich kein Eintrag dazu. Was so ähnlich klingt wäre "Number of Bytes at Serial Port", das ist aber immer Null.
MfG
Vgl. hier:
http://www.LabVIEWforum.de/index.php?s=&am...ost&p=95864

Bytes at Port hört sich gut an, da hast du die richtige Property gefunden. Ist übrigens auch in der Tools-Palette unter den Serial-VIs direkt drin.

Weitere Frage: Weißt du, wieviele Bytes du je nach Befehl empfangen musst? Dann mach eine Fallunterscheidung, je nach gesendetem Befehl liest du genau diese Anzahl an Bytes ein.

Gruß, Jens
Hey!

Danke für den Beispiel-Link! Jetzt weiß ich wenigstens wie die Eigenschaft "Number of Bytes at Serial Port" funktioniert. Ja ich weiß welche Befehlseingabe wieviel Bytes zum Auslesen liefert. Ich habe es auch so im moment realisiert. Dachte nur es geht etwas "eleganter". Ich denke ich lasse es erstmal so....

MfG
' schrieb:Was so ähnlich klingt wäre "Number of Bytes at Serial Port", das ist aber immer Null.
Das kann nur daran liegen, daß Du zwischen Senden und Lesen keine oder zu wenig Wartezeit eingebaut hast und deshalb zum Zeitpunkt der Abfrage noch keine Bytes im Buffer sind:
[attachment=25880]
Referenz-URLs