Uhrzeit mit PHP

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Uhrzeit mit PHP

Beitrag von mfreye » 21.02.2009, 09:12

Hallo!

Den folgenden Code führe ich jede Sekunde aus.

Code: Alles auswählen

<?
    // Pfade festlegen
    $Objectname = Uhrzeit_jetzt;
    include ("c:\\Programme\\contronics\\homeputer Studio\\php\\bmp.php");  
    include ("c:\\Programme\\contronics\\homeputer Studio\\php\\imagebw.php");   
    $filejpg = "c:\\Programme\\contronics\\homeputer Studio\\BMP\\".$Objectname.".bmp";
    $fontdir = "c:\\WINDOWS\\Fonts\\";
    
    //Variablen festlegen
    $SizeX = 170;
    $SizeY = 50;
    $Font = $fontdir."DS-DIGIB.ttf"; //DS-DIGIB.ttf
    //$Font = $fontdir."COUR.TTF"; //DS-DIGIB.ttf
    $FontSize_1 = 44;
    $FontSize_2 = 28;
    $Uhrzeit_Temp = date("H:i:s");  //Uhrzeit hh:mm:ss (24Std.)
    
    //Uhr zerstückeln
    $string = $Uhrzeit_Temp;
    $StdZ = $string[0];
    $StdE = $string[1];

    $MinZ = $string[3];
    $MinE = $string[4];
    
    $SekZ = $string[6];
    $SekE = $string[7];
    
    //Wenn der Wert = 1, dann verschieben
    if ($StdZ == 1) $StdZ = " 1";
    if ($StdE == 1) $StdE = " 1";
    if ($MinZ == 1) $MinZ = " 1";
    if ($MinE == 1) $MinE = " 1";
    if ($SekZ == 1) $SekZ = " 1";
    if ($SekE == 1) $SekE = " 1";
        
    //Farben festlegen
    $im = @ImageCreatetruecolor ($SizeX, $SizeY);
    $hintergrund = ImageColorAllocate ($im, 255, 255, 255);
    $vordergrund = ImageColorAllocate ($im, 0, 0, 0);
   
    // Wegen Fehler in Homeputer-PHP, zunächst Pseudoschrift laden
    ImageTTFText ($im, 18, 0, 0, 0, $vordergrund, $fontdir."wingding.ttf", "");       
         
    // Den Hintergrund "ausmalen"
    imagefill($im, 0, 0, $hintergrund);     
    
    //Uhrzeit zusammen basteln
    ImageTTFText ($im, $FontSize_1, 0, 0, +$FontSize_1, $vordergrund, $Font, $StdZ);    
    ImageTTFText ($im, $FontSize_1, 0, +25, +$FontSize_1, $vordergrund, $Font, $StdE);  
    
    ImageTTFText ($im, $FontSize_1, 0, +53, +$FontSize_1-2, $vordergrund, $Font, ":"); 
     
    ImageTTFText ($im, $FontSize_1, 0, +64, +$FontSize_1, $vordergrund, $Font, $MinZ);   
    ImageTTFText ($im, $FontSize_1, 0, +89, +$FontSize_1, $vordergrund, $Font, $MinE);   
    
    ImageTTFText ($im, $FontSize_2, 0, +117, +$FontSize_2+15, $vordergrund, $Font, ":");
                
    ImageTTFText ($im, $FontSize_2, 0, +125, +$FontSize_2+16, $vordergrund, $Font, $SekZ);   
    ImageTTFText ($im, $FontSize_2, 0, +147, +$FontSize_2+16, $vordergrund, $Font, $SekE);
    
    //Das Bild im Speicher erzeugen und abspeichern
    ImageBW($im,"NORMAL");
    ImageBmp ($im, $filejpg);
    
    //Das Bild im Speicher zerstören
    ImageDestroy ($im);
?>
Hierdurch wird eine grafische Uhrzeit erzeugt. Soweit läuft das auch, aber irgendwie ist das schei... was ich gemacht habe.
Durch meine Idee wird jetzt ständig auf der Festplatte geschrieben, was mir nicht gefällt.

Gibt es eine andere Möglichkeit in homestudio eine grafische Uhr zu erzeugen?

Die oberer Uhr ist aus einzelnen Teilen zusammen bebastelt, was mir nicht gefällt. Jedes mal ein großer Aufwand die Uhrzeit in einer Ansicht herein zubasteln :(
Es geht um die untere Uhr, diese ist als BMP erzeugt. Hier wäre nur ein Objekt nötig, schnell und einfach :)


