Hört sich gut an! Kannst Du mir sagen wie ich den Code ändern muss, damit nur bei einer Änderung das Bild neu erzeugt wird? danke!Was hälst Du davon?...
MfG
Maik
Moderator: Co-Administratoren
Hört sich gut an! Kannst Du mir sagen wie ich den Code ändern muss, damit nur bei einer Änderung das Bild neu erzeugt wird? danke!Was hälst Du davon?...
Code: Alles auswählen
WENN UHRZEIT <> AlteUhrzeit
DANN
AlteUhrzeit := UHRZEIT
<?
//Dein PHP-Kot ;-)
?>
ENDEWENN
Code: Alles auswählen
** ZeitAlt ist eine Variable vom Typ Zeit
wenn Zeit = ZeitAlt dann
verlassen
endewenn
ZeitAlt := Zeit
<?
// Pfade festlegen ...... usw.
Code: Alles auswählen
<?
$JetztPlusEineSekunde = strtotime ("+1 second");
?>
Code: Alles auswählen
<?
$time_start = microtime(1);
... und dann Dein Code...
Code: Alles auswählen
....
....
$time_end = microtime(1);
$laptime = round(($time_end - $time_start),4);
// nur noch die gemessene Zeit an Studio übergeben
$V_Objekt_Variable = $laptime;
?>
Also ich lasse den Zustand 2x pro Sekunde umschalten, aber in der Tat, dadurch geht die Uhr ca. 0,5 Sekunden nach. Durch deinen Code geht die Uhr jetzt Sekunden genau (also fast)!@Maik: wie bringst Du Studio dazu, das Uhr-Bild anzuzeigen? Umschalten je sekunde oder so? Und beiden Zuständen der Anzeige das gleiche Bild zugewiesen?
Dann vermute ich mal, Du bekommst eine Uhrzeit, die eine Sekunde nachgeht (Klingt jetzt ein wenig pingelich, soll es aber gar nicht sein. Mir geht es nur ums Verständnis). Du kannst ja mal die normale Zeit daneben anzeigen lassen.
Ich sehe das so: In deinem Makro ist irgendwann (nämlich wenn sich die Zeit ändert) die Bedingung erfüllt, das Uhr-Bild zu erzeugen. Am Anfang des Codes wird sehr früh einer Variablen die Uhrzeit zugewiesen, die dann "später" per imagettftext auf das erzeugte Bild geschrieben wird. Bis das Bild erzeugt und gespeichert ist vergeht eine gewisse Zeit. Studio hat aber quasi zum Zeitpunkt, als das Makro gestartet wurde, das Bild umgeschaltet. Nun dauert es (wenn Du umschalten 1 x pro sek gewählt hast) den Rest dieser Sekunde bis wieder umgeschaltet wird und das neue Bild angezeigt wird. Auf dem Bild steht aber die Zeit vor einer Sekunde.
Danke, die Zeit ist jedoch stark unterschiedlich, der Wert liegt immer um die 0,2 (0,1 - 0,4) Sekunden. Es macht jedoch kaum einen Unterschied zwischen BMP oder JPG. Das BMP braucht in der Regel immer etwas länger.@Maik: wenn Du wissen möchtest, wie lange der Ablauf des php-codes dauert kannst Du ja mal folgendes einbauen:
Danke, sehr nettes Programm, habe jetzt nur noch Bilder von max. 40kbAlternativ geht das auch mit dem FastStone Image Viewer, ein kostenloser Bildbetrachter à la ACDSee mit einigen tollen Manipulier-möglichkeiten.
Code: Alles auswählen
** ----------------------------------------------
** allgemeine Einstellungen
** RamDisk erzeugen
Startwin(",C:\Programme\contronics\homeputer Studio\Scripte\RamDisk\,C:\Programme\contronics\homeputer Studio\Scripte\RamDisk\RamDiskErzeugen.bat")
** Daten laden
LADEN("*ALL")
LADEN("*ALLV")
** Ansicht Startbildschirm laden
Ansicht("Startbildschirm_800x600")
** Variable setzen
Automodus_Raumregler.Merker_Pumpe ausschalten
** ----------------------------------------------
** Automodus Aussenbelechtung
** Variable setzen
Automodus_Aussenbeleuchtung.TIME_RANGE_1 ausschalten
Automodus_Aussenbeleuchtung.TIME_DELAY_1 ausschalten
Automodus_Aussenbeleuchtung.TIME_RANGE_2 ausschalten
Automodus_Aussenbeleuchtung.TIME_DELAY_2 ausschalten
Automodus_Aussenbeleuchtung.TIME_RANGE_3 ausschalten
Automodus_Aussenbeleuchtung.TIME_DELAY_3 ausschalten
** Befehl senden
** EM_SC_AU_2_4212 ausschalten
EM_SC_AU_3_4213 ausschalten
EM_SC_AU_4_4214 ausschalten
EM_SC_AU_5_4221 ausschalten
** ----------------------------------------------
** Automodus Bewegungsmelder
** Variable setzen
SE_BE_AU_S311_T1.Merker ausschalten
SE_BE_AU_S311_T1 ausschalten
SE_BE_AU_S311_T2.Merker ausschalten
SE_BE_AU_S311_T2 ausschalten
SE_BE_AU_S312_T1.Merker ausschalten
SE_BE_AU_S312_T1 ausschalten
SE_BE_AU_S312_T2.Merker ausschalten
SE_BE_AU_S312_T2 ausschalten
** ----------------------------------------------
** Datum erstellen
<?
include("c:\\Programme\\contronics\\homeputer Studio\\PHP\\Datum_heute.php");
?>
Code: Alles auswählen
]** ----------------------------------------------
** allgemeine Einstellungen
** RamDisk erzeugen
Startwin(",C:\Programme\contronics\homeputer Studio\Scripte\RamDisk\,C:\Programme\contronics\homeputer Studio\Scripte\RamDisk\RamDiskErzeugen.bat")
warte("00:00:10")
** Daten laden
LADEN("*ALL")
Code: Alles auswählen
start /wait "C:\Programme\contronics\homeputer Studio\Scripte\RamDisk\RamDiskErzeugen.bat"
"C:\Programme\contronics\homeputer Studio\HomeputerStudio.exe"
Ist geändert Danke!Was machst du.....???? Du lässt das Bild 2x pro Sekunde aktualisieren????
Ja das würde gehen, aber bei meiner Testumgebung möchte ich nicht immer HomeStudio komplett neu starten. Schöner wäre es wenn, dieses vor dem Ausführen gestartet würde.Das mit dem RamDisk erzeugen solltest du im Autostart-Ordner lösen. Und zwar indem du eine Batchdatei dort rein machst, die etwas folgendes enthält:
Code: Alles auswählen
<?
// Pfade festlegen
$Objectname = Uhrzeit_jetzt;
include ("Z:\\contronics\\homeputer Studio\\php\\bmp.php");
include ("Z:\\contronics\\homeputer Studio\\php\\imagebw.php");
$filejpg = "Z:\\contronics\\homeputer Studio\\BMP\\".$Objectname.".bmp";
$fontdir = "C:\\WINDOWS\\Fonts\\";
//Variablen festlegen
$SizeX = 110;
$SizeY = 35;
//$Font = $fontdir."DS-DIGIB.ttf"; //DS-DIGIB.ttf geht
$Font = $fontdir."tahoma.ttf; //comic.ttf geht nicht
$FontSize_1 = 30;
$FontSize_2 = 16;
$FontSize_3 = 24;
$Uhrzeit_Temp = date("H:i:s"); //Uhrzeit hh:mm:ss (24Std.)