' schrieb:Hallo
kann mir jemand weiterhelfen.
Wie kann ich diesen "Warte-auf-Daten"-Zustand das Achim meint realisieren?
Vielen Dank für Eure Hilfe
Warten auf Daten wird von VISA Read automatisch getan. VISA Read wird beendet wenn einer der folgenden Ereignisse eintritt:
1) Die verlangte Anzahl Character sind verfügbar. -> Die Daten werden ohne error zurückgegeben.
2) Ein Fehler ist im unterliegenden Treiber aufgetreten. -> Du bekommst diesen Fehler übergeben.
3) Das Timeout das ein Property der VISA Session ist, ist abgelaufen. -> Du bekommst einen Timeout error übergeben.
Du siehst die Funktion wartet bis entweder ein Fehler auftritt, die verlangten Daten verfügbar sind oder das eingestellte Timeout abgelaufen ist.
Damit erübrigt sich jegliche weitere Form von Warten auf Daten in den meisten Fällen.
Aber bevor Du auf die Daten warten kannst müssen sie geschickt werden. So wie Achim es schon erwähnt hat haben die meisten seriellen Instrumente ganz spezifische Vorstellungen davon, wie das Kommando aussehen muss, damit eine Antwort kommt. Da reicht des eigentliche Kommando nicht, sondern es muss mit einer bestimmten Zeichenfolge abgeschlossen werden, meist ist das CR und/oder LF (Carriage Return und Line Feed). HyperTerminal macht das (nein nicht automatisch sondern) wenn Du die Enter Taste drückst. Die Enter Taste ist beim (DOS/Windows) Computer gleich wie ein CR und LF.
In LabVIEW hast Du keine Enter Taste um das Kommando zu verschicken, sondern muss man diese Character explizit mit in den Datenstrom aufnehmen, um sie auch zu verschicken.