Re: Kennfeld und Array Kategorie: Programmierung (von André H. - 14.05.2006 15:12) | ||
Als Antwort auf Kennfeld und Array von Alexander Richter - 14.05.2006 11:50 | ||
| ||
Hallo Alex, > ich habe mir vor einiger Zeit eine C-Control II zugelegt, mir mit der Zeit ein Applicationboard drum herum gebaut > (alles was ich brauche) und scheiter nun leider so ein wenig an der Programmierung. > Oft komme ich mit lesen und fragen irgendwie weiter... aber nun bäuchte ich professionelle Hilfe :-) > Also, ich möchte eine Art Kennfeld erstellen, in dem eine Ausgangsvariable von 2 Eingangsvariablen > abhängt; ich messe z.B. Spannung 1 und Spannung 2, und mein Ausgabewert ist Spannung 3. Mit dem Stichwort Array > kam ich via Internetrecherche nur bedingt weiter, da C++ in dieser Hinsicht ja doch etwas anders > funktioniert und die C-Control laut Handbuch nur eindimensionale Arrays unterstützt. Also kurzum: Ich > komme als motivierter Laie mit dem Handbuch nur Mühsam zurecht. > Daher meine Bitte an Euch: Ich erwarte nicht da� mir hier einer ein Programm runterschreibt, aber > für eine Literaturempfehlung oder noch vielmehr ein BEISPIELPROGRAMM, das diese Problematik bearbeitet, > wäre ich sehr dankbar! Rudimentär gesehen kann die CC2 keine Mehrdimensionalen Arrays. Technisch gesehen jedoch schon. Die Frage ist nur, wie gro� dieses Array sein mu�. Als Variable kann man beispielsweise ein zweidimensionales Array in C2 folgenderma�en anlegen: type meinArray { int y[64]; } meinArray x[64]; Das wäre ein Beispiel für ein zweidimensionales Integer-Array mit 64 x 64 Feldern. Und so wird z.B. darauf zugegriffen: x[0].y[1]=12345; x[5].y[4]=6789; Sei aber vorsichtig it der Grö�e. Die CC2 hat "nur" 64kB RAM. Schon einfache Mehrdimensionale Arrays können sehr gro� werden. Das obige Array hat beispielsweise eine Grö�e 64 x 64 x 2 Byte= 8192Byte = 8kB Auf dieselbe Weise könnte man auch dreidimensionale Arrays aufbauen. Aber hier kommt man sehr schnell an die Grenzen des RAMs, so da� man dann eher gro�e externe Speciher benötigt. (Ein dreidimensionales Integer-Array mit z.B. 64 x 64 x 64 Feldern würde 512kB benötigen.) Auch über Konstanten-Arrays könnte man mehrere Dimensionen verwirklichen. Dies jedoch nur über den mathematischen Umweg. D.h., Du benutzt ein eindimensionales Array als zweidimensionales. Der Vorteil hier wäre jedoch, da� 128kB für konstanten bereitstehen. Zusätzlich könnte man zwei komplette Flashsegmente (ebenfalls 128kB) dafür "mi�brauchen". Ein einfaches Bsp. für ein kleines Konstanten-Array, das zweidimensional genutzt wird: (5x5 Felder) const Array[]= 1, 2, 3, 4, 5, 11,12,13,14,15, 21,22,23,24,25, 31,32,33,34,35, 41,42,43,44,45; const Offset=5; function getArray(int x, int y) returns int { return Array[x+(y*Offset)]; } Auf das Array wird dann einfach über die Funktion getArray() zugegriffen: wert=getArray(0,4); //erste Spalte, fünfte Zeile Die Frage ist aber, ob Du das ganze überhaupt benötigst, oder, ob sich Deine Aufgabe evtl. auch rechnerisch löschen lä�t. Beschreib' mal grob, was Du vorhast, vielleicht gibt's eine ganz einfache Lösung unter Verwendung einer Formel. MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: Kennfeld und Array (von Alexander Richter - 14.05.2006 22:40) |