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!
Für meine DA möchte ich einen Controller ansprechen. Um die Kommunikation zu testen, kann ich die Taste "ESC" drücken und es sollte ein > Zeichen zurückkomen. Mit dem Hyperterminal funktioniert es, doch mit lv bring ich es nicht zum laufen und wie muss ich das realisieren, damit ich die Taste nicht drücken muss, sondern beim Start dieser Test automatisch ausgeführt wird?
Wenn das klappt, möchte ich dem Controller Befehle wie zum Beispiel MD10 oder WA 1000 etc senden um einen Motor zu steuern. Wie muss ich das senden?
Um ein ESC-Zeichen zu senden, musst du über die Schnittstelle (ich nehm an du verwendest die serielle) das Zeichen 27 (0x1b) senden. Das bekommst du zB indem du den Wert (27) in ein Byte-Array schreibst und anschließend mit der Funktion Byte-Array in String konvertierst. Diesen String sendest du an den Controller.
Wenn du das Ganze nun als Konstanten anlegst, und zB in einer Schleife mit einem Button den Sendevorgang startest, sollte es eigentlich ohne Drücken der ESC-Taste funktionieren.
Welchen Controller verwendest du denn? Hat der die Befehle zur Motorsteuerung integriert, oder legst du die selbst fest?
Die Befehle für den Kontroller sind vom Hersteller gegeben (SMAC). Anhand der Ascii-Tabelle versuchte ich es mit dem Wert 27. Leider funktionierte das nicht und nun habe ich es so gelöst, dass ich den Wert mittels einem vi von der Tastatur ausgelesen habe. Zu meiner Überraschung kam der Wert 62 heraus und siehe da, mit dieser Eingabe funktioniert es, obwohl ich keine Ahnung habe warum???????? :shock:
Wenn ich dem Kontroller ein escape sende, sollte er ein ">" zurücksenden. Als ich den Wert 27 schickte erhielt ich nichts....
Dann habe ich ein vi entwickelt, welches mir den Wert der gedrückten Taste zurückgibt. Sobald ich die escape-Taste drücke kommt komischerweise der Wert 62 heraus?????? :?
Ich dachte eigentlich, dass meine Kommunikation erfolgreich war, da ich jedoch das ">"-Zeichen sendete, kommt auch dasselbe Zeichen zurück. Denn wen ich ein E sende kommt auch ein E zurück. hmmmm
ich hab mal ein vi angehängt, dass ein ESC-Zeichen erstellt, angezeigt wird es einmal normal und als hex-String (da siehst du den Wert 1B). Versuch mal, das an den Controller zu schicken...
Hast du auch schon andere Befehle ausprobiert? Weil ESC wird ja nur die Terminierung eines Befehls sein, nehme ich an...
ich habe es mit deinem hex file versucht, aber leider hat es nicht geklappt.
Im Bild rs232 siehst Du mein Prgramm. Andere Befehle habe ich noch nicht ausprobiert. Werd ich mal versuchen. Im Manual steht, dass wenn man ein ESC sendet ein >- Zeichen zurück kommen muss, damit die Kommunikation funktioniert.
Das Bild keyboard zeigt meine Funktion um die den Wert der jeweiligen Taste auszulesen. Mit dieser Routine erhalte ich den Wert 62 für die Escape-Taste. Kann es damit zusammenhängen, dass ich ein Laptop benutzte?
Kann man bei der Kommunikation mit lv ein echo einstellen oder ist das Standartmässig eingestellt? Wenn ja, wo kann ich das einstellen? Denn ich erhalte immer dieselben Werte zurück, die ich sende.
In deinem Rs232-Vi sendest du zumindest mal definitiv das Zeichen ">" an den Controller. Versuch mal hier einen anderen Befehls-String zu verwenden, und schau, was der Controller zurückgibt.
Warum du beim Auslesen der ESC-Taste 62 bekommst ist mir auch ein Rätsel, dürfte allerdings keinen Unterschied machen, ob es ein Notebook ist oder nicht. Vielleicht haben die von dir verwendeten Funktionen Probleme mit dem Lesen von Sondertasten, probier vielleicht mal eine andere Taste aus (zB enter -> 13)
Zitat:Kann man bei der Kommunikation mit lv ein echo einstellen oder ist das Standartmässig eingestellt?
Was meinst du denn mit echo?
Was eventuell noch ein Hindernis sein könnte, ist wenn du am Controller und in LV eine unterschiedliche Baudrate eingestellt hast.
dein Anzeigeelement "element" ist ein ring, dessen Wert ESCAPE dem dezimalwert 62 entspricht...
(dieses Ring ist also nicht nach Ascii-Standard geordnet!!!)