MFreye
Neu Bitmap.JPG

MfG
MFreye

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Uhrzeit mit PHP

Beitrag von buempi » 21.02.2009, 09:46

Hallo Maik

Eine andere Möglichkeit, eine digitale Uhr zu basteln, sehe ich auch nicht. - Bei mir läuft dein Script übrigens (nach Anpassung der Pfade und der bei mir z.Z. nicht verfügbaren Schriftart) problemlos.

Aber auch mir würde der dauernde Zugriff auf die Festplatte nicht passen. Da wird wohl mit der Zeit ein Loch reingebohrt! :lol: Ein USB-Stick ist auch keine Alternative.

Hier findest du eine Anleitung für die Einrichtung einer RAM-Disk, wo du dann das BMP ablegen könntest:

http://www.winfaq.de/faq_html/Content/t ... ip1260.htm

Das wäre doch eine Möglichkeit? Hab's selber nicht getestet. Bisher hat aber alles funktioniert, was ich dort gelesen habe.

Viele Grüsse
Bümpi

leknilk0815
Beiträge: 6693
Registriert: 19.03.2007, 08:21
Danksagung erhalten: 2 Mal

Re: Uhrzeit mit PHP

Beitrag von leknilk0815 » 21.02.2009, 11:01

Servus,
was die RAMDisk betrifft, kann ich nur zustimmen.
Ich hab zwar das von Bümpi beschriebene Tool nicht getestet (meines kommt von AR Soft), aber die funktionieren alle gleich.
Bei mir läuft darauf Lightning Radar und das seit über 1 Jahr völlig klaglos und ohne irgendwelche Auswirkungen auf das System. Einrichtungszeit mit Reboot 5 Minuten, nur zu empfehlen.
Gruß - Toni

KS300 + Sonnendauer + Windrichtung, KS888, HM-CC-TC/HM-CC-VD, FHT80b, und etwas FS20-xx, Keymatic, EM1000, CCU2 und FHZ2000 sowie HP Studio, HPCL + Upgrade für FHZ

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: Uhrzeit mit PHP

Beitrag von Sanys » 21.02.2009, 18:02

Hallo Maik,

um das Einrichten einer RAM-Disk kommst Du wohl nicht drumrum, wenn Du einerseits die Festplattenzugriffe gering halten willst, andererseits aber viel mit der Grafikeinbindung arbeitest. Auch ich kann Dich nur dazu ermutigen, bei mir läuft alles, was mit php und Grafikerzeugung von Studio zusammenhängt, auf der Ramdisk.
Dazu wird beim Rechnerstart ein komplettes Verzeichnis von der Festplatte auf die Ramdisk kopiert, anschließend Studio gestartet und das findet dann alles nötige auf der Ramdisk.

... zu Deinem Code: da musste ich doch ein wenig schmunzeln, als ich mir das mal angesehen habe. Der Anfang sieht ja noch so aus wie meine Digital-Uhr, die ich mal vorgestellt hatte. Dort muß man natürlich die Zeit in einzelne Digits zerlegen, da diese ja dann die Studio-Objekte entsprechend steuern. Du zerlegst erst die Studio-Uhrzeit und bastelst dann alles wieder zusammen, das geht in php mit einer Zeile:

Code: Alles auswählen

