![]() |
Auslesen einer seriellen Schnittstelle - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA) +---- Thema: Auslesen einer seriellen Schnittstelle (/Thread-Auslesen-einer-seriellen-Schnittstelle) |
Auslesen einer seriellen Schnittstelle - Kathrin - 22.02.2006 10:26 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 :-) Auslesen einer seriellen Schnittstelle - Oliver Listing - 22.02.2006 10:48 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. Auslesen einer seriellen Schnittstelle - Kathrin - 22.02.2006 11:12 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 Auslesen einer seriellen Schnittstelle - Kathrin - 22.02.2006 11:29 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 Auslesen einer seriellen Schnittstelle - Kathrin - 22.02.2006 11:36 hier ist das VI |