ExecStudio

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

Moderator: Co-Administratoren

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

Re: ExecStudio

Beitrag von buempi » 15.02.2009, 12:03

Hallo MFreye

Das Makro, das du weiter vorne eingestellt hast, macht doch nicht mal in Ansätzen das, was du jetzt beschreibst. Hast du plötzlich ein vollständig neues Konzept, oder war jenes nur ein Versuch, überhaupt irgendwas in die Variablen zu schreiben?

Code: Alles auswählen

** Variablen:
** Typ Schalter:   EIN_AUS
** Typ Uhr:        Zeit_EIN, Zeit_AUS, Zeit_Timer
** Typ Zahl:       Zaehler, Startwert 0

** "Senden auch bei Zuweisung ohne Änderung" muss aktiviert sein, sonst
** wird die neue Laufzeit nicht gesendet, wenn die Musik schon EIN ist.
***********************************************************************

wenn EM_SC_HI_1241.EIN_AUS ausgeschaltet dann
   EM_SC_HI_1241 ausschalten
   gehezu NurAnzeigen
endewenn

Zaehler := Zaehler + 1

wenn Zaehler = 1 und EM_SC_HI_1241 eingeschaltet dann
   gehezu NurAnzeigen
endewenn

** Ist die Musik ausgeschaltet, wird sie auch beim
** ersten Tastendruck schon eingeschaltet

wenn EM_SC_HI_1241 ausgeschaltet dann
   EM_SC_HI_1241.Zeit_TIMER := "00:15:00"
   EM_SC_HI_1241.Zeit_EIN   := Uhrzeit
sonst
   EM_SC_HI_1241.Zeit_TIMER := EM_SC_HI_1241.Zeit_AUS - Uhrzeit + "00:15:00"
endewenn

EM_SC_HI_1241 einschalten für EM_SC_HI_1241.Zeit_TIMER
EM_SC_HI_1241.Zeit_AUS := Uhrzeit + EM_SC_HI_1241.Zeit_TIMER

NurAnzeigen:

wenn EM_SC_HI_1241 eingeschaltet dann

   EM_SC_HI_1241.Zeit_TIMER := EM_SC_HI_1241.Zeit_AUS - Uhrzeit

sonst

   EM_SC_HI_1241.Zeit_EIN   := "00:00:00"
   EM_SC_HI_1241.Zeit_AUS   := "00:00:00"
   EM_SC_HI_1241.Zeit_TIMER := "00:00:00"

endewenn

** Hier kommt der Befehl rein, mit dem du die Anzeige(n) auf die Dreambox bringst
*********************************************************************************

wenn EM_SC_HI_1241 eingeschaltet dann
   warte("00:00:02")
endewenn

Zaehler := 0

** Dieser Block ist nicht unbedingt nötig,
** falls die Variablen sonst nirgendwo verwendet werden
wenn EM_SC_HI_1241 eingeschaltet dann
   warte(EM_SC_HI_1241.Zeit_TIMER)
   EM_SC_HI_1241.Zeit_EIN   := "00:00:00"
   EM_SC_HI_1241.Zeit_AUS   := "00:00:00"
   EM_SC_HI_1241.Zeit_TIMER := "00:00:00"
   EM_SC_HI_1241.EIN_AUS ausschalten
endewenn
Ein kleiner Nachteil besteht darin, dass bei jedem Tastendruck gesendet wird. Wenn man aber möchte, dass beim ersten Drücken die Musik gleich angeht, ist das der einfachste Weg.

Vermutlich ist die Wartezeit von 2 Sekunden zu kurz, denn bis das DOS-Programm ausgeführt ist, und du die Anzeige auf der Dreambox zur Kenntnis genommen hast, dauert es ja auch einen Moment. Du kannst ruhig auf 5 oder 10 Sekunden erhöhen; schneller drücken darfst du ja...

Das Makro darf nicht periodisch ablaufen! Im Taster, mit welchem du einschalten/anzeigen bzw. ausschalten willst, hinterlegst du folgendes Makro:

Code: Alles auswählen

wenn Taster eingeschaltet dann
   EM_SC_HI_1241.EIN_AUS einschalten
sonst
   EM_SC_HI_1241.EIN_AUS ausschalten
endewenn

starte(EM_SC_HI_1241)
Viele Grüsse
Bümpi

PS: Konntest du meine Batch-Datei bezüglich TIMERWERT schon testen?

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

Re: ExecStudio

Beitrag von mfreye » 15.02.2009, 13:03

Hallo zusammen!

@Bümpi
Hast du meinen Beitrag dazu nicht gelesen?
Nein hatte ich leider nicht :?
Langsam dämmert es mir wieder! Haben wir da nicht vor längerer Zeit mal was zusammen gebastelt mit einer Dreambox und dem Abspeichern der Ausgabe von ExecStudioCo in einer Umgebungsvariablen mit Hilfe des DOS-Befehls "For /F" :?:
Ja genau, hätte ich auch mal schreiben können! Dachte bloß nicht das es etwas mit Batch zu tun hatte. Sondern, dass ich einen Fehler im Makro habe.

Aber so geht es wunderbar!
Das Makro, das du weiter vorne eingestellt hast, macht doch nicht mal in Ansätzen das, was du jetzt beschreibst. Hast du plötzlich ein vollständig neues Konzept, oder war jenes nur ein Versuch, überhaupt irgendwas in die Variablen zu schreiben?
Ja genau, das ist der alte Zustand, da gibt es nur EIN/AUS. Dort wollte ich dann erstmal nur die Zeit auslesen und wenn das geht, sollte der Rest kommen.
Vermutlich ist die Wartezeit von 2 Sekunden zu kurz, denn bis das DOS-Programm ausgeführt ist, und du die Anzeige auf der Dreambox zur Kenntnis genommen hast, dauert es ja auch einen Moment. Du kannst ruhig auf 5 oder 10 Sekunden erhöhen; schneller drücken darfst du ja...
Also 2sek. passen ganz gut, es ist kaum ein Verzögerung zu merken (DOS ist gar nicht mal sooooo langsam :D ) Werde Zeit aber zu Vorsicht mal etwas höher setzten.

@Sanys
Dann hätte ich einen Tip: Verzichte bei den Variablennamen auf Unterstriche. Eine Variable Objekt.Variable musst Du in php mit $V_Objekt_Variable ansprechen. Eine Variable EM_SC_HI_1241.EIN_AUS wird zu $V_EM_SC_HI_1241_EIN_AUS, d.h. Du könnstest nicht einmal einen Wert von Studio an php übergeben, da schon der erste Unterstrich als Punkt interpretiert würde und die Variable EM.SC.HI.1241.EIN.AUS einfach nicht existiert
Ich arbeite z.B. mit Gross/kleinschreibung, könnte bei Dir dann EmScHi1241 heissen. Wird zwar nicht so übersichtlich aber syntaktisch sicherer.
Ja werde ich Zufunkt nicht mehr machen. Danke!


So, nach Euren ganzen Tipps und Infos habe ich es jetzt hin bekommen.

Die Anzeige geht wunderbar und wir können jetzt getrost beim Fernsehn schauen einschlafen.

Ein ganz groß Dank Euch beiden, leider konnte ich nicht immer gleich zurückschreiben. Sorry1

MfG
MFreye

PS Noch einen schönen Tag!

Antworten

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