Zurück   KNX-User-Forum > Supportforen > eibPC
knx-user-forum - International KNX Award Winner 2010


Links
Kalender
Spende

Antwort
 
Themen-Optionen Ansicht
  #31  
Alt 11.01.2013, 11:15
Erfahrener Benutzer
 
Registriert seit: 18.12.2008
Ort: Landkreis Ludwigsburg
Beiträge: 1.002
Tessi befindet sich auf einem aufstrebenden Ast
Standard

Zitat von enertegus Beitrag anzeigen
Was spricht gegen:
epc Code:
  1. s=Wert*convert(pow(2f32,convert(Shifter),0f32),0u64)
Wenn es denn korrekt funktioniert spricht dagegen nur noch der unnötig hohe Rechenaufwand verglichen mit einem nativ implementierten Shift - ob das im praktischen Betrieb spürbar wird, kann ich aber nicht abschätzen.
Es stellt sich mir momentan halt noch die Frage, ob der von pow() gelieferte f32-Wert auch für alle in Frage kommenden Exponenten (0..63) ein hinreichend genaues Ergebnis liefert, das nach Konvertierung in ein u64 auch noch genau das Bitmuster ergibt, das es theoretisch ergeben muss. Hat das schon jemand mal prüfen können?

Zitat von enertegus Beitrag anzeigen
und dann halt schick verpacken z.b. in ein Makro
ShiftLinks(Wert,Shifter)
usw..
Klar, das ist dann die Kür und dann auch sicher kein wirkliches Problem mehr.
__________________
Tessi
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #32  
Alt 11.01.2013, 11:24
Benutzerbild von enertegus
Erfahrener Benutzer
 
Registriert seit: 25.04.2009
Ort: Forchheim
Beiträge: 4.453
enertegus sorgt für eine eindrucksvolle Atmosphäreenertegus sorgt für eine eindrucksvolle Atmosphäreenertegus sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat von Tessi Beitrag anzeigen
Es stellt sich mir momentan halt noch die Frage, ob der von pow() gelieferte f32-Wert auch für alle in Frage kommenden Exponenten (0..63) ein hinreichend genaues Ergebnis liefert, das nach Konvertierung in ein u64 auch noch genau das Bitmuster ergibt, das es theoretisch ergeben muss.
Wenn Du einen 32 Bit Rechner hast, kannst Du da ausprobieren. Ich wage die Behauptung, das wird stimmen.
Nicht verwechseln f16: Ungenau und zum Rechnen kaum geeignet, f32: wie bei jedem "normalen" 32 Bit PC.
__________________
offizielles Supportforum für den Enertex® EibPC: http://knx-user-forum.de/eibpc/
Webshop für Produkte rund um Enertex® : http://shop.enertex.de
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #33  
Alt 19.01.2013, 23:23
Benutzerbild von wetronic
Benutzer
 
Registriert seit: 08.07.2010
Ort: Leinburg
Beiträge: 46
wetronic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

wollte mich noch abschliessend melden - habe das ganze jetzt fertig:

epc Code:
  1. //***************************************************************************
  2. //*    WE_Ostertag
  3. //***************************************************************************
  4. //*    Bestimmung des Ostersonntag => Berechnung der bewegl. Feiertage
  5. //*    moeglich
  6. //*    Jahr muss 4-Stellig vorliegen und als s32 definiert sein !!
  7. //***************************************************************************
  8.  
  9.  
  10. :begin WE_Ostertag ( jahr, ostern )
  11.  
  12. :var dd@
  13. :var cc@
  14. :var jj@
  15. :var ee@
  16.  
  17. dd@ = MOD( MOD(jj@,19s32) * 19s32 + 24s32, 30s32);
  18. if dd@ > 27s32 then dd@ = dd@ -1s32 endif;
  19.  
  20. ee@ = convert(FLOOR( convert(jj@, 1f16 ) *5f16/4f16),1s32 )+ dd@ + 1s32;
  21. cc@ = MOD( ee@, 7s32 );
  22. ostern^Tag = 28s32 + dd@ - cc@;            /* Ostertag            */;
  23.  
  24. if ostern^Tag <= 31s32 then ostern^Mon = 3s32 endif
  25.  
  26. if ostern^Tag > 31s32 then {            /* Ostern im April    */;
  27.     ostern^Tag = ostern^Tag - 31s32;
  28.     ostern^Mon = 4s32
  29. } endif
  30.  
  31. :return convert( ostern^Tag, $$ ) + $.$ + convert( ostern^Mon, $$ ) + $.$
  32. :end

