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!
Du kommst ja immer mit neuen Begriffen, was ist denn das Remote-Gerät?
Warum beendet der den mit einer Fehlermeldung?
Ich mein, die ist doch nur störend.
Wie erreich ich eine interval-mäßige Abfrage?
Hinter dem Visa-Baustein ist eine Schleife in der ich verschiedene Zeiten einstellen kann, wird das damit realiesiert?
Muß ich dafür die Entwicklungsumgebung in eine Ausführbare Datei umwandeln?
Wie gehe ich weiter vor?
Zitat:Du kommst ja immer mit neuen Begriffen, was ist denn das Remote-Gerät?
Das ist das Gerät, mit dem du per PC kommunizierst. (Kann zb Microcontroller, Messgerät, anderer PC, .... sein)
Zitat:Warum beendet der den mit einer Fehlermeldung?
Das kann die verschiedensten Gründe haben. zB du musst dem Microcontroller zuerst einen bestimmten Befehl senden, dass er mit der Übertragung der Daten beginnt. Wenn du das nicht tust, macht der Microcontroller auch nichts -> er schickt auch keine Daten an den PC -> der PC empfängt nichts und nach der Timeout-Zeit bricht LabVIEW den Empfangs-Versuch ab.
Zitat:Wie erreich ich eine interval-mäßige Abfrage?
Kannst du zB mit einer Schleife realisieren, die einmal pro sekunde (minute...) auf eine Übertragung wartet. Allerdings muss die VISA-Read funktion in der Schleife sein, sonst liest du einmal ein und dann wartest du nur noch...
Zitat:Muß ich dafür die Entwicklungsumgebung in eine Ausführbare Datei umwandeln?
Nicht zwangsläufig. Eine Ausführbare Datei brauchst du dann, wenn dein Programm auf einem Rechner laufen soll, wo LV nicht installiert ist. Dann musst du allerdings die LV RunTime-Files mitgeben. Außerdem brauchst du zum Erstellen einer exe-Datei den LV Application Builder.
Zitat:Wie gehe ich weiter vor?
Naja, im Prinzip musst du deine Kommunikation, die du bis jetzt "händisch" per Hyperterminal gemacht hast in LV implementieren. (also Befehle an den µC senden, die empfangenen Daten auswerten)
Vielen Dank für deine vielen Antworten, ohne die wär ich noch lang nicht so weit!
Ich muß die Sache auch noch irgendwann präsentieren, da sieht das dumm aus wenn ich das mit der Entwicklungsumgebung mach.
Was brauch ich da auserdem noch Software um eine Ausführbare zu machen?
Welche Dateien produzier ich dann?
Wo find ich den LV Application Builder und den LV RunTime-Files?
Ist das überhaupt notwendig, oder gibt es eine Option die das direkte ändern z.B. eines Buttons verhindert?
Es ist noch ein Problem aufgetaucht;
mit den Terminals kann ich ohne große Schwierigkeiten mit dem Controller kommunizieren, schick ich mit LV den gleichen String, kommt er beim Microcontroller nicht an - oder wird nicht ausgewertet.
Kann das an den Pausen zwischen den Zeichen liegen?
Also den Application Builder musst du kaufen, falls du ihn nicht hast. Kostenpunkt ca 1000€. Wenn du ihn hast, müsste es im Menü Tools den Punkt Create Application / Shared Library geben. Dort kannst du dann deine Exe-Datei erzeugen, optional mit Windows-Installer, wo die LV RunTime Files gleich mitgepackt werden.
Wenn du das nur präsentieren musst (also nicht weitergeben) und nicht willst, dass irgendjemand was ändern kann, gibt es auch die Möglichkeit, das VI beim Laden automatisch in den Run-Modus zu setzen (File/Vi Properties/Execution : Run when opened), und beim Beenden LV auch zu schließen (im Blockdiagramm All Functions/Application Control/Quit LabVIEW).
Noch ein kleiner Hinweis, falls du das so machst und etwas editieren musst: mit Ctrl+. kannst du das vi abbrechen ohne das LV dann beendet wird, allerdings nur wenn unter File/VI Properties/Window Appearence/Customize der Punkt Show Abort Button angehakt ist. (und da musst du aufpassen, weil es sonst sehr mühsam werden kann, das vi zu retten). Du kannst hier natürlich das Menü auch ausblenden, damit du wirklick ausschließlich mit Ctrl+. in den Bearbeitungsmodus kommst.
Wenn du nur verhindern willst, dass ein Button zur Laufzeit bedient werden kann, einfach rechte Maustaste/Advanced/Enabled State/Disabled auswählen.
Das Kommunikationsproblem könnte an anderen Einstellungen liegen. Überprüf mal, welche Konfiguration du im Hyperterminal verwendest und bau sie genauso mit LV nach.
Für den Application Builder ist erst mal keine Geld da.
Run when opened reicht mir erst mal.
Bei der Schnittstellen-Konfiguration in LV, habe ich genau darauf geachtet das ich es wie bei den Terminals mache. Außer folgende Punkte die in den Terminals nicht zu finden sind.
- timeout habe ich erst mal so hoch gestellt, das ich keinen unnötigen Abbruch bekomme(ca. 5 min.)
- flow control
- enable termination char
- termination char
die letzten 3 habe ich so gelassen wie sie waren
Jetzt habe ich keine Ahnung warum der MC den String nicht annimmt, und verliere langsam den Spaß an LV.
Vielleicht erzählst du mir mal ein wenig über die oben erwähnten Punkte.
Dann komm ich hoffentlich damit weiter.
termination character ist das Zeichen, mit dem signalisiert wird, dass die Übertragung zu Ende ist (standardmäßig n , kannst aber ein anderes Zeichen vergeben)
Flow Control stellt ein, wie die Kommunikation gesteuert wird (Software/hardware)
Hab dir 2 Bilder angehängt, wo du das im HyperTerminal findest, genau diese Daten musst du dann in LV auch einstellen
Ich bin nochmal alles durchgegangen. In LV:
- termination char steht auf 'n' bez. auf A (='n')
- flow control da gibt es bei mir keine Hardware - Einstellung,
ist aber wohl nicht nötig, da der Hyper Terminal auch ohne flow control
arbeitet
Es gibt da nur eine Sache bei der ASCII-Konfiguration;
da ist ein Häckchen bei ' Eingegebene Zeichen lokal ausgeben',
das weiß ich nicht bei LV zu realiesieren!?
Und wie siehts mit dem 'Gesendete Zeilen enden mit Zeilenvorschub' das du markiert hast?
Zitat:Und wie siehts mit dem 'Gesendete Zeilen enden mit Zeilenvorschub' das du markiert hast?
Zeilenvorschub = 'n', das ist der Termination character vom hyperterminal. wenn das bei dir nicht angehakt ist, musst du in LV auch enable termination char auf false setzen.
Zitat:da ist ein Häckchen bei ' Eingegebene Zeichen lokal ausgeben', das weiß ich nicht bei LV zu realiesieren
Am einfachsten ist es, wenn du ein String-Anzeigelement einfügst, an das du jedesmal, wenn du etwas an VISA sendest den gesendeten String anhängst.
Aha, bloß was hat der Zeilenvorschub mit dem Ende eines Strings zu tuen?
Das versteh ich noch nicht genau.
Setzt der einen Zeilenvorschub am Ende des Strings??? Wofür?
Bei meinem VI ist der enable termination char mit einem ON/OFF - Button versehen, denke mal Off = falsh, kann nichts weiter aus der Hilfe entnehmen.
So ein String-Anzeigelement ist doch auch nur nötig, um zusätzlich den String zu überwachen den ich raus schick. Nur beim Hyper-Terminal unabdingbar weil ich ja sehen will was ich mache!? Oder lieg ich damit total daneben?