<? $MeineDigitalZeit = date ( H:i:s ) ; Formatierung siehe php-Hilfe unter "date"?>
und dann mit imagettf aufs Bild malen.
o.k. in dem Beispiel haben die Std,Min und sek führende Nullen, aber bei einer Digitaluhr sieht das eigentlich besser aus. Die bei den Stunden kannst Du ja weglassen (Parameter G statt H) und dann über imagettfbox die Größe bestimmen und weiter rechts hinschreiben. php nimmt die Systemzeit, genau wie Studio auch...
Jedes mal ein großer Aufwand die Uhrzeit in einer Ansicht herein zubasteln :(
ist das echt so schlimm? diese 7 Objekte kannst Du doch auf jeder Seite, wo du sie haben willst anzeigen. Das machst Du doch nur einmal und gut ist, oder?


Viele Grüße


sanys
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: Uhrzeit mit PHP

Beitrag von mfreye » 21.02.2009, 19:29

Hallo Sanys.
um das Einrichten einer RAM-Disk kommst Du wohl nicht drumrum, wenn Du einerseits die Festplattenzugriffe gering halten willst, andererseits aber viel mit der Grafikeinbindung arbeitest. Auch ich kann Dich nur dazu ermutigen, bei mir läuft alles, was mit php und Grafikerzeugung von Studio zusammenhängt, auf der Ramdisk.
Dazu wird beim Rechnerstart ein komplettes Verzeichnis von der Festplatte auf die Ramdisk kopiert, anschließend Studio gestartet und das findet dann alles nötige auf der Ramdisk.
Ja werde mal schauen wieviel Speicher ich von meinen 1 GB abzweigen kann, das VIA Board macht leider nicht mehr als 1 GB :roll:
... zu Deinem Code: da musste ich doch ein wenig schmunzeln, als ich mir das mal angesehen habe. Der Anfang sieht ja noch so aus wie meine Digital-Uhr, die ich mal vorgestellt hatte. Dort muß man natürlich die Zeit in einzelne Digits zerlegen, da diese ja dann die Studio-Objekte entsprechend steuern. Du zerlegst erst die Studio-Uhrzeit und bastelst dann alles wieder zusammen, das geht in php mit einer Zeile:
Also kenne mich damit auch nicht besonders aus!

Code: Alles auswählen

<? $MeineDigitalZeit = date ( H:i:s ) ; Formatierung siehe php-Hilfe unter "date"?>
So hatte ich es in etwa am Anfang, das Problem war aber das dann nicht jede Zahl an der richten Stelle stand.
Jetzt steht die 0 oder auch 1 immer an der gleichen Stelle.

Hatte das ganze erst zentriert, aber dennoch verschob es sich dann etwas und eine Null sollte es schon sein :)
ist das echt so schlimm? diese 7 Objekte kannst Du doch auf jeder Seite, wo du sie haben willst anzeigen. Das machst Du doch nur einmal und gut ist, oder?
Schlimm ist sicher etwas anderes, aber das andere wäre doch schöner :roll:

Aber für Ideen bin ich immer offen.

MfG
MFreye

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: Uhrzeit mit PHP

Beitrag von mfreye » 22.02.2009, 07:55

Hallo zusammen.

Wäre es nicht möglich homeputer auf eine CF Karte laufen zulassen, per USB in einem Kartenlesegerät?

War mal ne Idee :shock:

Gruß
Maik

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Uhrzeit mit PHP

Beitrag von buempi » 22.02.2009, 08:42

Hallo Maik

CF-Karten sind m.W. ähnlich gebaut wie USB-Sticks und haben eine begrenzte Anzahl Schreibzyklen.

Warum versuchst du es nicht mit der RAM-Disk? 1 GB Hauptspeicher unter XP ist schon fast Verschwendung, wenn du nicht sehr speicherintensive Software (Bild-/Videobearbeitung und dgl.) drauf laufen hast! Und du brauchst ja für ein paar Bildchen sicher nicht mehr als das eine MB, das beim oben angegebenen Treiber Standard ist. Also einen Tausendstel deines RAM's.

Selbst das Hin- und Herkopieren kannst du dir sparen. Die Bildchen werden ja beim ersten Durchgang nach dem PC-Start sofort neu gezeichnet. Speziell bei der Uhr wäre es sogar eher drollig, einen historischen Wert anzuzeigen.

Viele Grüsse
Bümpi

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: Uhrzeit mit PHP

Beitrag von Sanys » 22.02.2009, 12:13

Hallo Maik,

zur RAM-Disk: das ist auf jeden Fall die schnellste und sparsamste (Ressourcen)-Variante für Dein System. RAM verträgt mit Abstand die meisten Schreib-Lesevorgänge, danach die Festplatte und dann irgendwelche Speichermedien (CF/SD etc). Mein Studio-Anteil auf der Ramdisk ist ca 30 MB. Hier habe ich aber alle Grafiken von Studio sowie sämtliche php scripte und Erweiterungen zu php (jpgraph). Mehr wird es auch nicht, da die dnamisch erzeugten Grafiken ja immer nur überschrieben werden. Irgendwelche Log-Files machen natürlich keinen Sinn, da nach einen Reboot alles weg ist.
Bei 1GB RAM kannst Du bequem 20-30 MB an die RAM-Disk abtreten und Deine Probleme sind gelöst.