den daraus abgeleiteten Ostertag nehme ich dann und berechnen damit die
Distanz in Tagen zum Jahr 1970 ( ähnlich Unixtime ) und davon abgeleitet die beweglichen Feiertage ...
Zur Vereinfachung habe ich hierzu 2 Makro´s Datwert und Datwert2Date.

Danke nochmals an alle - wer die restlichen Makros haben möchte => bitte PN

Gruss Wolfgang
FB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}FB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}FB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}
__________________
WolfgangFB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #34  
Alt 20.01.2013, 01:41
Benutzerbild von Bodo
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Ort: Zürich
Beiträge: 4.633
Bodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle Atmosphäre
Standard

Hoi

Ich versteh' den Code nicht. Die Eingangsvariablen "jahr" und "ostern" kommen im code scheinbar nicht vor?
"jahr" ist mir klar, aber was ist "ostern"?
__________________
Grüsse Bodo Nach bst. Wissen, ohne Gewähr; Fragen gehören ins Forum, und nicht in mein Postfach; EibPC-Fan; Wiregate-Fan; Alix1d mit eibd, linknx, knxweb, 30x 1-Wire, mjpg_streamer, e-mail, sms, growl-notif., CUL; Dreambox8000HD stream VLC's, TV-Browser start-record; Fritzbox 7270, voip; HP ProCurve 1810G 24 GE; Zotac ZBOX HD-ND22 mit SU2300 und Ubuntu 11.10 FullHD; MusicPal; SqueezeboxBoom; NEU Russound C5; iPhone 5 IOS6.1 JB PHP Lighty

Geändert von Bodo (20.01.2013 um 01:46 Uhr)
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #35  
Alt 20.01.2013, 13:08
Benutzerbild von wetronic
Benutzer
 
Registriert seit: 08.07.2010
Ort: Leinburg
Beiträge: 46
wetronic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Bodo,

die Variablen jahr und ostern sind Übergabevariablen und vorab gesetzt. Nachstehend der Aufruf im Programm. Die GA '3/0/8' trägt das aktuelle Kalenderjahr - über c_KalOster erhalte ich die Rueckgabe
von Tag und Monat ...

epc Code:
  1. // Jahreswechsel => bewegliche Feiertage neu berechnen
  2. if change('3/0/8's32 ) or systemstart() then {
  3.  
  4.     c_KalJahr = '3/0/8's32;    /* aktuelles Jahr, Übergabeparameter        */;
  5.  
  6.     WE_Ostertag( c_KalJahr, c_KalOster );    /* Berechnung OsterTag        */;
  7.  
  8.     /* AnzTage bis Ostern     */;
  9.     c_OsterDay = WE_Datwert( c_KalJahr, c_KalOsterMon, c_KalOsterTag );
  10.     /* Berechnung der bewegl. feiertage    */;
  11.     c_AschermittwochDay = c_OsterDay - 46s32;
  12.     c_FaschingsDay = c_AschermittwochDay - 1s32;
  13.     c_OstermontagDay = c_OsterDay + 1s32;
  14.     c_HimmelfahrtDay = c_OsterDay + 39s32;
  15.     c_PfingstDay = c_OsterDay + 49s32;
  16.     c_PfingstmontagDay = c_PfingstDay + 1s32;
  17.     c_FronleichDay = c_OsterDay + 60s32;
  18.     /* Bestimmung der DatumStrings    */;
  19.     WE_DatwertToDate( c_Ostern, c_OsterDay );
  20.     WE_DatwertToDate( c_Ostermontag, c_OstermontagDay );
  21.     WE_DatwertToDate( c_Aschermittwoch, c_AschermittwochDay );
  22.     WE_DatwertToDate( c_Fasching, c_FaschingsDay );
  23.     WE_DatwertToDate( c_Himmelfahrt, c_HimmelfahrtDay );
  24.     WE_DatwertToDate( c_Pfingsten, c_PfingstDay );
  25.     WE_DatwertToDate( c_Pfingstmontag, c_PfingstmontagDay );
  26.     WE_DatwertToDate( c_Fronleich, c_FronleichDay )
  27.  
  28. } endif

