
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Ja das Problem ist das ich auf diese Weise nicht mehrere unabhängige Startzeiten anlegen kann. Bsp. das Programm soll bei Stunde 4 und Minute 10 und ein anderes Mal bei Stunde 5 und Minute 8 starten. Durch die Prüfung auf Gleichheit der Stunde und Minute (anders wüsste ich allerdings auch keine Möglichkeit) startet das Programm somit bei Stunde 4 und 8 Minuten, Stunde 4 und 10 Minuten, Stunde 4 und 8 Minuten und Stunde 4 und 10 Minuten da man ja nicht die Minuten einer bestimmten Stunde zuweisen kann > > 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 |