@buempi:
Selbst das Hin- und Herkopieren kannst du dir sparen. Die Bildchen werden ja beim ersten Durchgang nach dem PC-Start sofort neu gezeichnet. Speziell bei der Uhr wäre es sogar eher drollig, einen historischen Wert anzuzeigen.
klar macht das bei einer Uhr keinen Sinn, die Bildchen sind aber nach der ersten Sekunde erzeugt und wären auch schon überschrieben. Aber bei anderen Anzeigen, die u.U. erst nach ein paar Minuten "aktuell" sind macht das schon Sinn: Bei solchen Bildern habe ich ein erzeugtes Bild genommen, dieses etwas unscharf gemacht und INIT draufgeschrieben. Dieses wird vor dem Studio-Start in die RAM-Disk kopiert und in Studio so lange angezeigt, bis aktuelle Daten vorliegen und das Bild dann überschrieben wurde. Somit sehe ich, nach einem Neustart, ob die entsprechenden Sensoren sich schon gemeldet haben oder noch nicht.

@maik
So hatte ich es in etwa am Anfang, das Problem war aber das dann nicht jede Zahl an der richten Stelle stand.
Jetzt steht die 0 oder auch 1 immer an der gleichen Stelle.
Hatte das ganze erst zentriert, aber dennoch verschob es sich dann etwas und eine Null sollte es schon sein
Die verwendete Schrift ist nicht ganz für eine Digital-Anzeige geeignet, da die Abstände und Breiten der Ziffern unterschiedlich sind. Ich habe folgende noch gefunden, hier scheinen die Abstände gleich zu sein:
Digi.png
Digi.png (2.83 KiB) 2826 mal betrachtet
die gibt es hier:
Digital-Font
ob sie Schatten wirft kann ich nicht sagen, probiers mal aus.

Noch ein Tipp zum Ressourcen schonen: Studio verträgt die Hintergrundbilder nur im bmp-Format. Üblicherweise wird es als unkomprimiertes Bild mit 24bit Farben abgespeichert. Schon ein 800x600 Pixel grosser Hintergrund wird etwa 1,4 MB groß. Speichert man das selbe Bild im Format bmp, RLE(komprimiert) mit 256 Farben wird es nur noch ca 40 kb groß. Gerade auf "schwachen" Systemen macht sich die längere Ladezeit bemerkbar, oder es läuft eben schneller nach dem komprimieren.
Jedes Malprogramm, welches mit bmp umgehen kann, sollte diese Möglichkeit bieten. Alternativ geht das auch mit dem FastStone Image Viewer, ein kostenloser Bildbetrachter à la ACDSee mit einigen tollen Manipulier-möglichkeiten.
Gibt es unter: http://www.faststone.org. Qualitativ konnte ich bisher noch keine Einschränkung erkennen.

So, nun noch einen schönen Sonntag!!


viele Grüße


sanys
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: Uhrzeit mit PHP

Beitrag von mfreye » 25.02.2009, 20:03

Hallo zusammen!

Habe jetzt mal eine Ram Disk eingerichtet, das gefällt mir schon mal super. Danke!

Die Schrift ist sehr schön. Danke!

Danke für die Anregung mit dem komprimieren, werde ich mal anpacken.


Aber ich habe auch ein Problem, bzw. eine Frage.

Mein Script lasse ich jede Sekunde ausführen. Mir ist jetzt auf gefallen das es ca. alle 10Sek. vorkommt das eine Zahl übersprungen wird bei den Sekunden. Das ist doch ein Zeichen das
homestudio ausgelastet ist, auch die CPU Last steigt von 5-10% auf knapp 50-60% :shock:

Bümüi konntest Du so etwas auch verstellen, also Du mein Script ausgeführt hattest?

Gruß
Maik

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Uhrzeit mit PHP

Beitrag von buempi » 25.02.2009, 20:32

Hallo Maik

Das hängt nicht mit deinem Script zusammen. Auch wenn du die ganz normale Uhr von Homeputer (Uhr := Uhrzeit) 1x pro Sekunde ausführst, wird manchmal eine Sekunde übersprungen. Homeputer scheint das nicht ganz so genau zu nehmen, und wartet eben mal 0,55 und das nächste Mal 1,55 Sekunden bis zur Ausführung. Ich lasse meine Uhr auch nicht im "Original-Modus" (alle 5 Sekunden -> lächerlich) laufen, sondern 2x pro Sekunde. Dann kommt das nicht vor.

Mit dem PHP-Script gibt's natürlich für den Rechner etwas mehr zu tun, aber wenn er nicht ganz schwach ist auf der Brust, langweilt er sich dabei noch immer. Die angegebene Prozessorlast würde ich nicht allzu ernst nehmen, wenn's nur zwischendurch mal ansteigt.

Viele Grüsse
Bümpi

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“