FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

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

Moderator: Co-Administratoren

kafibo
Beiträge: 186
Registriert: 02.02.2007, 21:22
Hat sich bedankt: 5 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von kafibo » 10.01.2009, 18:19

Hallo BMKSTB,

es gibt auch eine andere Möglichkeit die Einschaltzeit variable zu halten.
Du erstellt ein Neues Objekt vom Typ Zeichen, zz.B. Zeitvariable.
Im Makro des anderen Makros gibst Du ein:

Code: Alles auswählen

wenn Sender1 eingeschaltet dann
  Aktor 1 einschalten für Zeitvariable
endewenn
Vorraussetzung ist das die Zeitvariable folgendermaßen gefüllt wirrd:

Code: Alles auswählen

00:00:10
und nicht anders sonst funktioniert es nicht.
Natürlich kann das Objekt zeitvariable auch von einem anderen Makro z.B. durch errechnen gefüllt werden.
Auf diese Weise kann man auch eine Warte-Anweisung flexibel halten:

Code: Alles auswählen

warte (Zeitvariable)
Die Klammern müssen in diesem Fall angegeben werden sonst funktioniert es auch hier nicht.
Ich hoffe das ich DIch richtig verstanden habe und Dir helfen konnte.
Gruß kafibo

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 10.01.2009, 21:31

BMKSTB hat geschrieben:...gibt es eine Möglichkeit bei den Direktsendebefehlen zum Bsp. die Schaltzeit variabel zu gestalten...
Statt

Code: Alles auswählen

   SCHREIBEDATEI("z:\FS20\DirectSend.$$$","sek=8.76")           **Angabe der Schaltzeit in Sekunden
schreibst z.B. Du einfach sinngemäß

Code: Alles auswählen

   **Zeit := 60*Minuten + Sekunden + Hundertstelsekunden / 100
   MeinMakro.MeineZeitvariable := 60*3 + 20 + 33/ 100 **ergibt 00:03:20,33
   SCHREIBEDATEI("z:\FS20\DirectSend.$$$","sek=%<MeinMakro.MeineZeitvariable>")
MeineZeitvariable ist vom Typ Zahl mit Vorbelegung 0.00 (zwei Kommastellen)

Gruss
Thomas

PS: ich mache dass im übrigen nicht nur mit der Zeit so, sondern mit allen anderen Sendeparametern auch:

Code: Alles auswählen

SCHREIBEDATEI("z:\FS20\DirectSend.$$$","[SSS]")
SCHREIBEDATEI("z:\FS20\DirectSend.$$$","adr=%<xDirektSendeKanal.Hauscode>-%<xDirektSendeKanal.Schaltkanal>")
SCHREIBEDATEI("z:\FS20\DirectSend.$$$","cmd=%<xDirektSendeKanal.Schaltbefehl>")
SCHREIBEDATEI("z:\FS20\DirectSend.$$$","sek=%<xDirektSendeKanal.SchaltZeit>")
SCHREIBEDATEI("z:\FS20\DirectSend.$$$","rep=%<xDirektSendeKanal.Sendungswiederholung>")

BMKSTB
Beiträge: 11
Registriert: 10.06.2008, 15:14

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von BMKSTB » 11.01.2009, 11:51

Das mit der Zeitvariable habe ich probiert, funktioniert auch prima.

Nur mit den restlichen Sendeparameter habe ich Probleme.

Folgende Fehlermeldung steht in der Log-Datei

Fehler: FT_DirectSend - Adresse hat keine 12 Zeichen (XDIREKTSENDEKANAL.HAUSCODEXDIREKTSENDEKANAL.SCHALTKANAL)

Wie müssen die Varibalen vorbelegt werden?

Muss die Sensorabgleich_V05 installiert sein oder geht es auch mit Version_ 04.

Bei Version_05 geht mein Rechner nach kurzer Zeit auf 100% CPU-Auslastung. Nachdem dann wieder die Version_04 und die FHZ-USB-Treiber neu installiert
sind läuft das System wieder normal.

Gruß
BMKSTB

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 12.01.2009, 15:49

Hallo bmk...

hast Du denn die Variablen
- Hauscode (Typ Zeichen)
- Schaltkanal (Typ Zeichen)
- Schaltbefehl (Typ Zeichen)
- Sendungswiederholung (Typ Zahl)
überhaupt angelegt?

