...ich bring nichtmal ein 'Hallo Welt' in C# zusammen
was macht das denn?
begin_ = 0x030000 | (begin << 8) | 1;
end_ = 0x0A0000 | (end << 8) | 1;
Aufgrund derzeit hohem Spamaufkommens werden neue Nutzer sehr restriktiv behandelt. Nach kurzer "Bewährungszeit" hat man als normaler Nutzer weitreichende Rechte und benötigt auch kein Captcha mehr.
.
Nutzer, die sich danach dennoch als Spammer oder Trolle erweisen, können jederzeit wieder auf diesen Status zurückgesetzt oder gebannt werden.
Dasselbe gilt für Versuche, politische Überzeugungen kund zu tun, egal aus welcher Richtung diese kommen.
.
. Achtung! Verwendet bitte für aktuelle Mäher bzw. falls ihr die Firmware eures Mähers kürzlich aktualisiert habt, den aktuellen Release-Candidate der Robonect-Firmware: https://fw.robonect.de/?latest Diese wird in ein paar Tagen als offizielle Firmware verfügbar sein. (Stand: 03.04.2024)
V0.9 Final - Sommerzeitumstellung
-
- sehr erfahrener Forum-Nutzer
- Beiträge: 425
- Registriert: Mi 27. Jan 2016, 16:08
- Mäher: Gardena R40Li
- Firmware des Mähers (MSW): MSW 5.xx.xx
- Herstellungsjahr: 2012
- Robonect-Modul: Robonect H30x (Rev.1)
- Robonect Firmware: 1.0beta5
- hat sich bedankt: 1 Mal
- wurde gedankt: 3 Male
Re: V0.9 Final - Sommerzeitumstellung
Das erzeugt eine Zahl aus dem Monat, dem Tag des Monats und der Stunde.lembi hat geschrieben:was macht das denn?
begin_ = 0x030000 | (begin << 8) | 1;
end_ = 0x0A0000 | (end << 8) | 1;
0x03 == 3 == Maerz
0x0A == 10 == Oktober
Die Monate werden dann auf das dritte Byte geschoben, daher zu
0x030000 == 196608
0x0A0000 == 655360
Da sieht man, dass die unteren zwei Bytes (0000) komplett unbesetzt sind.
Dann werden die Tage des Monats auf das zweite Byte kopiert
0x030000 | (begin << 8) == 0x031E00 == 204288 (wenn der Beginn am 30.03., also am 30, also 0x1E ist)
0x0A0000 | (end << 8) == 0x0A1A00 == 662016 (wenn das Ende am 26.10., also am 26, also 0x1A ist)
Dann noch die Stunde der Uhrzeit (in dieser Rechnung immer 1, sollte eigentlich 2 oder 3 sein) auf das letzte Byte
0x030000 | (begin << 8) | 1 == 0x031E00 | 1 == 0x031E01 == 204289
0x0A0000 | (end << 8) | 1 == 0x0A1A00 | 1 == 0x0A1A01 == 662017
Die gleiche Rechnung wird dann für das heutige Datum und die momentane Stunde gemacht um dann zu checken, ob dieser Wert zwischen den gerade berechneten Werten liegt, denn dann wird Sommerzeit angenommen.
Das gefaehrliche an der Rechnung sind die Monatskonstanten, bei denen man immer checken muss, ob die Werte 0 oder 1-basiert sind. Die Rechnung
now_ = (pUtc->month << 16) | (pUtc->day << 8) | pUtc->hour;
geht davon aus, dass Monat und Tag des pUtc-Pointers 1-basiert sind.
Gruß
Campus
Campus
-
- Administrator
- Beiträge: 2907
- Registriert: Di 19. Jan 2016, 18:34
- Wohnort: Kiel
- Mäher: Gardena SILENO City 500
- Firmware des Mähers (MSW): MSW 11.xx.xx
- Herstellungsjahr: 2017 (Modell 2018)
- Robonect-Modul: Robonect Hx (Rev.5)
- Robonect Firmware: stets die Allerneuste :-)
- hat sich bedankt: 1 Mal
- wurde gedankt: 60 Male
- Kontaktdaten:
Re: V0.9 Final - Sommerzeitumstellung
Campus hat meine Funktion verstanden.
Zu deinem Bedenken mit dem 1. basierten Monat / Tag: Da ich auch den Rest programmiert habe, bin ich mir da relativ sicher.
Die aktuelle Uhrzeit im Winter ist dann UTC+1, bzw. im Sommer UTC+2.
(Vor Robonect habe ich mir da auch nie Gedanken drüber gemacht )
Zu deinem Bedenken mit dem 1. basierten Monat / Tag: Da ich auch den Rest programmiert habe, bin ich mir da relativ sicher.
Hier habe ich extra UTC verwendet, dass macht es viel einfacher. Denn die Zeitumstellung passiert immer um 1 Uhr Nachts (UTC).Dann noch die Stunde der Uhrzeit (in dieser Rechnung immer 1, sollte eigentlich 2 oder 3 sein) auf das letzte Byte
Die aktuelle Uhrzeit im Winter ist dann UTC+1, bzw. im Sommer UTC+2.
(Vor Robonect habe ich mir da auch nie Gedanken drüber gemacht )
Werbefläche zu vermieten.
Re: V0.9 Final - Sommerzeitumstellung
Ja, danke für die Erklärung. Mit dieser Bit shifterei komm ich nie klar
Das mit den Monaten war mir auch aufgefallen, hab aber dann mal unterstellt das es schon richtig sein wird.
würde bei 0 basierter Zählung im April suchen und käme auf den 30. ... hätte also noch gar keine Umstellung passieren dürfen.
Stunde "1" sollte auch passen, nachdem ja mit UTC gearbeitet wird. Im Winter haben wir (hier zumindest) Local-time = UTC+1, im Sommer UTC+2
UTC 01:00 Uhr ist also bei uns zur Umstellung 2 Uhr und entsprechend sollte das beim Vergleich begin_ <= now_ zur richtigen Zeit zutreffen.
Seh sonst auch nix...
Nur ne Vermutung... Sicher das in year das aktuelle Jahr steht und das die Reihenfolge der übergebenen Variablen korrekt ist?
Das mit den Monaten war mir auch aufgefallen, hab aber dann mal unterstellt das es schon richtig sein wird.
Code: Alles auswählen
for (begin = 31; RtcDayOfWeek(pUtc->year, 3, begin) != 6; begin--)
Stunde "1" sollte auch passen, nachdem ja mit UTC gearbeitet wird. Im Winter haben wir (hier zumindest) Local-time = UTC+1, im Sommer UTC+2
UTC 01:00 Uhr ist also bei uns zur Umstellung 2 Uhr und entsprechend sollte das beim Vergleich begin_ <= now_ zur richtigen Zeit zutreffen.
Seh sonst auch nix...
Code: Alles auswählen
RtcDayOfWeek(pUtc->year, 3, begin)
265ACX Status: kann kein Robonect :)
-
- Forum-Nutzer
- Beiträge: 18
- Registriert: Mo 20. Feb 2017, 13:17
- Wohnort: Dortmund
- Mäher: Husqvarna Automower 105
- Firmware des Mähers (MSW): MSW 6.xx.xx
- Herstellungsjahr: 2016
- Robonect-Modul: Robonect Hx (Rev.3)
- Robonect Firmware: 0.9 final
Re: V0.9 Final - Sommerzeitumstellung
Kenn mich mit C# auch nicht wirklich aus.
Aber sehe ich das richtig, dass die Funktion einen Boolschen Wert liefert und per Definition uint8_t zurückgibt? Passt das?
Gruß,
Martin
Aber sehe ich das richtig, dass die Funktion einen Boolschen Wert liefert und per Definition uint8_t zurückgibt? Passt das?
Admin hat geschrieben: uint8_t RtcIsSummer(tTimeDate* pUtc)
{
[...]
return (begin_ <= now_) && (now_ <= end_);
}
Gruß,
Martin
Robonect Hx Firmware V0.9 (Final)
Automower: 105 (2016) MAIN: 6.14.00 HMI: 7.00.00 SUB: 6.01.00
Automower: 105 (2016) MAIN: 6.14.00 HMI: 7.00.00 SUB: 6.01.00
-
- Administrator
- Beiträge: 2907
- Registriert: Di 19. Jan 2016, 18:34
- Wohnort: Kiel
- Mäher: Gardena SILENO City 500
- Firmware des Mähers (MSW): MSW 11.xx.xx
- Herstellungsjahr: 2017 (Modell 2018)
- Robonect-Modul: Robonect Hx (Rev.5)
- Robonect Firmware: stets die Allerneuste :-)
- hat sich bedankt: 1 Mal
- wurde gedankt: 60 Male
- Kontaktdaten:
Re: V0.9 Final - Sommerzeitumstellung
Ist wird ja auch nicht in C# programmiert, sondern in C. Und c kennt kein bool.
Werbefläche zu vermieten.