LabVIEWForum.de - Fehlermeldung: ungültiger Attributstatus

LabVIEWForum.de

Normale Version: Fehlermeldung: ungültiger Attributstatus
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo Junkie,

Zitat:Der Laboringenieur an der FH meinte ich muss ja bevor die Werte ausgelesen werden erst in der while-schleife abfragen ob und wieviel bytes überhaupt da sind
Er "meint" das? Kann er das auch begründen?

Zitat:ansonsten wird die Waage permanent ausgelesen.
Das willst du doch auch!

Lese dich bitte zum Thema TermChar bei RS232 ein. Du nutzt diese Option schließlich in deinem VI!
Damit liest du immer komplette Antworten deiner Waage ein, ohne vorher umständlich irgendwelche Pufferstände abfragen zu müssen.

Zitat:Und zweite Frage, kann ich eine while-schleife in einer while-schleife machen (Da ich ja noch Funktionen woe tarieren und mittelwert bilden mit einbauen muss, dachte ich bräuchte ich evtl noch eine)?
Ja.
Ob es wirklich nötig ist, ist eine andere Frage… Big Grin

Zur Stringauswertung:
Es gibt da die tolle Funktion ScanFromString. Wenn du die mit einem Formatstring "%s%.;%f%s"nutzen würdest, bekämst du ruckzuck Vorzeichen, Wert und Einheit geliefert:
[attachment=48765]
Hallo, also nochmal zur Vervollständigung der Fragestellung. Der Laboringeniuer wollte die Bedingung dass wenn 16 byte anliegen, die die Waage normlerweise überträgt, dann soll ausgelesen werden. Dass haben wir dass in einer case-Struktur gemacht. Bissl kompliziert meiner Meinung nach, aber ok. (Siehe Bild)

Jetzt ist allerdings die neue Fragestellung, da das Programm in eine exe runtergeladen werden soll, und es dann sofern man es im Computer installiert und die Waage angeschlossen ist, funktionieren soll. Das Probolem ist dann, dass ja jeder das an einen anderen COM ansteckt und somit zuerst die serielle Schnittstelle automatisch gefunden werden muss. Meine Idee war dazu, das mit der VISA: Ressource suchen (Funktion) zuerst alle schnittstellen abgefragt werden, und die die diegleichen Settings hat wie die Waage (Baudrate, stoppbits, etc) dann automatisch verwendet wird. Theoretisch ja, aber hat jemand eine Idee wie man das bei lv realisieren kann?

mfg
Hallo Junkie,

Zitat:Der Laboringeniuer wollte die Bedingung dass wenn 16 byte anliegen, die die Waage normlerweise überträgt, dann soll ausgelesen werden. Dass haben wir dass in einer case-Struktur gemacht. Bissl kompliziert meiner Meinung nach, aber ok. (Siehe Bild)
Warum schließt ihr nicht einfach eine "16" bei VISARead an und gut ist? Wozu vorher die Anzahl der Bytes im Puffer abfragen? Hmm
Was passiert mit eurem Programm, wenn ihr mal den richtigen Zeitpunkt verpasst und plötzlich 17 oder mehr Bytes im Buffer stehen?
Noch einmal:
Ihr arbeitet mit dem TermChar - zumindest hast du das so konfiguriert. Dann nutzt das TermChar auch und lasst das blöde BytesAtPort weg!

Zitat:Meine Idee war dazu, das mit der VISA: Ressource suchen (Funktion) zuerst alle schnittstellen abgefragt werden,
Gute Idee. Beispiele dazu findest du hier im Forum…

Zitat: und die die diegleichen Settings hat wie die Waage (Baudrate, stoppbits, etc) dann automatisch verwendet wird.
Schlechte Idee. Wie willst du die aktuellen Parameter abfragen und woher willst du wissen, dass die Schnittstelle schon richtig konfiguriert wurde?

Besser so:
- Verfügbare COM-Ports abfragen
- einen nach dem anderen passend zur Waage konfigurieren und Messwerte der Waage abfragen. Wenn die Waage antwortet: diesen COM-Port verwenden, ansonsten den nächsten probieren…
- Alternativ dem User eine Auswahl der COM-Ports präsentieren und diesen auswählen lassen!
[/quote]Hallo Gerd,



- richtige Fragestellung, ich proier das gleichmal so wie du das beschrieben hast, dass in VISA-Read dranzuhängen

Verfügbare COM-Ports abfragen
- einen nach dem anderen passend zur Waage konfigurieren und Messwerte der Waage abfragen. Wenn die Waage antwortet: diesen COM-Port verwenden, ansonsten den nächsten probieren…
- Alternativ dem User eine Auswahl der COM-Ports präsentieren und diesen auswählen lassen!

theoretisch klingt das logisch, aber mit welchem VI mach ich das?
Hallo junkie,

Zitat:theoretisch klingt das logisch, aber mit welchem VI mach ich das?
VISAResourcenSuchen, danach VISASerialPortInit & VISARead/Write…
Meintest du das so?
Hallo Junkie,

in etwa…
- Man kann die vom VISAResource gemeldeten Schnittstellen noch nach COM-Ports filtern, sonst testet man hinterher auch irgendwelche Parallelports oder irgendwas anderes…
- Für einen Verbindungscheck reicht es aus, VISARead aufzurufen. Die ganze Auswertung der Botschaft ist da nicht nötig.
- Wozu hast du da BytesAtPort drin? Du fragst doch konstant 16 Bytes ab!?
so richtig funktioniert das oben noch nicht
Hallo junkie,

noch ein Bild zum VISAResource:
[attachment=48855]
So scanne ich COM-Ports.
Ich bin mir sicher, dieses Bild schon einmal hier gepostet zu haben…

Zitat:so richtig funktioniert das oben noch nicht
Das ist sicherlich keine Fehlermeldung/-beschreibung von LabVIEW…
Ich hab das jetzt nach langem werkeln irgendwie hinbekommen, zumindest erkennt er an meinem Rechner die beiden Schnittstellen automatisch und verwendet sie. Ich hab mir das so gedacht, falls bytes anliegen (for-schleife), dann true und dann auslesen, while bis jmd stop drückt, siehe Bild. Klingt für mich logisch, aber ich bin ja auch ein ziemlicher Laie was LV betrifft. Vielleicht könnte man die Bedingung noch etwas eleganter machen?

lg
Seiten: 1 2 3
Referenz-URLs