Die Fehlermeldung lässt darauf schließen, dass die Variablen XDIREKTSENDEKANAL.HAUSCODE und XDIREKTSENDEKANAL.SCHALTKANAL gar nicht durch den Variablenwert ersetzt werden (sprich - diese Variablen gibt es bei Dir nicht!)

Vorbelegen musst Du sie mit bei Dir gültigen Werten z.B.:

Code: Alles auswählen

Hauscode := "1234-4321"
Schaltkanal := "1111"
Schaltbefehl := "EinMitZeit"
Sendungswiederholung := 1
Die Version spielt dabei keine Rolle!
Bei Version_05 geht mein Rechner nach kurzer Zeit auf 100% CPU-Auslastung. Nachdem dann wieder die Version_04 und die FHZ-USB-Treiber neu installiert
sind läuft das System wieder normal.
Wenn ganz zum Schluss die FHZ-USB-Treiber neu installiert wurden, ist gar keine "Direktsende"-Version mehr aktiv (meine DLL wird dabei wieder überschrieben)!

Gruss
Thomas

EDIT: Was sagt denn das fs20.log im Falle des Absturzes?

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 12.01.2009, 20:11

PROBLEM:
Sanys hat geschrieben:... habe ich heute die SPG erneuert, also eine neue Version drübergespielt, mit Datei öffnen geladen und die Ausführung gestartet: Ab da gingen die Direktsendebefehle nicht mehr und auch im Log wurde nichts mehr aufgezeichnet, auch keine Fehlermeldung. Dann habe ich die Anwendung gestoppt und Studio ganz beendet, wieder geladen und den automatischen Start abgewartet, siehe da, es geht wieder alles.
Hattest Du auch schon mal so etwas beobachtet? Ich meine ich hatte das schon mal, aber dann nicht weiter verfolgt.
URSACHE:
Das liegt daran, dass bei Dir zusätzlich noch eine FTD2XX.dll in einem Pfad installiert ist, der über die PATH-Umgebungsvariable erreichbar ist.
Du hast durch das Laden der SPG nämlich Homeputers "Aktuelles Verzeichnis" gewechselt, deshalb wird "meine" DLL nicht mehr im AKTUELLEN Pfad gefunden - dadurch wird die erstbeste DLL genommen, die (im Suchpfad) zu finden ist!

LÖSUNG:
Alle nicht benötigten FDT2XX.dll's von der HD löschen.

Ich denke, es gibt nach so einem Verzeichniswechsel aber auch Probleme beim PHP, falls die DLL's einfach im EXE-Verzeichnis stehen... :?:

Gruss
Thomas

Benutzeravatar
squeeezer
Beiträge: 545
Registriert: 17.07.2006, 00:00
Wohnort: Idstein

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von squeeezer » 12.01.2009, 23:28

hi thomas,

endlich habe ich zeit, mir das ganze auch mal zu gemüte zu führen ... besonders interessant finde ich die möglichkeit, timer der aktoren zu steuern, da ich des öfteren das problem habe, dass frau oder kinder auf der fernbedienung gerne mal mehrere tasten gleichzeitig drücken und dadurch unbeabsichtigt einen timer programmieren.

in deiner readme steht folgendes geschrieben:
**Mögliche Befehlsarten sind "EinMitZeit", "AusMitZeit" ,"Umschalten", "HochDimmen", "RunterDimmen", "HochUndRunterDimmen" und "TimerProgrammierungMitZeit"
SCHREIBEDATEI("z:\FS20\DirectSend.$$$","sek=8.76") **Angabe der Schaltzeit in Sekunden
wenn ich einen timer löschen möchte, gehe ich richtig in der annahme, den wert "sek=0" zu setzen?

danke für deine hilfe ...
... squeeezer

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 13.01.2009, 09:41

squeeezer hat geschrieben:wenn ich einen timer löschen möchte, gehe ich richtig in der annahme, den wert "sek=0" zu setzen?
Uuups, darüber habe ich noch gar nicht nachgedacht. Da kannst Du nur mal probieren.
Ich kann mich nicht erinnern, irgendwo im FS20-Protokoll mal auf die Möglichkeit des Timer-Löschens gestossen zu sein.
Wenn die von Dir angedachte Lösung nicht funktionieren sollte - und jemand eine Möglichkeit kennt, ich baue es gern mit ein.

