Liste der Anhänge anzeigen (Anzahl: 7)
[Uhr] rat_2665s modifizierte Uhren für CHT
Zitat:
Modifizierte analoge Uhren von rat_2665
Ich habe mich aufgerafft und das Mammutwerk der Übersetzung meines englischsprachigen Threads bei den XDA-Developern auf mich genommen ;). Ich hoffe, dass es ein besseres Verständnis schafft und vielleicht sogar manchen anregt, selbst analoge Uhren zu entwickeln.
Co0kies Home Tab ist eine hervorragende Grundlage für analoge Uhren. Zuerst habe ich einige
historische Uhren umgesetzt, eine davon mit einer nicht zentrierten Sekundenanzeige . So habe ich mir Manila näher angeschaut und gesehen, was für Modifikationsmöglichkeiten existieren (Dank an Co0kie für einige entscheidende Tipps). Uhren mit sogenannten "Komplikationen" sind sehr hochpreisig (bis zu sechsstelligen Eurozahlen). Deshalb habe ich mir meine eigene Tourbillonuhr gebastelt und sie mit einigen anderen Komplikationen wie Datum, stetig bewegendem Minuten- und Sekundenzeiger oder separierter Sekundenanzeige angereichert. Mittlerweile ist immer mehr dazu gekommen. Im ersten Post sind die Uhren aufgeführt, im zweiten beschreibe ich sie näher, in den nachfolgenden gibt es Erläuterungen zur Modifikation der Manila-Dateien. Im letzten Post sind einige Templates enthalten, mit denen man leichter eigene Uhren bauen kann.
Da dieser Thread eine Übersetzung der ersten sechs Posts des Urspungsthreads bei den XDA-Developern ist, gibt es im Detail auch noch weiter einige Verweise auf dieses Forum.
Zitat:
Neuigkeiten
-
[19/07/2010] Neue LT HD2 Concept clock mit Tag/Nachtversion zum Lüm Tec clocks.zip hinzugefügt
http://image-upload.de/image/GKYHcU/8fc66c71a5.jpg
-
[16/07/2010] NeueTemplates Neue Beschreibungen in post 2-5 und neue Templates in Post 6.
-
[15/07/2010] herausragende
Modifikation der Referenzuhr von musezicos
http://image-upload.de/image/ULym8c/32a7a6d772.jpg
-
[13/07/2010] Referenzuhren mit Tag/Nachtwechsel: Aufgrund von Nachfragen habe ich Versionen der Carbonuhren mit Tag- und Nachtwechsel angefrertigt und die Tourbillonuhr in Post 2 beschrieben.
-
[29/06/2010] Lüm-Tec Uhren: Combat B9 und M24 sind Versionen mit Tag- und Nachtwechsel. Edit [02/06/10]: Jetzt mit einer korrigierten Version für 12h Nutzung. Der erste Fix verursachte starken CPU-Gebrauch.
-
[23/06/2010] Hero Uhr: Version mit Datum.
-
"Wochentagsversion": Sie zeigt den Wochentag ähnlich wie das Datum als Textobjekt. Nur für die Carbonuhr mit Mondphase.
Download und Beschreibung
-
[19/06/10] CHT 1.8.5: Ich habe neue Versionen für CHT 1.8.5 gemacht und die 1.8 Versionen gelöscht. Für die, die weiter CHT 1.7.1 nutzen wollen, habe ich die alten Versionen gelassen. Ankündigung: Ich werde einige Templates posten. Auch wenn manchmal CHT 1.8.1 erwähnt ist, nicht verwirren lassen. Es funktioniert alles mit CHT 1.8.5.
-
"Nur Sekundenanzeige" Version: Da das Tourbillon sehr viel Energieverbrauch hat, habe ich Versionen nur mit Sekundenanzeige gemacht. Für diese ist der Energieverbrauch akzeptabler.
-
Carbon Design: Auf Bitten hin habe ich ein
dunkleres alternatives Carbon Design für neue Versionen benutzt.
-
Mondphase: Einige dieser Uhren haben eine
voll funktionsfähige Moondphasenanzeige.
-
Cookie Mod Für Leute , die Co0kie zugetan sind, gibt es eine
Modifikation für die Mondphasenuhren. :)
-
[04/06/10] Lüm-Tec Uhren Combat B 11 mit 24h-Anzeige und neuem Datum von tictac0566 und rat_2665 (
Beschreibung). Das ist eine neue Datumsversion, die bei allen Uhren verwendet werden kann.
Zitat:
Deinstallation
CHT 1.8.5 verändert die Struktur der Manila-Dateien für die Modifikation analoger Uhren. Animationen und Objektbeschreibungen sind in speziellen eigenen Manila Dateien geregelt: 1E1A6CCD_manila (mode9 Datei für die Objekte) und 1EC5924B_manila (Lua Script für die Animationen). Das ist gut für alle zukünftigen Veränderungen von CHT, aber es ist auch ein neuer Schritt. So ist es nicht mehr möglich, "fortgeschrittene" Modifikationen für ältere CHT-Versionen zu verwenden, da sonst Sense/Manila zerstört wird. Falls das doch passiert sein sollte, versuche diese
Lösung oder installiere CHT 1.8.5 neu.
Verwende nicht die Windows Mobile Deinstallationsfunktion. Installiere statt dessen die angehängte Original Analog Clock cab. Danach starte Manila neu.
Die Verwendung der WM-Routine führt zum Absturz von Manila, weil sie die verwendeten CHT-Dateien, die notwendig sind, gelöscht und nicht mit den Originaldateien ersetzt hat. Wenn Du das getan hast und Manila hängt am Start, versuche in "Einstellungen, heute" Manila zu deaktivieren, installiere die Original Analog Clock cab und reaktiviere Manila. Es funktioniert mit meinem Standard ROM, aber ich gebe keine Garantie für andere ROMS.
Falls Du immer noch Problem mit der Deinstallation hast, versuche die Lösung von Jaguaralani
http://forum.xda-developers.com/show...8&postcount=23 und kopiere die Dateien aus der angehängten Zip-Datei in das Windows-Verzeichnis deines Gerätes. Benutze Total Commander oder Resco Explorer dafür. Sowohl die Original cab und die Dateien im zip stellen die originalen CHT Dateien wieder her.
Zitat:
Clocks
Zur Übersichtlichkeit habe ich die Uhren mit dem selben Design in eine Zip-Datei gepackt (Download am Ende) Die originale analoge Uhr für die Deinstallation (sowohl für CHT 1.8.5 als auch für die älteren Versionen) ist als Cab in jeder Uhren-Zip-Datei und noch mal als Cab und Zip am Ende dieses Posts vorhanden.
Goldene Versionen mit Tourbillon
Diese Uhren zeigen ein funktionierendes Abbild eines Tourbillon, einer von Uhrmachern so genannten "Komplikation". Tourbillons versuchen durch eine möglichst freie Lagerung der Unruh einen Fehler der Ganggenauigkeit aus dem Schwerkrafteinfluss zu vermeiden. Für genauere Informationen lies den Wikipedia-Artikel zum
http://de.wikipedia.org/wiki/Tourbillon.
Es gibt eine Version mit der Sekundenanzeige und eine mit Mondphasenanzeige in der oberen Hälfte Beide Uhren haben eine AMPM-Version. Einzige Unterschiede sind der spezielle Hintergrund und eine verschobene AMPM-Anzeige. Für den speziellen Fall, dass jemand AMPM nur bei der digitalen Uhr gebrauchen will, gibt es eine besondere Version. Der Download ist
hier.
Für alle, die schwarzen Text wollen, gibt es von
poyensa hier eine Version.
Ancola66s Beitrag hat einen großen zentralen Sekundenzeiger. Poyensas Uhr ist
nicht für CHT 1.8 modifiziert. Das is jedoch kein Problem, da in CHT 1.8.5 die Textfarbe einstellbar ist but. Ancola66 hat eine CHT 1.8.5 version.
In den nächsten Posts findet ihr Einzelheiten zur Erstellung dieser Uhren.
Liste der Anhänge anzeigen (Anzahl: 1)
Beschreibung der Uhren
Tourbillon clock
Form
Um mehr über ein Tourbillon zu erfahren, sollte man den Artikel in der Wikipedia lesen. Dort ist auch ein Link zu einer Animation der Glashütter Uhrenmanufaktur.
Die Uhr besteht aus folgenden Teilen (in der Reihenfolge der Ebenen in 1E1A6CCD_manila mit den Sense Namen, die Standardnamen sind kursiv):
4B55E014_manila DateDayTens (Zehner Datum)
4DDA6CCF_manila DateDayOnes (Einer Datum)
20F62884_manila analogclock (Uhrenhintergrund)
Hier kommt in 1E1A6CCD_manila das "ShowAMPM" Textobjekt.
7BA5E044_manila secondHand2 (Unruh des Tourbillon)
2A87D392_manila secondHand (Tourbillonkäfig)
3FDED376_manila analogclock2 (Tourbillonbefestigung)
7BB7F8C5_manila secondHand3 (Sekundenzeiger)
0AB9C3F4_manila hourHand
4BDFBA48_manila minuteHand
0D505BB2_manila scaleButton
7126E342_manila clockdot
http://image-upload.de/image/aEFi9S/02b596d294.pnghttp://image-upload.de/image/yIPjZQ/5810debd36.pnghttp://image-upload.de/image/g1DZ53/aba4527d03.png
http://image-upload.de/image/7ZPmKe/eed6372206.pnghttp://image-upload.de/image/ZCRqYI/e71fb2e480.pnghttp://image-upload.de/image/BkaVFv/9f1af092ea.pnghttp://image-upload.de/image/L7hQck/565ca86184.pnghttp://image-upload.de/image/umQvPb/7160413bc0.pnghttp://image-upload.de/image/Vxhl0b/49360ad597.pnghttp://image-upload.de/image/FSyxVl/6c523b5a05.pnghttp://image-upload.de/image/eYCRze/8acd3161c5.png
”Secondhand” ist für den Tourbillonkäfig benutzt worden, da häufig das Tourbillon als Sekundenzeiger eingesetzt wird (es dreht sich einmal pro Minute).
Die Datumsanzeige ist genauso gestaltet wie in mechanischen Uhren – zwei Scheiben, die sich drehen und zusammen das Datum zeigen.
Außerdem gibt es zwei andere wichtige Manila-Dateien, die mode9 –Datei für die Objekte 1E1A6CCD_manila (in den versionen vor CHT 1.8.5 7c60907d_manila) und das Lua Script für die Animationen 1EC5924B_manila (früher 461d3306_manila).
Funktion
Ein Tourbillonkäfing springt jede Fünftelsekunde, die Unruh schwingt fünfmal pro Sekunde 180° vor und zurück. Sense/Manila zeigt Bilder der Uhrenteile, die nach einer bestimmten Zeit (oder einer bestimmten Bedingung) hinsichtlich der Position/Animation aktualisiert werden. Wenn man also eine Abbildung des realen Verhaltens der Uhr haben will, muss man 25 Bilder der sich bewegenden Teile pro Sekunde zeigen – besonders bei der Unruh. So wird im Lua script 1EC5924B_manila 25 mal pro Sekunde der aktuelle Stand abgefragt im Gegensatz zur Zeitabfrage in Co0kies Home Tab. Dort erfolgt die Abfrage nur einmal pro Sekunde, was man auch noch wegen des Energieverbrauchs deaktivieren kann. Man muss sich also klar machen, dass die Uhr mit dem Tourbillon zwar schön anzusehen ist, aber auch sehr viel Strom verbraucht. Außerdem hängt sie sehr stark von anderen laufenden Prozessen ab, z. B. beim Start des Kalenders oder bei den Wetteranimationen. Auch das HD2 hat Grenzen ;).
Tourbillonuhr mit Mondphase und Tag/Nachtversion
Form
Die Teile mit den Manila- und Objektnamen im Lua Script und in der Mode9-Datei in der Reihenfolge der Anordnung der Ebenen:
4B55E014_manila DateDayTens
4DDA6CCF_manila DateDayOnes
2056A60D_manila DateDayTensnight
09DE9308_manila DateDayOnesnight
2C2AA9E8_manila moonphase
09187EE1_manila moonphasenight
20F62884_manila analogclock
3C87827D_manila analogclocknight
ShowAMPM
7BA5E044_manila secondHand2
3B920A3D_manila secondHand2night
2A87D392_manila secondHand (Dummy mit leerem Bild)
596B8F02_manila secondHand1
4B1CC00B_manila secondHandnight
3FDED376_manila analogclock2
5A551AEF_manila analogclock2night
0AB9C3F4_manila hourHand
5CCDF1ED_manila hourHandnight
4BDFBA48_manila minuteHand
5E305741_manila minuteHandnight
0D505BB2_manila scaleButton
7126E342_manila ClockDot
6294D3BB_manila ClockDotnight
Im angehängten PDF-Dokument ist eine Liste aller dieser Objekte zusammen mit ihrem “Speicherverzeichnis /location folder” im Mode9-File.
http://image-upload.de/image/0WVjgn/28a9cccf80.pnghttp://image-upload.de/image/ryFUn7/d827445991.pnghttp://image-upload.de/image/b9KWxZ/d037a73b17.pnghttp://image-upload.de/image/plblyj/db7e5db7e9.png
http://image-upload.de/image/1UJ9UV/d9a032ea7b.pnghttp://image-upload.de/image/8cZkSS/ea427e67ab.pnghttp://image-upload.de/image/2CnBk5/03a2c4d6d3.pnghttp://image-upload.de/image/JSHVNz/11a2816234.png
http://image-upload.de/image/gffJKd/ff4bf7facc.pnghttp://image-upload.de/image/HK3TqT/b153a1981a.pnghttp://image-upload.de/image/Ruz7GI/7fe7c7176d.pnghttp://image-upload.de/image/12aVBZ/c632f8ac2b.pnghttp://image-upload.de/image/Pl3Ykq/947c4de75e.pnghttp://image-upload.de/image/G447zY/19528c680b.pnghttp://image-upload.de/image/4aPYGJ/db88d4f43f.pnghttp://image-upload.de/image/UiudXR/8440516362.pnghttp://image-upload.de/image/FSyxVl/6c523b5a05.pnghttp://image-upload.de/image/6bir09/d35329e9fe.pnghttp://image-upload.de/image/9J4C7y/429bc988fc.png
Funktion
Mondphase
Mondphase ist eine andere sogenannte „Komplikation“. Sie zeigt die Mondphasen in einer eigenen Anzeige. Da die Uhrmacher in mechanischen Uhren versuchten , die dreidimensionale Drehung des Mondes durch eine 2D-Anzeige abzubilden, kann man die Anzeige auf der Uhr nicht mit dem Bild des Mondes am Nachthimmel vergleichen. Zu sehen ist Voll- oder Neumond und ob der Mond abnimmt oder zunimmt. Um einem Missverständnis vorzubeugen, die Mondphase ist nicht die Bewegung des Mondes am täglichen Nachthimmel, sondern die Zu- oder Abnahme der Mondsichel. So braucht der Mond in der Mondphasenanzeige 14 Tage von links nach rechts (auf der Nordhalbkugel). Das beschreibt den Lunar Monat, der von Neumond bis zum nächsten Neumond 29 Tage dauert.
Beim Entwickeln der Uhr habe ich gelernt, dass die Uhrenhersteller, die alle auf der Nordhalbkugel der Erde waren, die Bewegung des Mondes auf der Uhr so abgebildet haben, wie sie sie sahen. Auf der Südhalbkugel sieht man jede Mondphase um 180° gedreht. Deshalb habe ich bei einigen Uhren ein AddOn für alle gemacht, die dort leben (bezeichnet als SH). Es dreht die Bewegungsrichtung der Mondscheibe (entgegen dem Uhrzeigersinn).
Tag/Nachtversion
Wie man oben sehen kann, muss man bei der Tag/Nachtversion alle Objekte duplizieren, die man verändern will. Die Nachtversion jedes Objekts wird über die Tagversion gelegt (einzige Ausnahme das Datum). Im Lua Script wird die Veränderung über die Veränderung der Transparenz der Nachtobjekte zu bestimmten Zeiten (hier 8:00 Uhr und 20:00 Uhr) realisiert.
In den nächsten Beiträgen werde ich die Modifikationen der Manila-Dateien beschreiben.
Liste der Anhänge anzeigen (Anzahl: 1)
Modifikationen III
Lua Script 1EC5924B_manila (früher 461d3306_manila)
Die Datei ist verantwortlich für die Animationen in der analogen Uhr. Es ist ein HTC Lua Script. Leider ist HTCs Version von Lua nicht dokumentiert. Deshalb sollte man etwas Erfahrung mit Programmieren haben, da sich vieles nur durch Ausprobieren und Nachempfinden erreichen lässt. Zum Starten kann man diese allgemeine Lua Programmierungsanleitung verwenden. Eine andere gute Basis ist der Source Code von Co0kies Home. Man kann ihn am Ende dieses Posts finden.
Zum Kompilieren und Dekompilieren verwende ich m9editor. Wenn man im unteren Fenster des Editors mit Rechtsklick auf den Lua Sript File geht, kann man den File dekompilieren und zugleich im lua script Unterverzeichnis des Editor speichern. Dort kann man es mit Notepad2 (von Florian Balmer, compiled by Co0kiemonster) bearbeiten. Es ist Teil dieser “Küche“. Da m9editor allerdings manchmal Problem emit dem Dekompilieren hatte, habe ich fast ausschließlich den homealarmclock.lua File von Co0kie's source verwendet. Wenn das Script dann bearbeitet ist, speichert man es als 1EC5924B_manila.lua im lua script Unterverzeichnis ab, geht im m9editor mit Rechtsklick auf den File und kompiliert ihn. Für die weitere Verwendung muss man ihn aus dem im Editor eingestellten Manila-Verzeicnis herauskopieren.
http://image-upload.de/image/HZwEoP/6fc96e5314.jpg
Funktionen
Für jede Funktion gibt es im Lua Script drei entscheidende Stellen: die Definition der Funktion, den Aufruf der Funktion und das Update des Funktionsaufrufes. Das erfolgt im Lua Script in der Regel nicht hintereinander, sondern in Blöcken für alle Funktionen (zuerst alle Definitionen usw.).
Tourbillonkäfig (second hand)
In der originalen Datei von co0kie wird die Abfrage der Position des Minuten-und Stundenzeiger durch eine Änderung des Wertes der Minute ausgelöst. So springt der Minutenzeiger in jeder Minute, der Stundenzeiger bewegt sich kontinuierlich. Die Position des Sekundenzeigers wird durch eine eigene Funktion bestimmt, die durch einen Timer jede Sekunde ausgelöst wird.
Für das Tourbillon war es notwendig, Millisekunden zu benutzen. HTC ROMs arbeiten leider nicht mit Millisekunden, obwohl Windows Mobile sie generell zur Verfügung stellt. So muss dies durch eine Timer-Funktion realisiert werden. Hier ein Tipp von Co0kie:
Code:
MyTimerName = timer(time_in_seconds) -- the time can be 0.1 seconds for example
-- after the timer is created it immediately starts ticking
MyTimerName.OnElapsed:connect(some_function) -- the name of the function that should be called after timeout - the timer runs in a loop so the function will be called every 0.1 seconds
MyTimerName:Stop() -- stops the timer
MyTimerName:Start() -- starts it again
In der neuen Funktion "ClockSecond" macht der Käfig (secondHand) fünf Schritte pro Sekunde. Diesen factor 5 habe ich als FinenessFactor definiert, so dass es sehr einfach geändert werden kann. Die Distanz, die der Zeiger für jeden Schritt zurück legt, beträgt 12° (der Wert hängt genau genommen vom eingestellten FinenessFactor ab). Damit dreht sich der Käfig einmal pro minute und kann als Sekundenzeiger verwendet werden (wie übrigens auch bei realen Tourbillons).
Der ClockSecondTimer = timer(0.2) in Zeile 192 bestimmt den Zeitabstand zwischen zwei Schritten (200ms). Die Funktion startet jede Sekunde mit der neuen Position der Sekunde. Deshalb sollte für eine stetige Bewegung der Wert des Timers = (1 Sekunde / FinenessFactor) sein.
Die rotierende Bewegung ist realisiert durch die Funktion XXX.Rotation.z =
360 - myHandsPosition in Uhrzeigerrichtung
myHandsPosition gegen Uhrzeigerrichtung
Der Wert von myHandsPosition ist der numerische Wert im 360°-Kreis
Code:
SecondsCheck = machineStatus.CurrentTime.Value.Second
Counter = 1
ClockSecond = function()
if secondHand._visible == true then
local FinenessFactor = 5
local globalsecond = machineStatus.CurrentTime.Value.Second
local myHandsPosition0 = globalsecond * FinenessFactor
if SecondsCheck == globalsecond then
myHandsPosition0 = globalsecond * FinenessFactor + Counter
Counter = Counter + 1
else
Counter = 1
end
local myHandsPosition = (myHandsPosition0 - (2 * FinenessFactor) + 1) / (60 * FinenessFactor) * 360
secondHand.Rotation.z = 360 - myHandsPosition
secondHand1.Rotation.z = 360 - myHandsPosition
secondHandnight.Rotation.z = 360 - myHandsPosition
SecondsCheck = globalsecond
minuteHand.Rotation.z = -((machineStatus.CurrentTime.Value.Minute / 60 * 360) + ((machineStatus.CurrentTime.Value.Second - 5) / 10))
minuteHandnight.Rotation.z = -((machineStatus.CurrentTime.Value.Minute / 60 * 360) + ((machineStatus.CurrentTime.Value.Second - 5) / 10))
else
ClockSecondTimer:Stop()
end
end
Unruh (secondhand2)
Funktion "ClockSecond2". Die Unruh verhält sich nicht so wie die anderen Zeiger. Sie schwingt mit 5 (= FinenessFactor2) Bildern 180° vor und zurück. Entscheidend für die Geschwindigkeit (und für die Frequenz der Abfragen) ist der ClockSecond2Timer = timer(0.04) in Zeile 194. Mit den hier benutzten Werten realisiert er 25 Bilder pro Sekunde, ein Wert von 0.1 enspricht 10 fps (Ich habe einen 1EC5924B_manila/461d3306_manila mit diesem Wert hier gepostet). Das ist der aufwendigste, am meisten CPU-Power und Energie verbrauchende Prozess in der Uhr, aber gleichzeitig eben auch der sichtbarste.
Code:
Counter2 = 0
turn2 = 0
ClockSecond2 = function()
if secondHand._visible == true then
local FinenessFactor2 = 5
local myHandsPosition2 = 360
if turn2 == 0 then
myHandsPosition2 = 360 - ((360 / FinenessFactor2) * Counter2)
if Counter2 == FinenessFactor2 then
turn2 = 1
Counter2 = 0
end
else
myHandsPosition2 = (360 / FinenessFactor2) * Counter2
if Counter2 == FinenessFactor2 then
turn2 = 0
Counter2 = 0
end
end
Counter2 = Counter2 + 1
secondHand2.Rotation.z = 360 - myHandsPosition2
secondHand2night.Rotation.z = 360 - myHandsPosition2
else
ClockSecond2Timer:Stop()
end
end
Der Aufruf beider Funktionen für das Tourbillon mit dem Update:
Code:
if ShowSecondHand then
secondHand._visible = true
ClockSecondTimer = timer(0.2)
ClockSecondTimer.OnElapsed:connect(ClockSecond)
ClockSecond2Timer = timer(0.04)
ClockSecond2Timer.OnElapsed:connect(ClockSecond2)
else
secondHand._visible = false
secondHand1._visible = false
secondHandnight._visible = false
secondHand2night._visible = false
end
Sekundenzeiger (secondHand3)
Ist an die Bewegung des Tourbillonkäfigs (secondHand) gebunden. Code siehe oben.
minute hand (Minutenzeiger)
Funktion "ClockMinute". Um die stetige Bewegung zu erreichen, wird jede Sekunde 1/60 eines Minutenschrittes hinzugefügt.
Code:
minuteHand.Rotation.z = -((machineStatus.CurrentTime.Value.Minute / 60 * 360) + ((machineStatus.CurrentTime.Value.Second - 5) / 10))
Datum durch Scheiben
Die Scheibe für die Zehner (DateDayTens) dreht sich aller 10 Tage um 90°, die Scheibe für die Einer (DateDayOnes) jeden Tag um 36°. (keine Angst, der Februar ist in der Formel). Das Datum ändert sich, wenn sich der “current time value“ in Windows Mobile ändert.
Code:
CalendarDate1 = function()
local locday = machineStatus.CurrentTime.Value.Day
local DayTens = 0
local DayOnes = 1
if locday < 10 then
DayTens = 0
else
if locday < 20 then
DayTens = 1
else
if locday < 30 then
DayTens = 2
else
DayTens = 3
end
end
end
DayOnes = locday - (DayTens * 10)
DateDayTens.Rotation.z = DayTens * 90
DateDayOnes.Rotation.z = DayOnes * 36
DateDayTensnight.Rotation.z = DayTens * 90
DateDayOnesnight.Rotation.z = DayOnes * 36
end
Code:
machineStatus.CurrentTime.OnValueChanged:connect(CalendarDate1)
Datum durch Textobjekt
Code:
CalendarDate1 = function()
local locday = machineStatus.CurrentTime.Value.Day
DayDate.String = tostring(locday)
DayDate.Rotation.z = 330
local val = (AnalogAMPMColor / 10) * 255
DayDate.Color = Color(val, val, val, 255)
DayDatenight.String = tostring(locday)
DayDatenight.Rotation.z = 330
end
In diesem Beispiel ist die Farbe des Datums an die AMPM-Farbe gebunden. Damit kann man im CHTEditor auch die Farbe des Datums einstellen (selbst wenn AMPM nicht sichtbar ist). Der Funktionsaufruf und das Update sind genauso wie bei der anderen Datumsfunktion oben.
Möchte man eine konstante geneigte Position haben, fügt man die Zeile
XXX.Rotation.z = 360 - y
hinzu, wobei XXX der Name des Objekts im mode9 File und y der °Wert der Neigung des Objekts ist (Beispiel für AMPM in der oben erwähnten Hero Uhr "ShowAMPM.Rotation.z = 330")
Mondphase
Die mathematische Formel für die Mondphase findet man auf verschiedenen astronomischen Websites. Ich habe sie von dieser Schweizer Seite (bei Berechnungen). Die Formel nimmt ein bekanntes Datum des Vollmondes, berechnet dann die Tagesdifferenz zum heutigen Tag, teilt diese durch den Lunarmonat (29.530588 Tage), wobei der Teil nach dem Komma die Position des Mondes beschreibt.
Code:
local lochour = machineStatus.CurrentTime.Value.Hour
local locday = machineStatus.CurrentTime.Value.Day
local locmonth = machineStatus.CurrentTime.Value.Month
local locyear = machineStatus.CurrentTime.Value.Year
local valueYear = 365 * (locyear - 2010)
if locyear > 2011 then
if locyear > 2016 then
valueYear = valueYear + 2
else
valueYear = valueYear + 1
end
end
local valueMonth = 0
if locmonth == 2 then valueMonth = 31 end
if locmonth == 3 then valueMonth = 59 end
if locmonth == 4 then valueMonth = 90 end
if locmonth == 5 then valueMonth = 120 end
if locmonth == 6 then valueMonth = 151 end
if locmonth == 7 then valueMonth = 181 end
if locmonth == 8 then valueMonth = 212 end
if locmonth == 9 then valueMonth = 243 end
if locmonth == 10 then valueMonth = 273 end
if locmonth == 11 then valueMonth = 304 end
if locmonth == 12 then valueMonth = 334 end
if locyear == 2012 then
if locmonth > 2 then valueMonth = valueMonth + 1 end end
if locyear == 2016 then
if locmonth > 2 then valueMonth = valueMonth + 1 end end
local presentday = (lochour / 24) + locday + valueMonth + valueYear
local moonposition1 = (presentday - 30.25) / 29.530588
moonphase.Rotation.z = - ((moonposition1 - math.floor(moonposition1)) * 180)
moonphasenight.Rotation.z = - ((moonposition1 - math.floor(moonposition1)) * 180)
end
Code:
machineStatus.CurrentTime.OnValueChanged:connect(moonposition)
Wochentag
Die Funktion verwendet die ersten zwei Buchstaben des Wochentages aus dem eingestellten Datum.
Code:
DayOfWeek1 = function()
local weekday1
weekday1 = machineStatus.CurrentTime.Value:GetDateString(Locale:GetString("IDS_DATEFORMAT"))
weekday1 = string.sub(weekday1, 1, 2)
weekday.String = tostring(weekday1)
weekdaynight.String = tostring(weekday1)
end
Code:
machineStatus.CurrentTime.OnValueChanged:connect(DayOfWeek1)
Tag- und Nachtwechsel
Der Sichtbarkeitswechsel hängt vom Stundenwert der Uhr ab. Das ist ein Problem, wenn AMPM eingestellt wird, da hier der Wert nicht bis 24, sondern nur bis 12 geht. So müssen in diesem Fall erst die Werte auf die 24h-Basis transformiert werden. Das geschieht im ersten Teil. Im zweiten Teil wird die Sichtbarkeit der Nachtobjekte in einem festgelegtem Zeitintervall bestimmt. Ein Spezialfall waren dabei die Objekte, deren Sichtbarkeit in CHT oder Windows Mobile gesondert eingestellt werden kann (secondHand, AMPM). Zu den Animationsfunktionen findet man einige Tipps im angehängten animation toolkit for CHT 1.6.1 von Co0kie.
Code:
switchvisibility = function()
local locAMPM = machineStatus.CurrentTime.Value:GetTimeString("tt")
local lochour = machineStatus.CurrentTime.Value.Hour
if locAMPM == "AM" then
ShowAMPMnight.String = "AM" else
ShowAMPMnight.String = "PM" end
if machineStatus.CurrentTime.Value.IsTwentyFourHour
then
local lochour = machineStatus.CurrentTime.Value.Hour
else
if locAMPM == "AM" then
if lochour == 12 then lochour = 0
end
else
if lochour ~= 12 then lochour = lochour + 12
end
end
end
if lochour > 7
then
if lochour < 20 then
minuteHandnight.Opacity:Interpolate(0,200, 0, Interpolate_Linear)
hourHandnight.Opacity:Interpolate(0, 200, 0, Interpolate_Linear)
analogclocknight.Opacity:Interpolate(0, 200, 0, Interpolate_Linear)
moonphasenight.Opacity:Interpolate(0, 200, 0, Interpolate_Linear)
if secondHand._visible == true then
secondHandnight.Opacity:Interpolate(0, 200, 0, Interpolate_Linear)
secondHand2night.Opacity:Interpolate(0, 200, 0, Interpolate_Linear)
end
if machineStatus.CurrentTime.Value.IsTwentyFourHour then
ShowAMPMnight._visible = false
else
ShowAMPMnight.Opacity:Interpolate(0, 200, 0, Interpolate_Linear)
end
weekdaynight.Opacity:Interpolate(0, 200, 0, Interpolate_Linear)
DayDatenight.Opacity:Interpolate(0, 200, 0, Interpolate_Linear)
else
minuteHandnight.Opacity:Interpolate(100,200, 0, Interpolate_Linear)
hourHandnight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
analogclocknight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
moonphasenight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
if secondHand._visible == true then
secondHandnight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
secondHand2night.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
end
if machineStatus.CurrentTime.Value.IsTwentyFourHour then
ShowAMPMnight._visible = false
else
ShowAMPMnight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
end
weekdaynight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
DayDatenight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
end
else
minuteHandnight.Opacity:Interpolate(100,200, 0, Interpolate_Linear)
hourHandnight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
analogclocknight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
moonphasenight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
if secondHand._visible == true then
secondHandnight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
secondHand2night.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
end
if machineStatus.CurrentTime.Value.IsTwentyFourHour then
ShowAMPMnight._visible = false
else
ShowAMPMnight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
end
weekdaynight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
DayDatenight.Opacity:Interpolate(100, 200, 0, Interpolate_Linear)
end
end
Code:
machineStatus.CurrentTime.OnValueChanged:connect(switchvisibility)
Ich hoffe, diese Beschreibungen helfen die Modifikationen etwas besser zu verstehen und möglicherweise selbst neue zu entwickeln. Sie lassen sich auch einfach nach dem Baukastenprinzip verwenden. Für Verbesserungen und Vereinfachungen bin ich offen.
Liste der Anhänge anzeigen (Anzahl: 4)
Templates
Ich füge noch die Manila Lua Scripts, Die Manila Dateien und die png Dateien als zip hinzu.Die Referenzuhr findet man in Post 1.
Für alle, die ihre Schwierigkeiten mit dem Kompilieren haben, habe ich einige Templates entwickelt. Der erste Zip-File enthält verschiedene Versionen des kompilierten Lua Scripts und falls notwendig des zugehörigen mode9 Files. Enthalten sind:
Springender Minutenzeiger/ stetiger Minutenzeiger,
Springender Sekundenzeiger/ stetiger Sekundenzeiger,
Ohne Datum/ mit Datum (als Text Objekt) nicht geneigt, 15° geneigt, 30° geneigt,
12h/24h (der 24h Modus geht nur bei der Einstellung 24h).
Die Position und die Farbe können im mode9 File wie oben beschrieben geändert werden.
Die zweite Template-Zip-Datei enthält eine neue zusätzliche Referenzuhr für Tag- und Nachtwechsel, die nur einige einfache Modifikationen hat (stetiger Minuten- und Sekundenzeiger, Datum als Textobjekt). Für die Bilder habe ich meine Carbonuhr genommen, sie können durch andere ersetzt werden. Tipp: Wenn einige Objekte nicht geändert werden sollen, nimmt man einfach das gleiche Bild für Tag und Nacht. Das Textobjekt DayDate kann einfach hinter dem Uhrenhintergrund „versteckt“ werden, indem man die Reihenfolge im mode9 File ändert. So muss nur dieser geändert werden.
http://image-upload.de/image/aFxG1L/12c1eeefb1.png
AW: [Uhr] rat_2665s modifizierte Uhren für CHT
Boah...vielen liebem Dank für die ausführliche Beschreibung - genauso wie diese coolen Uhren.
Wie berechnest Du die Mondphase - abhängig von der LocalTime?
Wenn ich ein C-Programm schreiben würde, welches Dir die Mondphase in Deine Uhren setzt, was müsste es tun? also rein theoretisch natürlich *g*
Vielen Dank für auch für die Mühe diese Anleitung zu machen! Super!
Na - bis bald ;)
Micha
AW: [Uhr] rat_2665s modifizierte Uhren für CHT
Zitat:
Zitat von
MichaHD2
Boah...vielen liebem Dank für die ausführliche Beschreibung - genauso wie diese coolen Uhren.
Wie berechnest Du die Mondphase - abhängig von der LocalTime?
Wenn ich ein C-Programm schreiben würde, welches Dir die Mondphase in Deine Uhren setzt, was müsste es tun? also rein theoretisch natürlich *g*
Vielen Dank für auch für die Mühe diese Anleitung zu machen! Super!
Na - bis bald
Micha
Ja, die Mondphasenfunktion nimmt den ersten Vollmond in diesem Jahr (30. Januar) und berechnet von daher die Differenz zur lokalen auf dem Handy eingestellten Zeit. Ich habe spaßeshalber sogar die Stunden mit einbezogen. Natürlich gibt das einen Fehler bei den unterschiedlichen Zeitzonen auf der Erde; eigentlich ist MEZ am genauesten. Schon die Sommerzeit weicht wieder ab. Da die Bewegung aber sehr sehr langsam ist (14 Tage im Halbkreis) fallen diese Abweichungen nicht auf. Die Formel selbst ist gültig bis 2019. Dann ist das Schaltjahr nicht mehr berücksichtigt. Aber Hut ab vor dem, der dann sein HD2 mit Windows Mobile 6.5 immer noch mit Ausdauer nutzt. ;).
Nicht ganz verstanden habe ich die Bemerkung mit der C-Programmierung. Ich selbst habe damit bisher keine Erfahrung. Ob es bei der Mondphase noch etwas besser machen könnte, weiß ich nicht, eher nein. Die Formel zur Berechnung habe ich von der Schweizer Astronomieseite, die ich als Link angegeben habe. War deine Frage auf einen Algorithmus zur Berechnung der Mondphase gerichtet?
AW: [Uhr] rat_2665s modifizierte Uhren für CHT
Danke für die Antwort.
Naja-nicht allein für den Algorithmus,außer inwieweit Di die Zeitzone berücksichtigst.
Eher,was dann direkt bei Dir im der Uhr geändert wird,damit sie die richtige Mondphase anzeigt.Ob Du z.B den Wert in der Registry zwischenspeicherst und dann von dort abrufst und so.
Auf jeden Fall ist es ne coole Idee.Ich mag die Uhren nicht sonderlich, die Anzeigen haben,die statisch sind.Deshalb find ich das hier von Dir einfach gut :)
AW: [Uhr] rat_2665s modifizierte Uhren für CHT
Zitat:
Zitat von
MichaHD2
Danke für die Antwort.
Naja-nicht allein für den Algorithmus,außer inwieweit Di die Zeitzone berücksichtigst.
Eher,was dann direkt bei Dir im der Uhr geändert wird,damit sie die richtige Mondphase anzeigt.Ob Du z.B den Wert in der Registry zwischenspeicherst und dann von dort abrufst und so.
Auf jeden Fall ist es ne coole Idee.Ich mag die Uhren nicht sonderlich, die Anzeigen haben,die statisch sind.Deshalb find ich das hier von Dir einfach gut
Ich sehe, Post 5 ist vom Moderator wieder freigeschaltet. Da ist der Code für die Mondphase drin. Die Funktion greift auf den von Windows Mobile zur Verfügung gestellten Datumswert (Stunde, Tag, Monat, Jahr) zu und ist ansonsten nur Lua Script ohne weitere Verbindung nach außen.
AW: [Uhr] rat_2665s modifizierte Uhren für CHT
Dank dir für die mehr als genialen Anleitungen. Hab mit Hilfe von MR. Red Card schon ein paar Veränderungen in der mode9 Datei vorgenommen aber mit deiner Anleitung versuch ich mich jetzt doch mal an ner eigenen Uhr.
Und das Ganze noch auf deutsch, echt ein Traum.
Liste der Anhänge anzeigen (Anzahl: 1)
AW: [Uhr] rat_2665s modifizierte Uhren für CHT
Zitat:
Zitat von
rat_2665
In den nächsten Posts findet ihr Einzelheiten zur Erstellung dieser Uhren.
Hallo rat_2665,
hatte mal von Dir eine schöne Version der Carbon-Uhren bekommen, jetzt sehe ich, dass es diese auch mit zweiter Uhrzeit gibt. Frage, könnte man evtl. die zweite Uhrzeit in meine dazu einbauen (siehe Anlage), Danke ;)
Gruss Vinzenz
Anhang 50893
AW: [Uhr] rat_2665s modifizierte Uhren für CHT
Zitat:
Zitat von
vinzenz
Hallo rat_2665,
hatte mal von Dir eine schöne Version der Carbon-Uhren bekommen, jetzt sehe ich, dass es diese auch mit zweiter Uhrzeit gibt. Frage, könnte man evtl. die zweite Uhrzeit in meine dazu einbauen (siehe Anlage), Danke ;)
Gruss Vinzenz
Anhang 50893
Das ist kein Problem. Da du aber die Farben etwas verändert hast, wäre es das beste, wenn du die Files postest. Dann kann ich sie verwenden. Es wird aber nicht gleich. Ich komme erst in ca. drei Wochen dazu.
AW: [Uhr] rat_2665s modifizierte Uhren für CHT
Hallo Rat_2665,
Farben sind nicht wichtig, wäre mit den Originalen zufrieden. Wäre super, wenn Du das machen könntest.
Gruss
Vinzenz