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!
noch als Nachtrag, es ist nicht ganz richtig was ich schrieb, das der Programmteil von der S...-Box gar nicht läuft. Er läuft nur einmal und genau dann, wenn ich das Programm starte. Danach wird die Kommunikation unterbrochen, ich kann weder die Relais schalten, noch empfange ich Meßwerte.
Anzeige
19.11.2007, 12:11 (Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2007 12:13 von Achim.)
Manchmal fragt man sich, ob überhaupt ein grundlegendes Verständnis vorhanden ist, wie ein Programm - egal in welcher Programmiersprache - funktioniert...
Zum Problem:
Du musst halt dafür sorgen, dass dein Code für die serielle Kommunikation auch dauernd läuft! Am einfachsten dadurch, dass du den Code in die gleiche While-Schleife packst wie den Code für das USB-Modul!
Programmieren heißt, einem Computer zu sagen was er machen soll...und er macht genau, was du ihm gesagt hast: 1x den Code für die S-Box, und dauerhaft (da in einer (Do-) While-Schleife) den restlichen Code!
A.
EDIT: Ein Tip zu den Farben auf dem Frontpanel...WENIGER ist MEHR!
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
19.11.2007, 15:23 (Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2007 22:04 von jg.)
Ein grundlegendes Verständnis ist, so denk ich zumindest, schon vorhanden. Aber ich beschäftige mich gerademal 14 Tage mit LabVIEW. Deshalb möchte ich euch bitten, noch etwas Geduld mit einen Anfänger wie ich es bin, zu haben. Aber auf die letzte Frage hätte ich selber darauf kommen müssen, sorry.
Also ich hab jetzt den Code für die Science-Box und den Code für die I/O-Karte (Adresse 0) in eine Schleife gepackt und das funktioniert auch.
Wenn ich den Code für eine zweite I/O-Karte (Adresse 1) ebenfalls noch in die Schleife packe, wird die Programmausführung extrem langsam und ich hab eine
100%ige Systemauslastung. Kann es daran liegen, dass ich noch keine zweite Karte am PC angeschlossen habe? Wie optimiere ich das Programm?
MfG
computerpap
(VI LV 8.2)
19.11.2007, 15:57 (Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2007 15:58 von Achim.)
Hi,
räum doch erst mal ein bisschen auf, dann sieht man auch eher wieder durch...will heißen: Mach mal dein Blockdiagramm nur so groß wie ein Bildschirm!
Dann gilt generell: Mach in While-Schleifen ne Wartezeit (Wait.vi), so um die 20ms.
Dann: Probier mal aus, was passiert, wenn du drei parallele While-Schleifen (für je eine HW-Komponente) verwendest.
Dann: Du musst doch nicht jedes Mal die Karte ansprechen/öffnen...mach mal den Schritt "open device" nur 1x bei Programmstart und nicht in jeder Schleifeniteration!
Danach sehen wir weiter!
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Danke für die schnelle Antwort.
Der 2. Vorschlag von dir, mit den einzelnen Schleifen, hatte ich schon probiert, aber es auch keine Änderung. Zu den ersten und dritten Vorschlag bräuchte ich mehr Info's, wie man das realisiert.
Wenn mehr Zeit ist, werde ich auch mehr Ordnung rein bringen, jetzt muß es erstmal so gehen, sorry!
' schrieb:Der 2. Vorschlag von dir, mit den einzelnen Schleifen, hatte ich schon probiert, aber es auch keine Änderung. Zu den ersten und dritten Vorschlag bräuchte ich mehr Info's, wie man das realisiert.
1. Palette Timing...Wait.vi....in die While-Schleife...Konstante dran
2. Der erste Schritt in der gestapelten Sequenz-Struktur ist "Open device"...mach mal nen Doppelklick auf das "Kästchen" in der Struktur, da siehst du welche Funktion dahinter steckt. Kopier den Inhalt des ersten Schritts vor die While-Schleife und schmeiß den dann aus der Sequenz raus...
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Hallo
Ich habe die dll-Datei, auf die die erste USB-Karte zugreift, kopiert und mit anderen Namen im system32-Ordner wieder eingefügt. Diese neue Datei benutze ich jetzt für die zweite USB-Karte. Damit ist alles etwas schneller geworden, aber nicht wirklich zufriedenstellend. Hat noch jemand Ideen, wie ich das Programm "flüssiger" zum laufen bekomme?
(VI LV 8.5)
21.11.2007, 12:13 (Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2007 22:05 von jg.)
ich habe das mal reduziert...bau das mal nach diesem Muster auf, meinetwegen auch mit zwei Karten. Geht das?
Kostenloser Hinweis
Erstelle deine Bedienelemente im passenden Format für die DLL (hier: I32), dann hast du keine Zeit/Ressourcenverluste durch Wandlungen!
Super, große Klasse, es funktioniert so wie du es umgeschrieben hast, auch mit 2 Karten. Allerdings brauchen beide Karten eine eigene dll, so wie ich es im vorherigen Thread beschrieben habe.
Mein Profil ist aktualisiert.
Zur Farbenblindheit muß ich zu meiner Verteidigung sagen, dass ich diesen Programmteil direkt aus einen VI kopiert habe, das vom Hersteller der Karte ist.
Vielen Dank für deine Mühe und Geduuuuld!