Sonst bleibt nur das Zurücksetzen in Grundstellung...

Gruss
Thomas

Benutzeravatar
squeeezer
Beiträge: 545
Registriert: 17.07.2006, 00:00
Wohnort: Idstein

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von squeeezer » 14.01.2009, 10:15

alles klar, werde es bis zum wochenende mal ausprobieren ... die aktoren sind bei mir größtenteils unterm dachgeschoss und meistens nicht unmittelbar zugänglich wegen krempel davor :-) ... deswegen wär es cool, das von der ferne aus zu machen ... :-)
... squeeezer

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

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von Sanys » 14.01.2009, 10:48

tsa hat geschrieben:PROBLEM:
Sanys hat geschrieben:... habe ich heute die SPG erneuert, also eine neue Version drübergespielt, mit Datei öffnen geladen und die Ausführung gestartet: Ab da gingen die Direktsendebefehle nicht mehr und auch im Log wurde nichts mehr aufgezeichnet, auch keine Fehlermeldung. Dann habe ich die Anwendung gestoppt und Studio ganz beendet, wieder geladen und den automatischen Start abgewartet, siehe da, es geht wieder alles.
Hattest Du auch schon mal so etwas beobachtet? Ich meine ich hatte das schon mal, aber dann nicht weiter verfolgt.
URSACHE:
Das liegt daran, dass bei Dir zusätzlich noch eine FTD2XX.dll in einem Pfad installiert ist, der über die PATH-Umgebungsvariable erreichbar ist.
Du hast durch das Laden der SPG nämlich Homeputers "Aktuelles Verzeichnis" gewechselt, deshalb wird "meine" DLL nicht mehr im AKTUELLEN Pfad gefunden - dadurch wird die erstbeste DLL genommen, die (im Suchpfad) zu finden ist!

LÖSUNG:
Alle nicht benötigten FDT2XX.dll's von der HD löschen.

Ich denke, es gibt nach so einem Verzeichniswechsel aber auch Probleme beim PHP, falls die DLL's einfach im EXE-Verzeichnis stehen... :?:

Gruss
Thomas
Hallo Thomas,

nun habe ich mal meine Festplatte durchforstet und ein paar von den ft2xx.dll unschädlich gemacht, der Fehler taucht aber immer noch auf. Ist sogar 100% nachvollziehbar: Es genügt schon, die Anwendung zu stoppen und neu zu starten, schon gehen die Direktsendebefehle nicht mehr (und zwar nur diese, alles andere funktioniert!!), erst wenn Studio komplett beendet wurde und neu gestartet geht wieder alles.
Dann habe ich mal mit Hilfe eines Tools (CurrProcess von NirSoft) beobachtet, welche dlls von Studio geladen werden: Es ist immer die FT2XX.dll aus dem Homeputer-Verzeichnis, keine andere.

Was nun? Hast Du noch eine Idee? Kann das irgendwer nachvollziehen?
Ich mache mir Sorgen, falls Homeputer von sich aus mal neustartet und dann die Direktsende-Befehle nicht mehr gehen. Die sollen nämlich die Rollos bei Abwesenheit fahren, und das wäre dann nicht mehr sichergestellt.

Thx4help

Viele Grüße

Stephan
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 ;-)

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 14.01.2009, 14:58

Hallo Stephan,

sorry - kann ich nicht nachvollziehen!!! Ich stoppe und starte die Anwendung u.U. mehrmals täglich (wenn ich Änderungen mache), dieses Phänomen habe ich noch NIE beobachtet! Ich teste aber heute abend noch mal gezielt.

...einige Minuten später...

Ich schau grade mal in meinen Quelltext - und was sehe ich da?
Bei Deiner neuen Wunschfunktion ReadIniFile() - die dummerweise auch bei jedem Projektstart aufgerufen wird - steht als allererster Befehl ein GetCurrentDirectory()
drin!!!

Ich muss zugeben: das war nicht sehr geschickt von mir :( (...ja, ja, wenn man zu viel mit der Zwischenablage arbeitet...)

Abhilfe ist also erstmal nur, das aktuelle Verzeichnis nicht zu wechseln (auch nicht in Deinen PHP-Scripten u.ä.)!!!
Kannst Du damit leben?

Gruss
Thomas

Antworten

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