Gast
#1058972
Hi, ich hab ein Problem mit der Programmerstellung, d.h. genauer gesagt, ich weiss nicht, wie ich es den Ablauf lösen soll. Aber erstmal die Eckdaten. Ich möchte eine "bessere" Zeitschaltuhr programmieren. Die Hardware ist vorhanden, aufgebaut, funktioniert. Vorhanden sind ein Display, eine Tastatur, DCF77, serielle Schnittstelle, EEPROM, zwei Relais. Die Software-Treiber für die Einzelkomponenten wie LCD, Tastatur, usw. sind ausgetestet und funktionieren. Die Frage, die sich mir nun stellt, wie tacker ich daraus die Applikation zusammen? Die Applikation soll die Relais in verschiedenen Betriebsarten ansteuern können. Zum einen eine simple Countdown-Funktion, also Relais für eine bestimmte Zeit aktiv, dann aus. Zum anderen soll es wie bei "normalen" Zeitschaltuhren möglich sein, eine Start- und Stopzeit anzugeben (vier pro Tag). Der User-Input für das Gerät soll entweder durch die Tastatur oder die serielle Schnittstelle erfolgen. Was mir jetzt fehlt, ist der Durchblick, wie ich von der o.g. Anforderung zum Programmablauf komme, also quasi der FlowChart an sich, und wie ich das dann löse. Der Grundgedanke ist eine Art StateMachine. Die SM verwaltet für jedes Relais den Zustand, also die Betriebsart, und prüft in Abhängigkeit davon, ob die jeweilige Zeit abgelaufen bzw. erreicht ist. Soweit so gut. Wie bringe ich jetzt in diese SM z.B. den User-Input? Oder ist es besser, für jede "Komponente" eine eigene SM zu implementieren? Also eine fürs Display, eine für die Eingabe, usw. Ich würde z.B. schon gerne die Eingabe über Tastatur/Schnittstelle von der Ausgabe auf dem Display getrennt halten (ist glaub ich auch der professionelle Weg), aber wie realisier ich das dann? Ich möchte nach Möglichkeit auch drauf verzichten, dass das Programm an irgendeiner Stelle auf etwas "warten" muss, sondern es so lösen, dass quasi immer für jede Komponente geprüft wird, ob sich was geändert hat, falls ja, wird eben die Änderung bearbeitet, ansonsten eben die nächste Komponente bedient. Vielleicht kann mir jemand n Kick in die richtige Richtung geben? Ralf