
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> 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 |