Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> > Hallo, ich habe eine Frage zur Speicherung in Eprom oder Ram. > > Kann man Strings in ein Array speichern ? Ich möchte als Datenlogger das Datum und die Uhrzeit fortlaufend > > speichern oder muss ich das umständlich mit strx.getnum umwandeln ? > > > > MfG > > > > R. Mandel > > Hallo, > > ich benutze genau diese Funktion: Event-Logging über V24 und parallel in ein EEPROM. > Ich habe 2 EEPROMS: eines für alle Konfigurationseinstellungen > (hier liegen auch die Start/Ende Adressen für das LogEEPROM ab) > Im 2. EEPROM (Adresse 3) speichere ich die letzten Log-Events mit Datum und Text als Ringspeicher. > Jedoch habe ich es mir hier mit der Speicherverwaltung einfach gemacht: > Jede Eintrag benötigt 64 Byte (32 für den Zeitstempel und 32 für den Text) > > Aus den restlochen Code rufe ich nur die function log() > z.B. log("Steuerung initialisiert"); oder bei variablen log(logstring); > > Hier mal der Quellcode: > <code> > //----------------------------------------------------------------------------------- > function log (string s) //Logging von Events zur Ausgabe auf hwcom und in EEPROM > //----------------------------------------------------------------------------------- > {string time; > hwcom.put(13); //Carriage Return - Cursor an den Anfang der Zeile setzen > time=(system.day()/10+0x30) + ((system.day()%10)+0x30); //Tag ausgeben > time=time + "."; //Punkt zwischen Tag und Monat > time=time + (system.month()/10+0x30) + ((system.month()%10)+0x30); //Monat ausgeben > time=time + "."; //Punkt zwischen Monat und Jahr > time=time + (system.year()/1000+0x30) + (((system.year()%1000)/100)+0x30); //Jahr ausgeben > time=time + ((system.year()%100)/10+0x30) + ((system.year()%10)+0x30); //Jahr ausgeben > time=time + 32; //ASCII-Zeichen 32 = Blank > time=time + (system.hour()/10+0x30) + ((system.hour()%10)+0x30); //Stunde ausgeben > time=time + ":"; //Doppelpunkt zwischen Stunde und Minute > time=time + (system.minute()/10+0x30) + ((system.minute()%10)+0x30); //Minute ausgeben > time=time + ":"; //Punkt zwischen Minute und Sekunde > time=time + (system.second()/10+0x30) + ((system.second()%10)+0x30);//Sekunde > time=time + 32; //ASCII-Zeichen 32 = Blank > time=time + 32; //ASCII-Zeichen 32 = Blank > hwcom.send(time,str.length(time)); //Zeitstempel über hwcom senden > wait hwcom.ready(); > hwcom.send(s,str.length(s)); // Logtext über hwcom senden > hwcom.ret(); > // Schreiben des Logs in EEPROM (24C64 auf Adresse 3 ) > eeprom.writestr(3,EEStart,time); //Zeitstempel > eeprom.writestr(3,EEStart+32,s); //Logtext > EEStart = (EEStart+64); // Schreibpointer hochsetzen > if EEEnde < EEStart EEEnde=EEStart; // Endpointer mitschleppen, bis Ringspeicher voll ist > if EEStart >= 0x2000 EEStart = 0x0000; //Wenn EEProm Ende, dann wieder vorne beginnen > eeprom.writeint(0,513,EEStart); // neue Werte Restartfest im 1. EEPROM sichern > eeprom.writeint(0,515,EEEnde); > }; > //----------------------------------------------------------------------------------- > function leselog() // EEProm Logfile lesen > //----------------------------------------------------------------------------------- > {int i; //Schleifenzähler > string s; //Stringinhalt > byte y; // Stringlänge > if debug //Ausgabe der Pointer > { > s="EEStart: "; > str.putint(s,EEStart); > hwcom.send(s,str.length(s)); > wait hwcom.ready(); > s="EEEnde: "; > str.putint(s,EEEnde); > hwcom.send(s,str.length(s)); > wait hwcom.ready(); > hwcom.ret(); > }; > for i = 0 ... (EEEnde-64) step 64 // von Anfang bis Endpointer-64 lesen > { > y=eeprom.readstr(3,i,s); //y liefert die Stringlänge, keine Fehlerbehandlung bei y=0 > hwcom.send(s,y); > wait hwcom.ready(); > y=eeprom.readstr(3,i+32,s); > hwcom.send(s,y); > wait hwcom.ready(); > hwcom.ret(); > if i >= 0x1fc0 break; // nicht über Bereich hinauslesen falls falscher Pointer > }; > }; > </code> > > Vielleicht dient dies ja als Anregung. > > Gruß > Jörg
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB