PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : EOF Befehl



Holger_2
25.11.2007, 11:46
Hallo,

ich will den restlichen Speicher meiner M-Unit 2.0 zum Speichern von Daten (Temperaturmesswerte) verwenden. Das Programm soll in bestimmten Zeitintervallen Daten in den Speicher schreiben. Die Anzahl der Daten ist dabei nicht fest.
Zu einem späteren Zeitpunkt soll durch drücken einer Taste der Speicher ausgelesen werden und mit Hilfe eines Hyperlink-Programms in den PC übertragen werden.
So weit so gut.

Das Speichern funktioniert ja auch schon sehr schön.
Wo es Probleme gibt ist das Auslesen. Meine Idee war es mit dem EOF Befehl das Ende des Daten-Files abzufragen um nur die Daten auszulesen die ich auch gespeichert habe.

Das Auslesen der Daten erfolgt in einer Schleife mit der Befehlskombination:
Do
....
...
Loop Until EOF = 0

Ergebnis: Es werden nicht nur die Daten aus dem Speicher ausgelesen die beim letzten einlesen der Daten gespeichert wurden, sondern der gesamte Speicher der M-Unit wird ausgelesen. Also auch Daten die bereits uralt sind.

Noch eine Kleinigkeit:
Vor dem Speichern der Daten kontrolliere ich den freien Speicher mit dem Befehl: FILEFREE
Ergebnis: 4505, was bedeuted, dass der gesamte Speicher frei ist.
Nach dem der Speichervorgang beendet wurde (Drücken einer Taste)
kontrolliere ich nochmals den freien Speicher, mit dem Ergebnis, dass der freie Speicher genau um die gespeicherten Daten reduziert ist.

Hat da jemand eine Idee, wie ich nur die Daten aus dem Speicher auslesen kann, die ich beim letzten einlesen gespeichert habe.

Mit freundlichen Grüßen und vielen Dank im Voraus

Alex

FriLu
25.11.2007, 23:39
Hallo,
m.E. gibt EOF -1 (ON) zurück, wenn das Fileende erreicht ist-
Also: IF EOF THEN GOTO ...
Der befehl ist nur verfügbar/sinnvoll wenn das File geöffnet ist -OPEN# for Read- das EEProm-Objekt: EEPROM.READ wert1, wert2, usw schliesst die Datei sofort wieder!
Also: vor der ausleseschleife open# for read, in der schleife input# wert (define as word) dann wert ausgeben(ACHTUNG: Print ist umgeleitet!), nach der schleife close# müsste gehen - EOF ( End_Of_File)=ON beachten, bei dir müsste: LOOP UNTIL EOF reichen.
MfG Lutz

puh, ich merke gerade, die werte über die serielle auszugeben funzt so nicht...
da muss ich erst mal drüber schlafen :-b