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

Zugriff auf benutzerdefinierte Variablen Kategorie: Programmierung (von Horst - 24.12.2006 12:48)
Ich nutze:
C-Control II Unit, CC2-Application-Board, CC2-ReglerBoard
In meiner Heizungssteuerung habe ich mehrere benutzerdefinierte Variablen definiert.

Einige dieser Varibalen setze ich um in ein Byte-Feld und diese dann über die Schnittstelle
an das Auswerteprogramm auf dem PC zu senden.

Frage: kann ich auf die Variable im Hauptspeicher direkt zugreifen und die benutzerdef. Variable
direkt mit dem copy-Befehle in ein Bytefeld übertragen?

Hier ein Beispiel wie es momentan programmiert ist:

 
//Konstanten für Einstell_Vektor
const EV_lang = (2*4) + (11*2) + 42; //Anzahl der Bytes: 72
const EV_V1 = 1;
const EV_V2 = 0;
type Einstell_Vektor
    {
    byte  Version_gr;
    byte  Version_kl;
    long  Prog_Datum;
    long  Prog_Zeit;
    int   MischerKenn_x2;
    int   MischerKenn_x1;
    int   MischerKenn_x0;
    int   HeizKenn_x2;
    int   HeizKenn_x1;
    int   HeizKenn_x0;
    byte  Mischerfaktor;
    byte  Mischer_max_Laufzeit;
    byte  Mischer_min_Zeit;
    byte  Mischer_Wartezeit;
    byte  Mischer_Toleranz;
    byte  Aufheiztag;
    int   Konfiguration;
    int   Zustand;
    int   Aufheiztemp;
    int   Zeitversatz_Kamin_Brenner;
    byte  Durch_Std_von;
    byte  Durch_Std_bis;
    int   Durch_Temp;
    byte  Zu_R[16];
    byte  Zu_T[16];
    }

//Fuktion zum Umsetzen der Variable in Bytefeld
// zum Ã?bertragen an PC
function EinstV_to_Umsetz()
{
   byte i;
   //Schreibt den Einstell-Vektor in Umsetz-Bytearray
   um[0] = Einst.Version_gr;
   um[1] = Einst.Version_kl;
   mem.putlong(um, 2, Einst.Prog_Datum);
   mem.putlong(um, 6, Einst.Prog_Zeit);
   mem.putint(um, 10, Einst.MischerKenn_x2);
   mem.putint(um, 12, Einst.MischerKenn_x1);
   mem.putint(um, 14, Einst.MischerKenn_x0);
   mem.putint(um, 16, Einst.HeizKenn_x2);
   mem.putint(um, 18, Einst.HeizKenn_x1);
   mem.putint(um, 20, Einst.HeizKenn_x0);
   um[22] = Einst.Mischerfaktor;
   um[23] = Einst.Mischer_max_Laufzeit;
   um[24] = Einst.Mischer_min_Zeit;
   um[25] = Einst.Mischer_Wartezeit;
   um[26] = Einst.Mischer_Toleranz;
   um[27] = Einst.Aufheiztag;
   mem.putint(um, 28, Einst.Konfiguration);
   mem.putint(um, 30, Einst.Zustand);
   mem.putint(um, 32, Einst.Aufheiztemp);
   mem.putint(um, 34, Einst.Zeitversatz_Kamin_Brenner);
   um[36] = Einst.Durch_Std_von;
   um[37] = Einst.Durch_Std_bis;
   mem.putint(um, 38, Einst.Durch_Temp);
   for i = 0...15
      um[40 + i] = Einst.Zu_R[i];
   for i = 0...15
      um[56 + i] = Einst.Zu_T[i];
}

//Funktion zum Umsetzen der Daten vom PC in benutzetrdef. Variable
function Umsetz_to_EinstV()
{
   byte i;
   //Schreibt das Bytefeld in Einstell-Vektor um
   Einst.Version_gr = um[0];
   Einst.Version_kl = um[1];
   Einst.Prog_Datum = mem.getlong(um, 2);
   Einst.Prog_Zeit = mem.getlong(um, 6);
   Einst.MischerKenn_x2 = mem.getint(um, 10);
   Einst.MischerKenn_x1 = mem.getint(um, 12);
   Einst.MischerKenn_x0 = mem.getint(um, 14);
   Einst.HeizKenn_x2 = mem.getint(um, 16);
   Einst.HeizKenn_x1 = mem.getint(um, 18);
   Einst.HeizKenn_x0 = mem.getint(um, 20);
   Einst.Mischerfaktor = um[22];
   Einst.Mischer_max_Laufzeit = um[23];
   Einst.Mischer_min_Zeit = um[24];
   Einst.Mischer_Wartezeit = um[25];
   Einst.Mischer_Toleranz = um[26];
   Einst.Aufheiztag = um[27];
   Einst.Konfiguration = mem.getint(um, 28);
   Einst.Zustand = mem.getint(um, 30);
   Einst.Aufheiztemp = mem.getint(um, 32);
   Einst.Zeitversatz_Kamin_Brenner = mem.getint(um, 34);
   Einst.Durch_Std_von = um[36];
   Einst.Durch_Std_bis = um[37];
   Einst.Durch_Temp = mem.getint(um, 38);
   for i = 0...15
      Einst.Zu_R[i] = um[40 + i];
   for i = 0...15
      Einst.Zu_T[i] = um[56 + i];
}




    Antwort schreiben


Antworten:

Re: Zugriff auf benutzerdefinierte Variablen (von André H. - 26.12.2006 20:47)