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 Leo, > > > Ich möchte Variablen loggen. > > Um die Sache zu komplizieren möchte ich aus einen Set aus logbaren Variablen (ideal wäre natürlich, > > wenn zu diesem Set alle globalen Variablen zählen) zur Laufzeit auswählen, welche ich nun tatsächlich > > logen will. > > > > Ich denke, daß schon einige von Euch dieses Problem erfolgreich gelöst haben und bin auf Vorschläge > > gespannt. > > > > In C wäre die Sache natürlich einfach: Ich würde ein Array mit pointern auf die Speicherstellen machen, > > die ich loggen will. > > Direkte Pointer gibt es in C2 nicht. > Es werden z.B. bei Parameterübergbe bei Funktionen Arrays, Strings und eigene Datentypen > nur als Referenz übergeben, aber das ist sicher nicht das, was Du meinst. > > Wenn es nur darum geht, aus einem Datenarray bestimmte Werte mitteils eines > zweiten Arrays, in dem die Indizies stehen, herauszupicken, kann man > sehr einfach folgendes machen: > <code> > const Set1[]=0,5,8,9,12,13,-1; > const Set2[]=1,2,5,13,14,15,16,-1; > int Data[18]; > ... > > i=0; > while Set1[i]!=-1 > { > tuwas(Data[Set1[i]]); > i=i+1; > } > ... > while Set2[i]!=-1 > { > tuwas(Data[Set2[i]]); > i=i+1; > } > </code> > Wenn Du die Daten aus einzelnen Variablen holen willst, > wird's etwas schwieriger. > Dazu mußt Du erstmal die Speiceradressen der Variablen kennen. > Wenn die Variablen nacheinander definiert sind, liegen sie schonmal > alle in einer Reihe im RAM. > Um die Startadresse herauszufinden, ist die einfachste Möglichkeit, > ein Bytearray mit zwei Elementen unmittelbar vor den eigentlichen Variablen > zu definieren und die Adresse mittels <code>mem.getMemAddrByte()</code> zu ermitteln. > Der Wert plus zwei ist das die erste Variable. > Mit diesem Wert kann man mittels VM-Codes oder auch den Lesefunktionen > des Moduls flash.c2 direkt zugreifen. > In wieweit es einfacher geht, kann ich derzeit noch nicht sagen, da ich das OS > noch nicht komplett analysieren konnte. > > Wenn alle logbaren Daten aber immer dasselbe Datenformat besitzen, also z.B. Integer, > dann wäre es das einfachste, wenn Du einfach ein Array definierst und wie im Beispiel > oben beschrieben darauf zugreifst. > Da man natürlich lieber mit Namen, als mit Indizies arbeitet, ist es sinnvoll, für > die Indizies auch Konstanten zu definieren: > <code> > const Dies=0; > const Das=1; > const Nochwas=2; > const hoppla=3; > usw. > </code> > Beim obigen Konstantenarray Set1[] oder Set2[] kann man dann genauso verfahren: > <code>const Set1[]= Dies, Das, 5, 8, hoppla;</code> > Die Einzelkonstanten für die Indizies müssen in der Reihenfolge natürlich oberhalb > des Konstantenarrays definiert sein. > > Ich hoffe, das hilft Dir etwas weiter. > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB