Ich brauche Hilfe:
An dem C-Control/Basic ist am AD[7] ein Lichtsensor angeschlossen.
Die Messung soll 1 Minute gehen
Wie können die Messdaten aufs EEPROM so gespeichert werden, dass
ich sie später auslesen kann.
Robothomas
01.07.2005, 12:52
Hallo Speed!
Du kannst Messwerte im Flash-Speicher speichern und später wieder lesen. Dies ist im Handbuch zur C-Control beschrieben, siehe www.c-control-support.de Den entsprechenden Teil habe ich hier angehängt.
MfG,
Robothomas
Dateifunktionen
Die Dateifunktionen erlauben das Aufzeichnen von Messwerten oder anderen Daten oder können zum Abspeichern von Information benutzt werden, die nach Ausfall der Betriebsspannung wieder in die Programm-variablen geladen werden sollen. Der Speicherbereich im FLASH Speicher nach dem Anwenderprogramm –meist der größte Teil - steht für diesen Zweck zur Verfügung. Der Speicher-Bereich wird als eine Datei verwaltet, auf die lesend oder schreibend zugegriffen werden kann, nachdem sie mit dem entsprechenden Attribut geöffnet wurde. Der Befehl zum Öffnen der Datei lautet wie folgt:
OPEN# FOR WRITE
OPEN# F OR APPEND
OPEN# FOR READ
Dabei bedeutet WRITE das Öffnen zum Schreiben mit Überschreiben eventueller alter Aufzeichnungen, APPEND das Öffnen zum Schreiben mit Anhängen der neuen an die alten Aufzeichnungen und READ das Öffnen zum Auslesen der Aufzeichnungen. Es können nur Integerwerte gespeichert und gelesen werden. Jeder Wert belegt also 2 Bytes im
Speicher. Das Schreiben und Lesen erfolgt mit den Befehlen
PRINT# term
wobei das berechnete Ergebnis des Terms gespeichert wird, beziehungsweise
INPUT# variable
,wobei variable eine definierte Integervariable des Programms bezeichnet. Schreiben in und Lesen aus der Datei erfolgt streng sequentiell. Dafür wird intern ein Dateizeiger verwaltet, der nach jedem
Zugriff um 1 erhöht wird. Vor jedem Schreiben sollte geprüft werden, ob noch genügend Platz im Speicher zur Aufnahme der Daten vorhanden ist. Dafür kann die Funktion FILEFREE abgefragt werden, die als Ergebnis die Größe des noch freien Speichers liefert (in Words). Folgendes Beispiel
zeigt die Anwendung der Funktion
DEFINE a WORD
DEFINE b WORD
DEFINE c WORD
DEFINE blocksize 3
. . .
IF FILEFREE >= blocksize THEN GOSUB writeblock
. . .
#writeblock
PRINT# a
PRINT# b
PRINT# c
RETURN
Vor jedem Lesen sollte geprüft werden, ob noch weitere Daten aufgezeichnet sind. Die Funktion dafür lautet EOF (,,end of file”). Ihr Ergebnis ist -1, wenn in der Datei keine weiteren Daten verfügbar sind,
27 sonst 0. Die Abfrage der EOF Funktion sollte das Auslesen von Datenblocks in gleicher Weise rahmen, wie beim Schreiben der Daten.
IF NOT EOF THEN GOSUB readblock
. . .
#readblock
INPUT# a
INPUT# b
INPUT# c
RETURN
Nach Beenden eines Dateizugriffs sollte die Datei sofort wieder geschlossen werden. Erst dann sind die Daten vor einem Spannungsausfall oder Reset des Systems sicher. Der Befehl dafür lautet
CLOSE#
und hat keinen Parameter.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.