sheduled/geplante Ausführung einer Funktion

  • Hallo,

    ich möchte gerne eine gewisse Abfolge von inireads und writes zusammengefasst in einer Funktion in bestimmten Zeiträumen ablaufen lassen.

    Ich stell mir das so vor:

    Ein Gui mit mehreren Textfeldern.
    Mit diesen Textfeldern definiere ich die Zeiträume, in denen die Funktion ausgeführt werden soll. Zwischen der Ausführung der Funktionen soll nichts passieren.
    Bspw: Func ausführen von 8-11 uhr, pause , 15-21 uhr,pause 22 - 1 uhr.

    Da ich erst seit Donnerstag Autoit beherrsche weiß ich leider garnicht wie ich an sowas rangehen soll.

    Gibt es in Autoit eine Funktion mit der ich die Windowszeit auslesen kann oder sollte ich am besten mit Timern arbeiten.

    Falls mir jemand helfen möchte die Source dafür zu erstellen, bin ich gerne Bereit eine Gegenleistung zu erbringen.
    Da ich jedoch armer Student bin(Klischee erfüllt ;) ), kann ich euch nur so dinge bieten wie einen Rapidshare oder uploaded Premium Account oder evtl. andere Sachen die man per Micropaypent bezahlen kann ;)

    Schöne Weihnachtszeit,

    nopaxx

  • Du kannst die Zeit mit den Makros @Hour usw auslesen. Habe leider grade kein AutoIt installiert, deshalb kann ich grade kein Beispielcode dazu schreiben.

    • Offizieller Beitrag

    Da ich erst seit Donnerstag Autoit beherrsche weiß ich leider garnicht wie ich an sowas rangehen soll.


    :D Ein gelungener Freud'scher Versprecher.

    Was noch von Interesse ist: Soll die Funktion innerhalb der festzulegenden Zeiträume mehrfach oder nur einmalig ausgeführt werden? Wenn mehrfach: In welchen Intervallen?
    Programmtechnisch kein großer Aufwand.
    Uhrzeit bekommst du per Makros: @Hour, @Min, @Sec
    In einer Schleife die Zeit abfragen, vergleichen ob in dem gegebenen Zeitlimit, wenn ja: Funktion starten.

  • verzeih mir meine Unwissenheit aber was ist ein Freud'scher Versprecher? ;)

    Back to Topic:


    Ich möchte in einem Interface bzw GUI 3 Zeiträume definieren. Beispielsweise: 11-15 uhr 15-21 uhr und 3-6 uhr.
    dann soll das script eine funktion zu beginn des jeweiligen zeitraumes machen und eine funktion am ende des zeitraumes.
    optimal wäre wenn das script nur läuft wenn es wirklich benötigt wird, denn während ich die datenbankabfragen und datenbankeintragungen machen lassen will , möchte ich gern auch noch zocken oder film gucken oder was weiß der geier noch so alles ;)

    Kp wie ich an die , für meine bisherigen Skills sehr komplexe, Sache herangehen soll.

    mfg

    • Offizieller Beitrag

    was ist ein Freud'scher Versprecher?


    :D http://de.wikipedia.org/wiki/Freud'scher_Versprecher

    Hier mal ein Muster, kannst ja noch einbauen, dass die Zeiten in einer INI gespeichert werden. So läuft es bis die GUI geschlossen wird (minimieren geht natürlich).

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Local $sTime = '', $aQuarter[4] = ['00','15','30','45']
    For $i = 0 To 23
    For $j = 0 To 3
    $sTime &= StringRight('0' & $i, 2) & ':' & $aQuarter[$j] & '|'
    Next
    Next
    $sTime = StringTrimRight($sTime, 1)
    Global $aCombo[6], $aWatchTime[6]

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Terminstart", 331, 373, 355, 162)
    GUISetOnEvent($GUI_EVENT_CLOSE, "TerminstartClose")
    $aCombo[0] = GUICtrlCreateCombo("", 48, 67, 97, 25)
    $aCombo[1] = GUICtrlCreateCombo("", 175, 67, 97, 25)
    $Group1 = GUICtrlCreateGroup(" Termin 1 ", 32, 24, 257, 81)
    $Label1 = GUICtrlCreateLabel("Von", 72, 48, 23, 17)
    $Label2 = GUICtrlCreateLabel("Bis", 208, 48, 18, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup(" Termin 2 ", 32, 127, 257, 81)
    $Label3 = GUICtrlCreateLabel("Von", 72, 151, 23, 17)
    $Label4 = GUICtrlCreateLabel("Bis", 208, 151, 18, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $aCombo[2] = GUICtrlCreateCombo("", 51, 176, 97, 25)
    $aCombo[3] = GUICtrlCreateCombo("", 178, 176, 97, 25)
    $Group3 = GUICtrlCreateGroup(" Termin 3 ", 32, 229, 257, 81)
    $Label5 = GUICtrlCreateLabel("Von", 72, 253, 23, 17)
    $Label6 = GUICtrlCreateLabel("Bis", 208, 253, 18, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $aCombo[4] = GUICtrlCreateCombo("", 48, 272, 97, 25)
    $aCombo[5] = GUICtrlCreateCombo("", 175, 272, 97, 25)
    $btStart = GUICtrlCreateButton("Start", 32, 328, 105, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "btStartClick")
    $btEnde = GUICtrlCreateButton("Ende", 184, 328, 105, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "TerminstartClose")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To 5
    GUICtrlSetData($aCombo[$i], $sTime, '12:00')
    Next

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func TerminstartClose()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func btStartClick()
    For $i = 0 To 5
    $aWatchTime[$i] = GUICtrlRead($aCombo[$i]) ; <== Hour : Min
    Next
    AdlibEnable('CheckTime', 60*1000) ; <== 1-mal pro Minute aufrufen
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CheckTime()
    Local $time = @HOUR & ':' & @MIN
    For $i = 0 To 5
    If $aWatchTime[$i] = $time Then Return startFunc($i +1)
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func startFunc($i)
    Switch $i
    Case 1 ; Termin 1 - Von
    ; Funktionsaufruf
    Case 2 ; Termin 1 - Bis
    ; Funktionsaufruf
    Case 3 ; Termin 2 - Von
    ; Funktionsaufruf
    Case 4 ; Termin 2 - Bis
    ; Funktionsaufruf
    Case 5 ; Termin 3 - Von
    ; Funktionsaufruf
    Case 6 ; Termin 3 - Bis
    ; Funktionsaufruf
    EndSwitch
    EndFunc

    [/autoit]
  • Du bist mein Gott ;)

    Genau so meinte ich das. Was bin ich dir schuldig? :D :D


    Darf ich fragen mit welchem Programm du das GUI erstellt hast? Mit dem Koda Designer?

    • Offizieller Beitrag

    Darf ich fragen mit welchem Programm du das GUI erstellt hast? Mit dem Koda Designer?


    Ja, in diesem Fall habe ich mal Koda verwendet, da 3-mal dieselbe Gruppierung zu erstellen war. Das macht sich dort gut mit Copy&Paste.
    Im Normalfall mache ich das alles zu Fuß. ;)