Mir ist klar, fuer die Übergabe und Rueckgabe der Werte gibt es viele Wege ;-)
Ich wollte hier im Kern den geprüften und funktionierenden Code fuer die Osterberechnung zeigen ...
FB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}FB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}
__________________
WolfgangFB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #36  
Alt 20.01.2013, 15:08
Benutzerbild von Bodo
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Ort: Zürich
Beiträge: 4.633
Bodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle Atmosphäre
Standard

Hoi

Und was ist / woher kommt "c_KalOster" ?
Dann geb' ich schon ruh'.
__________________
Grüsse Bodo Nach bst. Wissen, ohne Gewähr; Fragen gehören ins Forum, und nicht in mein Postfach; EibPC-Fan; Wiregate-Fan; Alix1d mit eibd, linknx, knxweb, 30x 1-Wire, mjpg_streamer, e-mail, sms, growl-notif., CUL; Dreambox8000HD stream VLC's, TV-Browser start-record; Fritzbox 7270, voip; HP ProCurve 1810G 24 GE; Zotac ZBOX HD-ND22 mit SU2300 und Ubuntu 11.10 FullHD; MusicPal; SqueezeboxBoom; NEU Russound C5; iPhone 5 IOS6.1 JB PHP Lighty
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #37  
Alt 20.01.2013, 15:48
Benutzerbild von wetronic
Benutzer
 
Registriert seit: 08.07.2010
Ort: Leinburg
Beiträge: 46
wetronic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Bodo,

kein Problem: c_KalOster ergibt nur den Rueckgabewert und wird durch
das Makro definiert. Ich kann somit zugreifen auf:
c_KalOsterMon ( = Monat des Ostertages ) und c_KalOsterTag ( = Tag von Ostern ) zugreifen. Als Return erhalte ich auch noch einen String im Format DD.MM. den ich aktuell aber nicht verwende.

Gruss

FB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}
__________________
WolfgangFB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #38  
Alt 20.01.2013, 16:05
Benutzerbild von Bodo
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Ort: Zürich
Beiträge: 4.633
Bodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle AtmosphäreBodo sorgt für eine eindrucksvolle Atmosphäre
Standard

Hoi

Ah soo.
epc Code:
  1. :begin WE_Ostertag ( jahr, ostern )
bzw.
epc Code:
  1. c_KalJahr = '3/0/8's32;    /* aktuelles Jahr, Übergabeparameter */;
  2. WE_Ostertag( c_KalJahr, c_KalOster );
c_KalJahr wird an die "Funktion" übergeben und c_KalOster ist das Ergebnis.
Ich dachte es geht so:
ostern = WE_Ostertag (Jahr);
__________________
Grüsse Bodo Nach bst. Wissen, ohne Gewähr; Fragen gehören ins Forum, und nicht in mein Postfach; EibPC-Fan; Wiregate-Fan; Alix1d mit eibd, linknx, knxweb, 30x 1-Wire, mjpg_streamer, e-mail, sms, growl-notif., CUL; Dreambox8000HD stream VLC's, TV-Browser start-record; Fritzbox 7270, voip; HP ProCurve 1810G 24 GE; Zotac ZBOX HD-ND22 mit SU2300 und Ubuntu 11.10 FullHD; MusicPal; SqueezeboxBoom; NEU Russound C5; iPhone 5 IOS6.1 JB PHP Lighty
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #39  
Alt 14.03.2013, 18:09
Benutzer
 
Registriert seit: 30.05.2010
Ort: Matzendorf
Beiträge: 195
MrKNX ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich bin etwas verwirrt, könnte mir jemand bitte ein Beispiel geben, wie und wofür ihr es verwendet?

