Zugriff auf benutzerdefinierte Variablen Kategorie: Programmierung (von Horst - 24.12.2006 12:48) | ||
| ||
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) |