LabVIEWForum.de
Tabellarische Datenerfassung über Serielle Schnittestelle. - 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: Tabellarische Datenerfassung über Serielle Schnittestelle. (/Thread-Tabellarische-Datenerfassung-ueber-Serielle-Schnittestelle)



Tabellarische Datenerfassung über Serielle Schnittestelle. - Loknar - 26.10.2004 10:04

Hallo,

ich bin noch ein ziemliecher Neuling in LabVIEW (benutze es seit ca 1Woche) und kenne gerade mal ein paar Grundlagen.
Bis jetzt habe ich mich nur an die eingebaute Hilfe gewendet und fröhlich drauf los probiert.

Nun zu meinem Problem:
Ich wollte für ein Messgerät, dass man normalerweiße über Hyperterminal ansprechen kann und es einem die Messwerte in Textform (z.b NA+00.01 oder NA-00.01) zurückgibt eine Messautomatisierung zusammenstellen.

Sprich die Messwerte sollten automatisch ab einem Anfangswert (in meinem Fall NA+00.01) für eine Vorgegebene Zeit erfasste werden und in einem Datei gespeichert werden.

Die serielle Komunikation, die Zeitsteuerung und auch den Start bei NA+00.01 habe ich hinbekommen nur leider habe ich Probleme mit dem spiechern der Daten:

Das Messgerät schickt jede 1/10sec einen 8Bit-langen Messwert. Ich habe versucht diesen zu speichern indem ich das seriel read einfach in eine loop jedesmal in einer Datei anhänge.
Lieder scheint der Speicherprozess das ganze auszubremesenSad und die Timerfunktion funktioniert nicht mehr richtig.

Meine Frage ist also:
Wie kann ich die Speicherung der Daten verbessern?
Kann ich z.b. die Daten erstmal in den Ram spiechern und am Ende der Messung die Daten in eine Datei speiechern?

Vielen Dank schon mal im Voraus für konstruktive Komenatre.


Tabellarische Datenerfassung über Serielle Schnittestelle. - chiefwiegam - 26.10.2004 10:38

hallo, das ist klar wenn du jedes mal in eine datei zugreifst kann das relativ viel ressoucen brauchen. verwende wenn möglich keine dateizugriffe in loops.

willst du deine dateien kontinuirlich aufnehmen oder nur für eine gewisse zeit? wenn du nur begrenzt lang messen musst, dann kannst du die daten erst in ein array schreiben. und am ende alles mit hilfe der funktion array zu spreadsheet in eine datei schrieben.

g chief


Tabellarische Datenerfassung über Serielle Schnittestelle. - Loknar - 26.10.2004 11:07

Danke für die schnelle Antwort.

Ich will die Daten nur für die Eingestellte Zeit im Timer aufnehmen:
Das ganze soll anfangen die Daten zu spiechern, wenn das Gerät den Ersten Messwert >0 ausgibt (NA+00.01), und aufhören wenn die eingestellte Zeit erreicht ist.

Mit einem Array habe ich es auch schon versucht, aber da der Messwert als string ausgeben wird habe ich ihn nicht in ein array bekommen ( vielleicht habe ich ja etwas übersehen). Die funktion string to array habe ich auch schon probiert, da werden mir zwar daten in ein array geschrieben, jedoch auch wieder zu langsam und auch nicht wirklich das, was ich messe.


Tabellarische Datenerfassung über Serielle Schnittestelle. - chiefwiegam - 26.10.2004 11:46

ich dachte du bekommst pro durchlauf einen wert und nicht mehrere. kannst duch nicht mal die ausgabe eines durchlaufes posten damit man besser versteht was wie umgewandelt werden musst. wenn die zeit wichtig ist sollte auch wenn möglich auf strings verzichtet werden und besser mit zahlenformaten wie z.b. I16 gearbeitet werden.

g chief


Tabellarische Datenerfassung über Serielle Schnittestelle. - Loknar - 26.10.2004 13:08

Das Messgerät gibt im Code-Display die Messwerte so aus:

Zitat:NA+00.00rNA+00.00rNA+00.00rNA+00.00rNA+00.00rNA+00.00rNA+00.00rNA+00.00rNA+00.00
NA+00.00r
Im Normal-Display siehts dann so aus:

Zitat:NA+00.00
NA+00.00
NA+00.00
NA+00.00
NA+00.00
NA+00.00
NA+00.00
NA+00.00
NA+00.00
NA+00.00


Das müssten dann die Datenmenge, die das Messgerät inerhalb von 1sec überträgt (da 10Hz) sein.

Edit:
Ich habe mir mal die LabVIEW7 Demo heruntergeladen, damit ich auch mal an einem anderen Rechner daran arbeiten kann. Ich hatte vorher mit LabVIEW6i gearbeitet.
In der LabVIEW7-Demo wird mir nu aber immer der Fehlercode
-1073807202 vom serial port init ausgeben (Habs auf 2 Rechnern getestet).
Auf dem Rechner mit LabVIEW6i funktioniert es aber weiterhin.
Sind die Versionen nicht Kompatible oder ist das eine einschränkung der Demo?


Tabellarische Datenerfassung über Serielle Schnittestelle. - Oliver Listing - 26.10.2004 16:46

Hallo Loknar,

in einer Simulation habe ich (ohne Wartezeit) über 100k Werte in einer Datei gespeichert.

Chiefwiegam hat Recht, das Dateizugriffe langsam sind, aber nur wenn man auch das öffnen und schließen in der Meßschleife macht.

Hast du deine Schnittstelle richtig konfiguriert?
Dann erhälst du auch immer nur einen Wert.

mfg
Oliver


Tabellarische Datenerfassung über Serielle Schnittestelle. - Loknar - 27.10.2004 13:15

Hallo Oliver,

danke für das Beispiel. Leider bin ich momentan mit Grippe Zuhause Cry und konnte es mir auch nur ohne Messgerät anschauen.
Es sieht aber sehr vielversprechend aus.Big Grin

Jetzt habe ich aber auch gesehen, dass ich vorher die Zeit etwas umständlich genommen habe: Über eine Schleifenwiederholungsindex mit Wartezeit :oops: ( naja bin ja noch blutiger Anfänger).

Edit: Habe es jetzt so wie in dem Beipiel gemacht und mit dem Messgerät getestet. Funktioniert wunderbar.Big Grin

Danke nochmals für die Hilfe.