Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Werte aus Tabelle mit entsprechener Uhrzeit auslesen Kategorie: Programmierung Basic (von Achim - 12.01.2008 19:30)
 Als Antwort auf Werte aus Tabelle mit entsprechener Uhrzeit auslesen von Sebastian - 12.01.2008 15:40
Achim nutzt:  CC1-Station V1.1
> ich suche eine Möglichkeit in einem C-Control Basic Programm eine Wertetabelle anzulegen. Ich habe erfolgreich das DCF-Funkmodul für die genaue Uhrzeit angeschlossen und will nun eine Tabelle mit Zeitwerten einen dementsprechener Variablenwert zuweisen.
> Als Beispiel wenn HOUR 15 und MINUTE 5 dann soll Variable X den Wert y1 annehmen, bei HOUR 16 und MINUTE 9 den Wert y2 annehmen und so weiter.
>
> Da es sehr viele Werte werden hoffte ich auf eine tabellarische Lösung da mir bei den vielen Werten eine Lösung wie etwa if HOUR = 1 then.... IF HOUR = 3 then... direkt im Hauptprogramm sehr Schleifenlastig, unschön und langsam erscheinen.
>
> Leider habe ich nirgendwo dazu etwas finden können. Vielleicht hat einer eine Realisierungsidee?

Wo ist denn das Problem? Die Befehle Table und Looktab kennst Du und die laufen auch auf der Micro? Du brauchst anscheinend drei Tabellen oder eine Tabelle mit je drei Werten. Eine Tabelle / Wert für die Stunde, eine für die Minute und eine für die Aktion.

Dann durchsuchst Du jede Minute die ersten zwei Tabellen / Werte nach Übereinstimmung mit der aktuellen Uhrzeit (Stunde, Minute) und bei Übereinstimmung ergibt die dritte Tabelle / Wert die durchzuführenden Aktion. Da man y1 und y2 so nicht als Tabellenwert abbilden kann, musst Du Dir einen Kenner nehmen, den Du dann nochmal mit einer if-Kette auswertest.

Beispiel (ungetestet):

#loop
'jede Minute einmal
if minute = old_minute then goto loop
old_minute = minute

' Drei eingetragene Werte mit Index 0, 1 und 2
for i=0 to 2
  looktab Stundentabelle, i, h  
  looktab Minutentabelle, i, m
  looktab Aktionstabelle, i, a
  if h=hour and m = minute then gosub mach_aktion
next

goto loop
end

#mach_aktion
if a=1 then x = y1
if a=2 then x = y2
if a=3 then x = 29 * p + 3
return

Table Stundtabelle
15, 16, 18
tabend

Table Minutentabelle
5, 9, 24
tabend

Table Aktionstabelle
1, 2, 3
tabend

Das nur mal, um das Prinzip zu verdeutliche. Das kann man natürlich noch beliebig optimieren, um z. B. nicht jede Minute die ganze Tabelle durchsuchen zu müssen.

HTH

Bye
 Achim

 Antwort schreiben

Bisherige Antworten:

Re: Werte aus Tabelle mit entsprechener Uhrzeit auslesen (von Sebastian - 14.01.2008 12:30)
    Re: Werte aus Tabelle mit entsprechener Uhrzeit auslesen (von Sebastian - 14.01.2008 12:36)