INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo Laika, bei mir funktioniert Dein Programm. > PS: In der Beschreibung steht unter "ZEIGER (^, @)" auch > DEFINE ^bezeichner WORD 'Zeiger auf ein Word im USER-RAM definieren > definiere ich den Zeiger als word ... same procedure as every time Ich verstehe nicht, was Du meinst. Hier das Programm: ' Programm von Laika zum Umlaufpuffer mit 6 Einträgen ' http://ccintern.dharlos.de/forum/lesen.php?eintrag=18010 ' Das Programm funktioniert. include "omax.def" 'Einzelwerte für den gleitenden Mittelwert 'Das ist speziell für das Lesen der Solarleisatung 'Sie wird alle 10 sek gelesen und daraus ein "gleitender Mittelwert" 'über eine Minute gemacht, d.h. es werden immer 6 Werte gelesen 'aufsummiert und durch 6 geteilt define gleitwert word[24] 'Mittelwert der vergangenen Minute define gleitwert_1 word[25] define gleitwert_2 word[26] define gleitwert_3 word[27] define gleitwert_4 word[28] define gleitwert_5 word[29] define gleitwert_6 word[30] define floatwert word[31] : define ^p_gleitwert word[41] ' WORD-Zeiger auf BYTE[41] '--- PrintSpc=ON 'Bei PRINT dezimale Zahlen mit führendem Leerzeichen ausgeben End2Host=ON 'Bei Programmende (siehe END) gleich in den Host-Modus wechseln 'Der wird einmal bei Anlauf auf den ersten Wert der obigen Liste gesetzt, 'rotiert dann immer vom ersten bis letzten Wert, dann wieder zurück auf den ersten : : p_gleitwert = ^gleitwert_1 : #sekunden_zyklus : floatwert = floatwert + 1 'Das ist nur ein Hilfswert zur Kontrolle des Abspeicherns print "10 sec Zählerwerte lesen" gosub gleitwert_aktualisiern PRINT gleitwert_1;gleitwert_2;gleitwert_3;gleitwert_4;gleitwert_5;gleitwert_6 PAUSE 25 IF RXD THEN END : : goto sekunden_zyklus '---------------------------------------------------------------------- #gleitwert_aktualisiern 'Ein: floatwert: neuer Eintrag in die Liste 'Der Zeiger p_gleitwert zeigt noch auf den letzten Eintrag, 'muss also vor dem Eintragen eins weiter geschaltet werden p_gleitwert = p_gleitwert + 1 if p_gleitwert > ^gleitwert_6 then p_gleitwert = ^gleitwert_1 end if @p_gleitwert = floatwert gleitwert = (gleitwert_1 + gleitwert_2 + gleitwert_3 + gleitwert_4 + gleitwert_5 + gleitwert_6) / 6 return Freundliche Grüße Dietmar Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |