Hallo Benutzer,
wann kommt der TimeOut-Fehler?
Der Fehler sagt normalerweise, dass dein Gerät keine Daten schickt: musst du dem Gerät erst irgendwie mitteilen, dass es mit dem Versand starten soll?
Zum VI: Warum hast du zwei identische Cases im Fehlerfall? Warum nicht einfach einen Case, der bei zwei verschiedenen Fehlercodes aufgerufen wird? (Code-Duplizierung ist selten eine wirklich gute Idee…)
Oder könnte es sein, dass deine Standard-Einstellung "COM1" nicht stimmt? So wie du das VI aufgebaut hast, hast du gar keine Chance, dass interaktiv zu ändern, so dass es einen Lese-Fehler behebt...
Gruß, Jens
Zitat:
"Oder könnte es sein, dass deine Standard-Einstellung "COM1" nicht stimmt? So wie du das VI aufgebaut hast, hast du gar keine Chance, dass interaktiv zu ändern, so dass es einen Lese-Fehler behebt.."
Der passt auch nicht. Ich muss den Port immer ändern.
Das heißt ich das Programm nimmt den neu ausgewählten Port erst nach dem Neustart?
Zitat:
"wann kommt der TimeOut-Fehler?"
Gleich beim start des VI
Zitat:
"musst du dem Gerät erst irgendwie mitteilen, dass es mit dem Versand starten soll?"
Bei anderen PC's sendet der Arduino nach einigen Sekunden. Kann es vielleicht an dem Rechner liegen? Der hat glaube ich noch USB 1.0
Ich habe das VI nun so:
[
attachment=59062]
Ich habe die Informationen über den Fehler geändert, jetzt weiß der User auch welcher Fehler vorhanden ist.
Und ich habe die Speicheroption hinzugefügt. Aber warum werden jetzt wieder keine Kommastellen angezeigt
Hallo Benutzer,
Zitat:Der passt auch nicht. Ich muss den Port immer ändern.
Das hier ist das Problem: du musst dne Port immer erst einstellen!
Zitat:Das heißt ich das Programm nimmt den neu ausgewählten Port erst nach dem Neustart?
Jein: Der Port wird erst nach dem nächsten Neustart in der Schleife verwendet!
Du musst dem User Zeit geben, dass er den Port auswählen kann, BEVOR die Schleife gestartet wird!
Merke: erst Einstellungen machen (lassen), dann die Schleife starten!
Zitat:Und ich habe die Speicheroption hinzugefügt. Aber warum werden jetzt wieder keine Kommastellen angezeigt
Wo fehlen die Nachkommastellen? Musst du mal debuggen!
Hast du den korrekten Formatstring verwendet? Hast du überall auf "englische Zahlenformate" geachtet (d.h. Punkt als Dezimaltrennzeichen)???
Zitat:
"Das hier ist das Problem: du musst dne Port immer erst einstellen"
Ich habe die Portabfrage einfach in die Loop geschoben.
Das läuft auch zufriedenstellend
Jetzt kommt
"Error 1000 occurred at Invoke Node in Aeronautical Interface.vi
LabVIEW: The VI is not state compatible with this operation.
Method Name: RUN VI
VI Path:..."
Ich kann zwar auf continue drücken, aber das wäre ja nicht der Sinn der Sache.
Hallo Benutzer,
du wirst doch hoffentlich nicht in jeder Iteration erneut den Port initialisieren?
Wo ist dein aktuelles VI?
Ich frage mich schon die ganze Zeit, wieso du dir als LabVIEW-Einsteiger ein eher kompliziertes Bedienkonzept mit dynamischen VI-Aufrufen angetan hast... Wie du inzwischen vielleicht feststellst, macht das mehr Ärger als was es bringt.
Meine Empfehlung wäre: Jedes deiner dynamisch aufgerufenen VIs erhält eine saubere State-Machine und einen Steuermechanismus per Queue oder Notifier. Dann werden diese VIs 1x beim Start des Haupt-VI mitgestartet (und zwar einfach als Icon im BD) und auch nur 1x bei Beendigung beendet.
Gruß, Jens
Zitat :
"du wirst doch hoffentlich nicht in jeder Iteration erneut den Port initialisieren"
Im Moment schon.
Warum ist das eigentlich so schlimm?
Zitat :
"Meine Empfehlung wäre:..."
Vielen Dank für die Anregungen. Werde ich, falls ich irgendwann noch mal ein Interface erstellen sollte, beachten. Hatte das (state machine) immer wieder in Forenbeiträgen gelesen, aber nie richtig mit beschäftigt.
Error 1000:
Dieser Fehler ist durch erstellen der Exe behoben.
Die Installationsdatei gibt auch keinen Fehler raus
Ich möchte mich noch einmal herzlich bedanken für die super Unterstützung. Top Forum
(20.04.2018 18:12 )Benutzer1 schrieb: [ -> ]Zitat :
"du wirst doch hoffentlich nicht in jeder Iteration erneut den Port initialisieren"
Im Moment schon.
Warum ist das eigentlich so schlimm?
Weil das erstens langsamer ist und noch schlimmer du nie sicher sein kannst, dass du wirklich einen kompletten Datensatz ausliest.
Erklärung: Dein Arduino sendet ja unaufgefordert immer wieder sein Messdaten. Wann das passiert, weisst du nicht. Also weisst du auch nicht, ob ein erstes VISA-Read beim Anfang des Datensatzes anfängt zu lesen oder mittendrin. Wenn du jetzt die Schnittstelle offen hältst, dann bist du ab dem zweiten Read auf der sicheren Seite, der VISA-Treiber wird im Hintergrund alle empfangenen Zeichen puffern, bis das nächste VISA-Read wieder einen Datensatz (bis zum Termination-Char) ausliest. Wenn du aber nach einem VISA-Read die Schnittstelle schließt, dann wird nichts gepuffert. Es könnte also sein, dass dir Daten/Zeichen verloren gehen.
Gruß, Jens
Ich habe es nun doch noch angepasst. Nun wird der Port vorher in einer Schleife abgefragt. Danke für den Hinweis
Es kam hin und wieder ein durchgewürfeltes Datenpaket an. Das war nicht schön.
Jetzt läuft es aber zu 99%. Werde es nun so lassen. Die restliche Optimierung wird mein Nachfolger übernehmen.
Vielen Dank