Probleme bei mehrfacher Nutzung eines SubVIs - 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: Probleme bei mehrfacher Nutzung eines SubVIs (/Thread-Probleme-bei-mehrfacher-Nutzung-eines-SubVIs) |
Probleme bei mehrfacher Nutzung eines SubVIs - Fidel90 - 20.12.2010 16:53 Hallo, ich sende an ein Gerät Befehle per RS232. Für die Übermittlung der definierten Befehlswörter habe ich ein SubVI erstellt, dem ich später nur noch den Befehlsstring übergeben muss. Das SubVI gibt anschließend die empfangene Antwort des Geräts aus: [attachment=31345] Nun möchte ich in einem Programm verschiedene Befehle automatisiert nacheinander senden und die Antwort des Geräts auf den letzten Befehl ausgeben: [attachment=31344] Nun habe ich aber das Problem, dass mir meine Ausgabe nur das Ergebnis der ersten Befehsleingabe ausgibt. Mein SubVI bekommt aber beide Befehle nacheinander übergeben. Die Ausgabe bezieht sich allerdings immer auf die erste Eingabe :/ Hat jmd. eine Idee woran das liegen könnte? Danke im Voraus. mfg Probleme bei mehrfacher Nutzung eines SubVIs - Y-P - 20.12.2010 17:27 Funktioniert es, wenn Du den 2. Befehl separat schickst? Vielleicht ist Deine Hardware noch nicht so weit und schickt Dir nochmal die Antwort auf den ersten Befehl..... Auf die Schnelle habe ich nichts falsches gesehen. Vielleicht kannst Du ja auch mal das VI hochladen. Gruß Markus Probleme bei mehrfacher Nutzung eines SubVIs - Kasi - 20.12.2010 19:36 Leider habe ich auch keinen direkten Fehler in deinem VI finden können, aber ingesamt erscheint mir dein Auslese-VI unnötig komplex. Folgender Verbesserungsvorschlag Mein persönlicher Liebling: Da du deinen Befehl mit Carriage Return und Line Feed abschließt, nehme ich an, dass das Gerät seine Antwort ebenfalls mit Carriage Return und Linefeed abschließt. Falls dem so sein sollte, mach dir das zu nutze und fang das Lese-VI mit dem entsprechenden Terminator ab, statt mit dem Bytes at Port Knoten und While-Schleife. Sowas kann im Zweifelsfall nämlich zu blöden Timing-Problemen führen, wenn Labview schneller als das Gerät arbeitet. Aber hier erstmal das, was ich eben gesagt habe, als Minimalbeispiel: [attachment=31347] Ich hoffe, das hilft bei der Problemlösung. Grüße, Kasi Probleme bei mehrfacher Nutzung eines SubVIs - Fidel90 - 20.12.2010 20:47 @Markus: Ja, separat funktionieren die Befehle. Hab mal angefangen etwas mit Schieberegistern (Richtung Automat) zu basteln...mal sehen ob das was wird ^^ Das VI kann ich morgen evtl. hochladen. @Kasi: Danke, werd das morgen mal testen. Das Gerät schließt seine Sendungen mit einem Prompt ("/ >") ab. mfg Probleme bei mehrfacher Nutzung eines SubVIs - Kasi - 21.12.2010 08:28 Wenn er das ">" niemals innheralb der Antwort vorher sendet, kannst du ja dieses letzte Zeichen des Prompts als Terminator nehmen (Ascii 62) Probleme bei mehrfacher Nutzung eines SubVIs - Fidel90 - 21.12.2010 08:54 Morgen... Habe das versucht und offensichtlich kann das ">" auch Teil meiner Antwort sein. Über diesen Weg funktionieren meine VIs dann nicht mehr zuverlässig. Wegen dem fehlerhaften Verhalten des SubVIs habe ich wie gesagt mal einen Zustandsautomaten gebastelt, der der Reihe nach Befehle an das Gerät sendet. Sieht soweit auch ganz gut aus. Ein Problem habe ich aber noch. Sobald ich mir Bilddaten (als ASCII) senden lassen möchte, bekomm ich (je nach Bildgröße) bspw. ca. 1500 Bytes an meinem Lesepuffer. Die 1500 werden dann immer weniger bis sie auf 0 angekommen sind. Anschließend bekomme ich aber keine Ausgabe der Bytes sondern mein Ausgabefeld wird gelöscht (bis auf ein einziges "/ >"). Ansonsten läuft das Programm weiter. Hat da jmd. eine Idee wieso diese Nachricht verloren geht? mfg Probleme bei mehrfacher Nutzung eines SubVIs - Y-P - 21.12.2010 09:41 Kannst Du mal Dein SubVI hochladen? Gruß Markus Probleme bei mehrfacher Nutzung eines SubVIs - Fidel90 - 21.12.2010 09:49 Klar, hier: [attachment=31356] mfg Probleme bei mehrfacher Nutzung eines SubVIs - GerdW - 21.12.2010 10:58 Hi Fidel, ich würde vor dem ersten "BytesAtPort" noch eine kurze Wartezeit einfügen, sonst könnte deine WhileLoop schon nach der ersten Iteration abgebrochen werden (Befehl senden: ~1µs später wird schon nachgeschaut, wie viele Bytes im Buffer stehen...) Ansonsten fällt mir auf die Schnelle nichts Weltbewegendes auf. (Man könnte auch die vordefinierten Stringkonstanten für LF und CR benutzen...) Probleme bei mehrfacher Nutzung eines SubVIs - Kasi - 21.12.2010 11:31 ich hab immernoch keinen wirklichen lösungsansatz, aber noch einen weiteren verbesserungsvorschlag. Ich mag diese Feedback-Knoten nicht, ich würde der übersichtlichkeit halber mit Shift-registern arbeiten. Außerdem verstehe ich den Sinn des Abschlußzeichen-Cases nicht. Um den zu erfüllen, müsste das Gerät zufällig genau die letzten drei Bytes während der willkührlich gewählten 10ms Stopzeiten senden. Sobald die letzte Zeichenkette länger als drei Byte ist, greift die Struktur nicht mehr. Daher habe ich das einfach mal ganz hinten angehängt. Ich hoffe, es hilft. [attachment=31365] |