LabVIEWForum.de - Auslesen einer seriellen Schnittstelle

LabVIEWForum.de

Normale Version: Auslesen einer seriellen Schnittstelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute,

ich bin gerade dabei einen Motor mit LabVIEW zu programmieren. Der Motor ist per Schnittstelle am Computer und kann Befehle wie "mr=5000" =>bewege dich ... selbst ausführen, das heißt ich brauche keinen Compiler.
Wenn ich jetzt aber per Befehl die Position abfragen möchte, wie komm ich dann an seine Antwort ran? Mit einem HyperTerminal, der auch direkt mit der Schnittstelle verbunden ist, gebe ich einfach nur "pr p" ein und dann kommt die Position als Zahl. Wie mache ich das mit LabVIEW?
Wie kann ich einen Befehl so eingeben, dass er ihn ausführt und ich die Antwort lesen kann?
Bis jetzt habe ich versucht mit "Visa Write" den Befehl einzugeben und gleich danach "Visa Read" gesetzt. Aber es liest dann nur "pr p" aus und eben nicht die Position in Zahlen.

Könnt ihr mir helfen??

tschüssi
viele Grüße
Kathrin :-)
Hi kathrin,

du must erstmal warten bis die Antwort da ist.
Und dann die angekommenden Zeichen einlesen.

Die Property node VISA Bytes at Seriell Port gibt dir auskunft darüber, wie viele Zeichen angekommen sind.

Ist die Antwort immer mit einem Endezeichen abgeschlossen, kannst du dies auch beim Initialisieren der Schnittstelle mit angeben und dir eine vernünftige Timeoutzeit setzen.

Dann wartet LV trotz des sofortigem READ-Befehls solange, bis entweder das Endezeichen empfangen wurde, oder die Timeoutzeit überschritten wurde.

Gruß
Oliver

Ansonsten stell doch mal dein Prog./empfangsroutine ein.
Hallo Oliver

vielen Dank für die superschnelle Antwort!
Woher weiß ich denn, ob meine Antwort über ein Endzeichen abgeschlossen ist? Du schreibst von einem vernünftigen TimeOut. Wie kann ich das abschätzen?
Wie bekommt der Read-Befehl mit, wann das Endzeichen geschickt wurde? Ganz einfach über die Poperty Node?

Ein weiteres Problem ist, dass ein Befehl" pr p" lautet. Da ich aber am Ende des Befehls immer r schreiben muss, macht mir das mein Leerzeichen kaputt. Es entsteht daraufhin aus "pr p" immer "prspr".
Wie kann ich das ändern? Oder muss ich das Öeerzeichen durch irgendein anderes Zeichen ersetzen?


viele Grüße
Kathrin
okay, einen Schritt weiter,
bei dem "prspr" heißt das s tatsächlich einfach nur space...
aber es kann den Befehl immer noch nicht verarbeiten, sondern liest einfach nur "pr p" wieder aus und sollte aber die Position angeben...?
Habe eine Warteschleife von 2sec drumgesetzt, funktioniert trotzdem nicht.

tschüssi
Kathrin
hier ist das VI
Referenz-URLs