Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe bei der Ansteuerung eines Motors über eine serielle Schnittstelle ein Problem.
Um vom Interface an der Schnittstelle die Position der Einheit zu bekommen, muss ich den Befehl "pr p" eingeben. Wenn ich jetzt aber die Antwort auslesen möchte, lese ich immer nur meinen eigenen Befehl. Habe ich nicht lange genug gewartet, um die Antwort zu bekommen? Habe sogar extra eine Schleife gebastelt, so dass der Vorgang erst weitergeht, wenn auch wirklich eine Antwort da ist. Wie kann ich die Antwort auslesen?
Versuch mal, die VISA-writes in einen klaren zeitlichen Ablauf zu bringen. Am besten mach um das write eine For-Schleife und bau Dir die zu schreibenden Befehle als Array zusammen (build array aus den einzelnen Strings). In die For-Schleife gib dann eine Zeitverzögerung rein. Dann das ganze in eine Sequence-Structure rein, mit einem VISA-Read im nächsten Frame. Außerdem würde ich die Schnittstelle erst am Ende der Verarbeitung, also nach dem Read, schließen.
Wahrscheinlich ist es das Echo vom Motor. Vielleicht gibt es eine Möglichkeit das Echo abzuschalten. Wenn nicht, dann würde ich alles empfangen (mit VISA-Read) und puffern. Dann diesen Puffer parsen. Z.B. jedes mal wenn ein Abschlusszeichen kommt einfach den Puffer abschneiden und das Abgeschnittene auswerten. Es ist die Standardvorgehensweise.
Abschlusszeichen kann zum Beispiel ein CR oder LF oder beides zusammen sein. Es ist immer abhängig vom definiertem Interface des anzusteuernden Gerätes.