Lasst ihr euch den Feiertag in der Visu darstellen?

Um es zu verwenden, braucht man also das Makro und den Aufruf im EIBPC?

Makro
Code:
  1. //***************************************************************************
  2. //* WE_Ostertag
  3. //***************************************************************************
  4. //* Bestimmung des Ostersonntag => Berechnung der bewegl. Feiertage
  5. //* moeglich
  6. //* Jahr muss 4-Stellig vorliegen und als s32 definiert sein !!
  7. //***************************************************************************
  8. :begin WE_Ostertag ( jahr, ostern )
  9. :var dd@
  10. :var cc@
  11. :var jj@
  12. :var ee@
  13. dd@ = MOD( MOD(jj@,19s32) * 19s32 + 24s32, 30s32);
  14. if dd@ > 27s32 then dd@ = dd@ -1s32 endif;
  15. ee@ = convert(FLOOR( convert(jj@, 1f16 ) *5f16/4f16),1s32 )+ dd@ + 1s32;
  16. cc@ = MOD( ee@, 7s32 );
  17. ostern^Tag = 28s32 + dd@ - cc@; /* Ostertag */;
  18. if ostern^Tag <= 31s32 then ostern^Mon = 3s32 endif
  19. if ostern^Tag > 31s32 then { /* Ostern im April */;
  20. ostern^Tag = ostern^Tag - 31s32;
  21. ostern^Mon = 4s32
  22. } endif
  23. :return convert( ostern^Tag, $$ ) + $.$ + convert( ostern^Mon, $$ ) + $.$
  24. :end
EIBPC
Code:
  1. // Jahreswechsel => bewegliche Feiertage neu berechnen
  2. if change('3/0/8's32 ) or systemstart() then {
  3. c_KalJahr = '3/0/8's32; /* aktuelles Jahr, Übergabeparameter */;
  4. WE_Ostertag( c_KalJahr, c_KalOster ); /* Berechnung OsterTag */;
  5. /* AnzTage bis Ostern */;
  6. c_OsterDay = WE_Datwert( c_KalJahr, c_KalOsterMon, c_KalOsterTag );
  7. /* Berechnung der bewegl. feiertage */;
  8. c_AschermittwochDay = c_OsterDay - 46s32;
  9. c_FaschingsDay = c_AschermittwochDay - 1s32;
  10. c_OstermontagDay = c_OsterDay + 1s32;
  11. c_HimmelfahrtDay = c_OsterDay + 39s32;
  12. c_PfingstDay = c_OsterDay + 49s32;
  13. c_PfingstmontagDay = c_PfingstDay + 1s32;
  14. c_FronleichDay = c_OsterDay + 60s32;
  15. /* Bestimmung der DatumStrings */;
  16. WE_DatwertToDate( c_Ostern, c_OsterDay );
  17. WE_DatwertToDate( c_Ostermontag, c_OstermontagDay );
  18. WE_DatwertToDate( c_Aschermittwoch, c_AschermittwochDay );
  19. WE_DatwertToDate( c_Fasching, c_FaschingsDay );
  20. WE_DatwertToDate( c_Himmelfahrt, c_HimmelfahrtDay );
  21. WE_DatwertToDate( c_Pfingsten, c_PfingstDay );
  22. WE_DatwertToDate( c_Pfingstmontag, c_PfingstmontagDay );
  23. WE_DatwertToDate( c_Fronleich, c_FronleichDay )
  24. } endif
Könnte mir hier Bitte jemand Klarheit schaffen!!??
__________________
MfG MrKnx
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #40  
Alt 15.03.2013, 01:51
Benutzerbild von wetronic
Benutzer
 
Registriert seit: 08.07.2010
Ort: Leinburg
Beiträge: 46
wetronic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich nütze es für das Öffnen der Jalousien morgens: werktags: 7:00 / Feiertags: 8:00

Gruss Wolfgang
__________________
WolfgangFB_Addon_TelNo{ height:15px !important; white-space: nowrap !important; background-color: #0ff0ff;}
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +2. Es ist jetzt 08:43 Uhr.



SEO by vBSEO