Hallo,
wie es scheint dürfte die Funktion gettime() einen Fehler haben. Sobald diese Funktion verwendet wird (selbst in einem IF-Zweig der nie aufgerufen wird), wird die Systemzeit auf 00:00:00 gesetzt.
Beispiel:
a = AUS
if a == EIN then gettime("Uhrzeit-0/2/1") endif
Die gettime() Funktion wird in diesem Beispiel nie aufgerufen. Trotzdem wird beim Programmstart die Systemzeit auf 00:00:00 zurück gesetzt (weil "Uhrzeit-0/2/1" noch keinen Wert besitzt) . Sobald vom Bus ein entsprechendes Zeit-Telegramm kommt passt die Uhrzeit dann (obwohl gettime() eigentlich nicht aufgerufen werden dürte).
Bei der getdate() Funktion besteht dieses Problem übrigens nicht.
Hier dürfte es ein Problem mit der Validierung der gettime() Funktion geben. Vermutlich ist diese Funktion immer invalid, weil die Funktion immer aufgerufen wird, unabhängig davon ob sie Teil einer IF Anweisung ist (habe schon unterschiedliche IF-Varianten mit event(), after() und systemstart() probiert).
Bis jetzt habe ich dafür nur folgenden Workaround:
knx_time = settime()
if event("Uhrzeit-0/2/1") then knx_time = "Uhrzeit-0/2/1"; gettime(knx_time) endif
Da die gettime() Funktion aber wohl bei jedem Programmdurchlauf aufgerufen wird, ist das wohl auch für die Performance vom EibPC sicher nicht so optimal.
Schöne Grüsse,
Klaus
wie es scheint dürfte die Funktion gettime() einen Fehler haben. Sobald diese Funktion verwendet wird (selbst in einem IF-Zweig der nie aufgerufen wird), wird die Systemzeit auf 00:00:00 gesetzt.
Beispiel:
a = AUS
if a == EIN then gettime("Uhrzeit-0/2/1") endif
Die gettime() Funktion wird in diesem Beispiel nie aufgerufen. Trotzdem wird beim Programmstart die Systemzeit auf 00:00:00 zurück gesetzt (weil "Uhrzeit-0/2/1" noch keinen Wert besitzt) . Sobald vom Bus ein entsprechendes Zeit-Telegramm kommt passt die Uhrzeit dann (obwohl gettime() eigentlich nicht aufgerufen werden dürte).
Bei der getdate() Funktion besteht dieses Problem übrigens nicht.
Hier dürfte es ein Problem mit der Validierung der gettime() Funktion geben. Vermutlich ist diese Funktion immer invalid, weil die Funktion immer aufgerufen wird, unabhängig davon ob sie Teil einer IF Anweisung ist (habe schon unterschiedliche IF-Varianten mit event(), after() und systemstart() probiert).
Bis jetzt habe ich dafür nur folgenden Workaround:
knx_time = settime()
if event("Uhrzeit-0/2/1") then knx_time = "Uhrzeit-0/2/1"; gettime(knx_time) endif
Da die gettime() Funktion aber wohl bei jedem Programmdurchlauf aufgerufen wird, ist das wohl auch für die Performance vom EibPC sicher nicht so optimal.
Schöne Grüsse,
Klaus
Kommentar